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?
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:
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
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
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 2 Motions könnten theoretisch 4x triggern.
Du kannst auch mit LUA neue Instanzen abbrechen. Dann brauchst du nur 2 Instanzen.