Sunrise / Sunset

Hallo zusammen,

ich versuche derzeit eine Lichtsteuerung (derzeit grafische szene) einzurichten, diese soll bei breach von einem motion sensor
bzw bei breach des Tür Sensor einschalten und nach 300 sek wieder ausschalten.
Das ganze funktioniert soweit auch ganz gut, jetzt will ich natürlich nicht dass das Türlicht mittags bei tageslicht einschaltet.

Hierzu habe ich eingetragen dass diese Steuerung 15 min nach Sonnenuntergang und 15 min vor Sonnenaufgang laufen soll.
Leider ohne erfolg.

Woher holt sich HC2 den Wert von Sunrise und Sunset, kommt dieser Wert vom Internet oder muss ich hier noch eine Variable einfügen?

Danke und Gruß,
Mario

Bildschirmfoto-2016-03-29-um-21.59.01.png

Bildschirmfoto-2016-03-29-um-22.06.16.png

Hi,

die Zeiten stehen in der API und das HC holt sich diese aus dem Internet. Bei deiner Konstellation würden die Bedingungen nur einmal genau zu dem Zeitpunkt (also xx Min nach Sonnenuntergang) ausgeführt.

Lege dir am besten eine weitere Szene an, welche eine Variable setzt. Diese prüfst du dann ab. Zum Beispiel wäre dann “Evening” nach Sonnenaufgang, usw. Mehr dazu findest du hier:

http://www.siio.de/connected-home/lichtsteuerung-teil-2-fibaro-tageszeiten-variable-via-lua-setzen/

Gruß

danke!!

Hi,

nochmal das ganze in LUA.

Wenn ich nun den “tuersensor” und den “motionsensor” mit “or” verknüpfe funktioniert das ganze nicht,
mach ich dies jedoch wie in dem u.g. code geschrieben geht es. :-/

Damit funktioniert es nicht:

if (motionsensor or tuersensor and tageszeit == "Night")
 then ......

Damit schon:

--[[
%% autostart
%% properties
163 value
117 value
%% events
%% globals
TimeOfDay
--]]

local startSource = fibaro:getSourceTrigger();
local tuersensor = (tonumber(fibaro:getValue(117, "value")) > 0)
local motionsensor = (tonumber(fibaro:getValue(163, "value")) > 0)
local tageszeit = fibaro:getGlobalValue("TimeOfDay") 

--fibaro:debug('Welche Tageszeit ' ..tageszeit)

if (motionsensor and tageszeit == "Night")
  then
    local tod = fibaro:getGlobalValue("TimeOfDay")
    fibaro:debug("Aktuell ist es "..tod..", schalte Licht ein!" );
	fibaro:call(154, "turnOn");
    setTimeout(function()
		fibaro:call(154, "turnOff");
	end, 300000)
  elseif (tuersensor and tageszeit == "Night")
  then
    local tod = fibaro:getGlobalValue("TimeOfDay")
    fibaro:debug("Aktuell ist es "..tod..", schalte Licht ein!" );
	fibaro:call(154, "turnOn");
    setTimeout(function()
		fibaro:call(154, "turnOff");
	end, 300000)
   else
    local tod = fibaro:getGlobalValue("TimeOfDay")
    fibaro:debug("Aktuell ist es " ..tod..", schalte Licht -nicht- ein!");
end

Danke schon vorab für die Hilfe.

Mario

Die Frage ist, wie LUA (oder grundsätzlich) das “and” aus dem ersten Beispiel interpretiert wird.

Was passiert denn, wenn du die beiden Sensoren vor dem “and” in eine Klammet setzt?
VG Hoggle

Hi Hoggle,

hab es nun wie folgt eingetragen und es scheint als funktioniert nun alles

--[[
%% autostart
%% properties
163 value
117 value
%% events
%% globals
TimeOfDay
--]]

local startSource = fibaro:getSourceTrigger();
local tuersensor = (tonumber(fibaro:getValue(117, "value")) > 0)
local motionsensor = (tonumber(fibaro:getValue(163, "value")) > 0)
local tageszeit = fibaro:getGlobalValue("TimeOfDay") 

fibaro:debug('Welche Tageszeit ' ..tageszeit)

if ((motionsensor or tuersensor) and (tageszeit == "Evening" or tageszeit == "Night"))
  then
    local tod = fibaro:getGlobalValue("TimeOfDay")
    fibaro:debug("Aktuell ist es "..tod..", schalte Licht ein!" );
	fibaro:call(154, "turnOn");
    setTimeout(function()
		fibaro:call(154, "turnOff");
	end, 300000)
   else
    local tod = fibaro:getGlobalValue("TimeOfDay")
    fibaro:debug("Aktuell ist es " ..tod..", schalte Licht -nicht- ein!");
end

Danke für den Tipp!!!
Mario

Und so kommt man dann auch zu seinem ersten LUA Script :slight_smile:

Als kleinen Verbesserungsvorschlag:

`–[[
%% properties
163 value
117 value
%% events
%% globals
–]]

Anzahl der Instanzen auf 3. Dann luppt es auch ressourcenschonend :wink:

Gruß

[x] done!

Danke für den Hinweis, bzgl der Instanzen bin ich noch nicht durchgestiegen.
Woran mach ich die höhe der Instanzen fest?

Danke
mario

Hi,

hängt immer von der Art ab, wie die Szene getriggert wird. Bei einer %%autostart-Szene brauchst du nur eine Instanz. Wenn die Szene durch einen Motion getriggert wird, brauchst du zwei, da die Szene einmal durch das auslösen und einmal durch das sicher schalten getriggert werden kann.

Da fällt mir auf. Setz die Instanz auf 4 :wink: 2 Motions könnten theoretisch 4x triggern.

Du kannst auch mit LUA neue Instanzen abbrechen. Dann brauchst du nur 2 Instanzen.

Gruß