Hallo,
ich habe ein bisschen mit LUA experimentiert und folgender Code ist rausgekommen. Ziel ist es, mein LED Band am Garagentor rot blinken zu lassen wenn das Tor in Bewegung ist und für 15 Sekunden grün leuchten zu lassen wenn das Tor die jeweilige Endposition erreicht hat. Zusätzlich soll das Band ab Sonnenuntergang bis Sonnenaufgang weiss leuchten.
Bevor ich das Skript live setze wollte ich fragen ob einer der Experte mal einen Blick drauf werfen kann. nicht dass ich hier was verbockt habe und mir das ganze system zerschiesse
--[[
%% autostart
%% properties
332 value
341 value
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
local sonnenaufgang = fibaro:getValue(1, "sunriseHour")
local sonnenuntergang = fibaro:getValue(1, "sunsetHour")
local garagentorunten = 332
local garagentoroben = 341
local LEDstripe = 321
local lichtgarage = 257
if (tonumber(fibaro:getValue(garagentorunten, "value")) > 0) -- Tor in Bewegung bzw. nicht geschlossen und nicht offen
and (tonumber(fibaro:getValue(garagentoroben, "value")) > 0)
then
fibaro:call(LEDstripe, "startProgram", "286") --Rot blinken
fibaro:call(lichtgarage, "turnOn") -- Beleuchtung in Garage für 5 Minuten anschalten
fibaro:sleep(5*60*1000)
fibaro:call(lichtgarage, "turnOff")
fibaro:debug('Tor wird geöffnet')
end
if (tonumber(fibaro:getValue(garagentoroben, "value")) == 0) -- Tor offen
then fibaro:call(LEDstripe "startProgram", "287") --Grün leuchten
fibaro:sleep(15*1000) -- 15 Sekunden warten
elseif ((sonnenaufgang > os.date("%H:%M", os.time())) or (os.date("%H:%M", os.time()) > sonnenuntergang)) -- prüfen ob Sonne schon untergegangen bzw. noch nicht aufgegangen
then fibaro:call(LEDstripe, "setValue", {R="255",G="255",B="255",W="255"}) -- wenn ja dann LED weiss leuchten
else fibaro:call(LEDstripe, "turnOff") -- wenn nein, dann LED ausschalten
fibaro:debug('Tor geöffnet')
end
if (tonumber(fibaro:getValue(garagentorunten, "value")) == 0) -- Tor geschlossen
then fibaro:call(LEDstripe "startProgram", "287")
fibaro:sleep(15*1000)
elseif ((sonnenaufgang > os.date("%H:%M", os.time())) or (os.date("%H:%M", os.time()) > sonnenuntergang))
then fibaro:call(LEDstripe, "setValue", {R="255",G="255",B="255",W="255"})
else fibaro:call(LEDstripe, "turnOff")
fibaro:debug('Tor geschlossen')
end
setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
end
die ein oder andere Lokale variable ist bestimmt auch zuviel drin…
Vielen Dank!
Mit freundlichen Grüßen
bademeister