Fibaro Wall Plug Aktiv Zeit messen

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! :slight_smile:
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! :slight_smile:

Gibt es die Möglichkeit die Zeitdauer in Minuten zu bekommen? :thinking:
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