Ich bekomme erst eine Nachricht, wenn wir die Waschmaschine ausschalten. Aber sie sollte doch 1 Minute nachdem der Verbrauch unter 4 Watt ist eine Nachricht versenden.
--[[
%% properties
566 power
%% globals
--]]
local power_socket = 566 -- wallplug
local powerlive = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch = "..powerlive.." Watt")
if (fibaro:countScenes()>1)
then
fibaro:abort();
end
local run = 0
local currentDate = os.date("*t");
local power = fibaro:getValue(power_socket, "power")
local counter = 0
if ( tonumber(fibaro:getValue(power_socket, "power")) > 35 ) and run == 0 then
local start = (os.time())
fibaro:debug("Waschmaschine läuft...")
fibaro:debug("Verbrauch = "..power.." Watt")
run = 1
end
while run == 1 do
if (tonumber(fibaro:getValue(power_socket, "power")) < 4) then
counter = counter + 1
local power2 = fibaro:getValue(power_socket, "power")
fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
end
if (tonumber(fibaro:getValue(power_socket, "power")) > 5 ) then
counter = 0
end
if (tonumber(fibaro:getValue(power_socket, "power")) < 1.0) and counter > 60 then
fibaro:debug("Waschmaschine ist fertig.")
local power3 = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch (3) = "..power3.." Watt")
fibaro:debug("Send Push")
fibaro:call(646, "sendPush", "Waschmaschine ist fertig", "Waschmaschine");
fibaro:call(632, "sendPush", "Waschmaschine ist fertig", "Waschmaschine");
run = 0
end
fibaro:sleep(1*1000)
end
habe das Script heute auch erfolgreich mit Push und Sonos Benachrichtigung eingerichtet. Wirklich eine feine Sache!
Würde das Script auch gerne laufen lassen um den Ladevorgang von meinem Auto zu beobachten. Allerdings mit der Einschränkung das die Mitteilungen (Push und Sonos) nur zwischen 0700 und 2000 erfolgen. Alles davor oder danach würde unter Umständen die Nachtruhe und den Familienfrieden gefährden
Und als Sahnehäubchen sollte er auch noch erkennen wenn nur 10 Minuten lang Last auf der Dose ist, das soll dann als Klimatisierung gemeldet werden. Evtl. anhand der Außentemperatur unterscheiden ob der Wagen gerade vorwärmt oder vorkühlt.
Kennt noch jemand bei seiner Waschmaschine das Phänomen, dass diese sporadisch, ohne das sie an ist, wenige sekunden lang einen Verbrauch hat?
Falls ja, wie fangt ihr dies im Script ab?
das mit dem kurzzeitigen hohen Verbrauch haben wir auch. Für ca. 1 Minute (vielleicht auch weniger) steigt der Verbrauch auf ca. 120 Watt.
Danach ist das Script der Meinung Waschmaschine läuft und meldet brav auch “Waschmaschine fertig”. Könnte man solche Spitzen die nicht zum Betrieb der Waschmaschine gehören ausblenden - ähnlich der Abfrage ob die Maschine seit 1 Minute unter 1 Watt hat?
ich habe das gleiche Problem (bei meiner Spülmaschine).
Ich habe versucht einen zweiten Zähler in das Skript zu integrieren, leider funktioniert es aber leider nicht.
Es handelt sich um die Zeilen 23-36 in diesem Code:
--[[
%% properties
387 power
%% globals
--]]
local power_socket = 387 -- wallplug
local powerlive = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch = "..powerlive.." Watt")
if (fibaro:countScenes()>1)
then
fibaro:abort();
end
local run = 0
local currentDate = os.date("*t");
local power = fibaro:getValue(power_socket, "power")
local counter = 0
local counter2 = 0
local run2 = 0
while run2 == 0 do
if ( tonumber(fibaro:getValue(power_socket, "power")) > 35 ) then
counter2 = counter2 + 1
local power3 = fibaro:getValue(power_socket, "power")
fibaro:debug('counter2 :' ..counter2.. " : " ..power3.. "Watt")
end
if (tonumber(fibaro:getValue(power_socket, "power")) < 1.0 ) then
counter2 = 0
fibaro:debug("Counter2 genullt 1")
run2 = 1
end
if ( tonumber(fibaro:getValue(power_socket, "power")) > 35 ) and counter2 > 60 and run == 0 then
local start = (os.time())
fibaro:debug("Spülmaschine läuft...")
fibaro:setGlobal("Spuelmaschine", "Läuft");
fibaro:debug("Verbrauch = "..power.." Watt")
run = 1
run2 = 0
counter2 = 0
fibaro:debug("Counter2 genullt 2")
end
while run == 1 do
if (tonumber(fibaro:getValue(power_socket, "power")) < 1) then
counter = counter + 1
local power2 = fibaro:getValue(power_socket, "power")
fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
end
if (tonumber(fibaro:getValue(power_socket, "power")) > 2 ) then
counter = 0
end
if (tonumber(fibaro:getValue(power_socket, "power")) < 1.0) and counter > 60 then
fibaro:debug("Spülmaschine ist fertig.")
local power3 = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch (3) = "..power3.." Watt")
fibaro:debug("Send Push")
fibaro:call(11, "sendPush", "Spülmaschine ist fertig", "Spülmaschine");
fibaro:call(331, "sendPush", "Spülmaschine ist fertig", "Spülmaschine");
fibaro:setGlobal("Spuelmaschine", "Aus");
run = 0
if ( fibaro:getGlobalValue("SleepState") == "Awake" and fibaro:getGlobalValue("PresentState") == "Home" ) then
fibaro:call(360, "pressButton", "13");
fibaro:debug("Sprachfeedback wird gesendet");
else
fibaro:debug("Kein Sprachfeedback, da Bedingungen nicht erfüllt.");
end
end
fibaro:sleep(1*1000)
end
end
Leider zählt der “counter2” bis 60 innerhalb von einer Sekunde.
Weiter unten im Skript “counter” bis 60 und benötigt dafür auch 60 Sekunden. Der Code ist für mich gleich.
Kann mir jemand sagen, was ich falsch mache?
Die Debugs der jeweiligen counter habe ich mal angehangen.
So läuft es bei mir und verhindert seitdem die “Fehlbenachrichtigungen” bei kurzfristiger Leistungsaufnahme.
--[[
%% properties
387 power
%% globals
--]]
local power_socket = 387 -- wallplug
local powerlive = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch = "..powerlive.." Watt")
if (fibaro:countScenes()>1)
then
fibaro:abort();
end
local run = 0
local currentDate = os.date("*t");
local power = fibaro:getValue(power_socket, "power")
local counter = 0
local counter2 = 0
local run2 = 0
while run2 == 0 do
if ( tonumber(fibaro:getValue(power_socket, "power")) > 35 ) then
counter2 = counter2 + 1
local power3 = fibaro:getValue(power_socket, "power")
fibaro:debug('counter2 :' ..counter2.. " : " ..power3.. "Watt")
end
if (tonumber(fibaro:getValue(power_socket, "power")) < 1.0 ) then
counter2 = 0
fibaro:debug("Counter2 genullt")
run2 = 0
break
fibaro:debug("Break Befehl ausgeführt")
end
if ( tonumber(fibaro:getValue(power_socket, "power")) > 35 ) and counter2 > 60 and run == 0 then
local start = (os.time())
fibaro:debug("Spülmaschine läuft...")
fibaro:setGlobal("Spuelmaschine", "Läuft");
fibaro:debug("Verbrauch = "..power.." Watt")
run = 1
run2 = 1
counter2 = 0
fibaro:debug("Counter2 genullt 2")
end
fibaro:sleep(1*1000)
end
while run == 1 do
if (tonumber(fibaro:getValue(power_socket, "power")) < 1) then
counter = counter + 1
local power2 = fibaro:getValue(power_socket, "power")
fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
end
if (tonumber(fibaro:getValue(power_socket, "power")) > 2 ) then
counter = 0
end
if (tonumber(fibaro:getValue(power_socket, "power")) < 1.0) and counter > 60 then
fibaro:debug("Spülmaschine ist fertig.")
local power3 = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch (3) = "..power3.." Watt")
fibaro:debug("Send Push")
fibaro:call(11, "sendPush", "Spülmaschine ist fertig", "Spülmaschine");
fibaro:call(331, "sendPush", "Spülmaschine ist fertig", "Spülmaschine");
fibaro:setGlobal("Spuelmaschine", "Aus");
run = 0
if ( fibaro:getGlobalValue("SleepState") == "Awake" and fibaro:getGlobalValue("PresentState") == "Home" ) then
fibaro:call(360, "pressButton", "13");
fibaro:debug("Sprachfeedback wird gesendet");
else
fibaro:debug("Kein Sprachfeedback, da Bedingungen nicht erfüllt.");
end
end
fibaro:sleep(1*1000)
end