Hallo zusammen,
ich wollte meinen Fibaro Wall Plug zu einer bestimmten Tageszeit ein- und ausschalten.
Dies sollte Tagesunabhängig passieren.
Da ich in Sachen Lua Programmierung recht unerfahren bin, habe ich mich auf die Suche
für Beispielcode gemacht.
Nachdem ich einige Quellen (vor allem hier :-)) gefunden habe, konnte ich den Code für
meine Belange anpassen - was auch in der Praxis funktioniert.
Der Wall Plug tut was er soll.
Da ich den Code nicht zu 100% verstehe und ich mein Wissen gerne erweitern möchte,
wende mich an die Profis hier im Forum.
Hier aber erstmal der Programmcode:
--[[
%% autostart
%% properties
%% events
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local currentTime = string.format("%02d",currentDate.hour)..":"..string.format("%02d",currentDate.min)
local startTime = "06:15";
local stopTime = "22:00";
if (currentTime == startTime) then
fibaro:call(6, "turnOn");
end
if (currentTime == stopTime) then
fibaro:call(6, "turnOff");
end
setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
fibaro:debug("Hallo");
tempFunc()
else
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (startSource["type"] == "other") then
fibaro:call(6, "turnOff");
end
end
- Warum benötige ich %% events und %% properties?
Ist das hier erforderlich? - Warum muss man eine Funktion für die Ausführung ansprechen und kann das nicht direkt machen?
Ich habe es ohne Funktion versucht, aber dann läuft keine Instanz und der Wall Plug schaltet nicht. - Wann wird der Trigger “other” ausgeführt?
Ein manuelles Schalten am Gerät führt nicht zur Ausführung des Programmcodes.
3a. Kann der Programmteil evtl. entfallen? - Muss ich mir nochmal das Datum (Zeit) holen und den Trigger für “other” abfragen?
Kann das nicht schon einaml außerhalb der Funktion passieren (wie im Code geschehen) und dann ist die Variable überall im Code verfügbar? - Warum wird ein setTimeout benötigt?
Ohne diesen funktioniert das Ganze nämlich nicht. - Wann muss ein Semikolon am Zeielnende gesetzt werden und wann nicht?
Vielen Dank für Eure Unterstützung.
Gruß
Tom