Hi Leute,
Ich habe ein Skript das mit meine Klimaanlage über einen ZXT-120 ein und ausschaltet.
Da die Klima manchmal verzögert ausschaltet, habe ich einen Fibaro Plug dazwischen, der mir den Verbauch misst.
Mein Skript soll nach dem Ausschalte Befehl in einer Dauerschleife alle 15 Sekunden den Verbrauch messen und mir erst dann ein Mail schicken, wenn die Klima komplett AUS ist also unter 1 Watt Strom braucht!
Es funktioniert grundsätzlich schon gut, die Prüfschleife läuft allerdings nur ein einziges Mal. Offensichtlich hab ich hier einen Denkfehler in der Schleifenfunktion!?
Kann mir jemand einen Tipp geben?
Hier das vereinfachte Skript:
--[[
%% properties
%% events
%% globals
--]]
--Name: Klima AUS
if (fibaro:countScenes()>1) then fibaro:abort() end -- lösche doppelte Szenen
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end
local KlimaPlug = 334 -- Fibaro Plug für Klimaanlage
local KlimaValue = tonumber(fibaro:getValue(KlimaPlug,"value"))
local KlimaName = fibaro:getName(KlimaPlug)
local KlimaRoom = fibaro:getRoomNameByDeviceID(KlimaPlug)
local KlimaPower = fibaro:getValue(KlimaPlug, "power")
function KlimaAus()
local KlimaPower = fibaro:getValue(KlimaPlug, "power")
if (tonumber(fibaro:getValue(KlimaPlug, "power")) > 10 ) then
fibaro:call(411, "setMode", "0") -- Mode OFF
Debug("green",(os.date("%d.%m.%Y - "..KlimaRoom.." - "..KlimaName.." wird ausgeschaltet - Verbrauch "..KlimaPower.." Watt")))
elseif (tonumber(fibaro:getValue(KlimaPlug, "power")) < 10 ) and (tonumber(fibaro:getValue(KlimaPlug, "power")) > 3 )then
Debug("green",(os.date("%d.%m.%Y - "..KlimaRoom.." - "..KlimaName.." ist bereits im Standby - Verbrauch "..KlimaPower.." Watt")))
elseif (tonumber(fibaro:getValue(KlimaPlug, "power")) < 1 ) then
Debug("green",(os.date("%d.%m.%Y - "..KlimaRoom.." - "..KlimaName.." ist ausgeschaltet - Verbrauch "..KlimaPower.." Watt")))
end
end
function KlimaAusNotify()
fibaro:call(2, "sendEmail", "Fibaro-Status: Klima - AUS", "DeviceName: "..KlimaName.."\nRaum: "..KlimaRoom.." \nist ausgeschaltet")
end
KlimaAus()
if (tonumber(fibaro:getValue(KlimaPlug, "power")) > 1 ) then
local timer = 15
repeat
fibaro:sleep(1000)
if (tonumber(fibaro:getValue(KlimaPlug, "power")) < 1 ) then
KlimaAusNotify()
timer = 0
break
end
timer = timer -1
until timer < 1
local KlimaPower = fibaro:getValue(KlimaPlug, "power")
Debug("magenta",(os.date("%d.%m.%Y - Klima braucht noch Strom- Verbrauch "..KlimaPower.." Watt")))
KlimaAus()
elseif (tonumber(fibaro:getValue(KlimaPlug, "power")) < 1 ) then
KlimaAusNotify()
end