Hallo Zusammen,
Ich bin nach der Suche einer Szene mit der man Zeit messen kann wie lange ein Wall Plug aktiv war (Zeit start wenn Verbrauch >0W und Zeit stop wenn Verbrauch wieder =0W) dann Info per Push Nachricht…
Geht sowas überhaupt?
Vielen Dank für die Hilfe!
Gruß, Gregor
Hallo Gregor,
das geht sicherlich. Z.B. mit den Waschmaschinenscripten. Hier ein leicht abgeändertes:
--[[
%% properties
143 power
%% globals
--]]
--Überwacht die Leistungsaufnahme der Waschmaschine und verschickt bei Ende
--eine Pushnachricht. Die Überwachung wird erst ab einer bestimmten Leistung
--vorgenommen, damit nicht ohne Lauf Nachrichten verschickt werden. Zusätzlich
--wird das Symbol des VD geändert.
local power_socket = 143 -- wallplug
local phoneID = {222} -- phone IDs for push notification
local ZaehlerAus = 0 -- Nach [s] Sekunden Aus erkennen
local ZaehlerEin = 0 -- Nach [s] Sekunden Ein erkennen
local PowerAus = 0 -- bei geringerer [W] Leistung Aus erkennen
local PowerEin = 1 -- bei größerer [W] Leistung Betrieb erkennen
local PowerStart = 1 -- bei größerer [W] Leistung Start erkennen
-- Funktion zum Versenden der Push
function sendPush(text)
if (phoneID[1] ~= nil) then
for i=1, #phoneID do
if phoneID[i] ~= nil then
fibaro:debug('Versende Push an ID ' .. phoneID[i] .. ': ' .. text)
fibaro:call(phoneID[i],'sendPush', text, 'alarm')
end
end
end
end
if fibaro:countScenes()>1 then
--fibaro:debug("Kill second Scene...")
--fibaro:debug("-")
fibaro:abort()
end
local run = 0
local power = tonumber(fibaro:getValue(power_socket, "power")) --aktuelle Leistung
local counterAus = 0
local counterEin = 0
fibaro:debug("Verbrauch = "..power.." Watt")
--Starterkennung
if power > PowerStart and power < 10000 and run == 0 then
local TimeS = os.time() --Startzeit sichern
--fibaro:debug(TimeS)
fibaro:debug("Waschmaschine wurde gestartet...")
run = 1
--Überwachungsschleife
while run == 1 do
power = tonumber(fibaro:getValue(power_socket, "power")) --aktuelle Leistung
if power <= PowerAus then --Wenn Leistung zu niedrig..
counterAus = counterAus + 1 --..Aus-Zähler erhöhen
fibaro:debug('counterEin = ' ..counterEin.. ' | counterAus = ' ..counterAus.. " | "..power.." Watt")
end
if power >= PowerEin then --Wenn Leistung OK..
counterAus = 0 --..Aus-Zähler zurücksetzen
counterEin = counterEin + 1 --..Ein-Zähler erhöhen
end
if counterAus > ZaehlerAus then --Wenn Aus-Zähler abgelaufen..
if counterEin > ZaehlerEin then --..prüfen ob Ein-Zähler lange genug gelaufen
local dauer = os.time()-TimeS --Ein-Dauer in Min
sendPush("Waschmaschine ist durchgelaufen! Dauer: "..dauer.." s.") --Pushnachricht
else
fibaro:debug("Fehlstart beendet!") --Z.B. durch zu kurze Laufzeit
end
fibaro:debug("Verbrauch = "..power.." Watt")
run = 0
end
fibaro:sleep(1*1000)
end
end
fibaro:debug("---")
Muss halt noch IDs und Text anpassen usw. Ist vielleicht etwas „overdressed“ für deinen Anwendungsfall und geht bestimmt auch einfacher aber das Script ist flexibel was Einschaltdauer und Schwellen angeht. Probiers mal aus.
Gruß, Ändy
Hallo Andy,
Besten Dank! Es funktioniert!
Gibt es die Möglichkeit die Zeitdauer in Minuten zu bekommen?
Momentan bekomme ich die Zeit in Sekunden…
Gruß,
Gregor
Für local dauer mal diese Zeile verwenden:
local dauer = math.floor((os.time()-TimeS)/60) --Ein-Dauer in Min