Sorry für meine späte Reaktion, habe gerade leider nicht soviel Zeit für Fibaro “übrig”
Habe zwei WallPlugs zur Zeit aktiv, einen für den Trockner, einen für die Waschmaschine. Mit beiden habe ich “Probleme” und kann diese leidr nicht alleine lösen
Hier das Script vom Trockner
--[[
%% properties
79 power
79 value
%% globals
--]]
local wallplug = 79 -- wallplug zwischenstecker Trockner.
local start = 200 -- 200 Start "Watt" bevor der Trockner einschaltet.
local standby = 130 -- "X" Watt. Verbrauch, unter dem der Standby-Modus erkannt werden soll.
local waschen = 400 -- Trockner tut noch trocknen wen drueber ist.
local phone1 = 4 -- ID RikiPhone.
local phone2 = 59 -- ID Verena iPhone.
-- Erklärungen zu den Werten unter
-- https://www.siio.de/board/thema/waschmaschine-push-nachricht/page/11/#post-40147
local aus = 1 -- wenn unter ... Watt dann Trockner wird ausgeschaltet.
local counterStandbyMax = 1.5 -- Conter je eine minute bis Nachricht verschickt wird.
local counterNachrichtMax = 1 -- counterNachrichtMax vieviele nachrichte du erhalten willst.
local rebootSceneID = 14 -- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0 -- hilfs vareable um die Meldungen nicht an dauernd zu wiederholen.
local StartWaschZeit -- Start der Trocknerzeit.
local EndWaschZeit -- Ende der Trocknerzeit.
local ct = 22.41 -- ct/kWh
-----------------------------------------------------------------------------------------
debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
--#######################################################################################
if (fibaro:countScenes()>1) then
fibaro:abort();
fibaro:sleep(1*6*1000)
end
-------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local run = 0
local counterStandby = 0
local counterNachricht = 0
local power = fibaro:getValue(wallplug, "power")
----------Timestamp berechnen------------------------------------------
function convertTime(seconds)
local stunden = math.floor(seconds/3600)
local minute = math.floor((seconds - (stunden*3600)) /60)
local seconds = ((seconds - (stunden*3600)) - minute * 60)
return stunden..":"..minute .. ":" ..string.format("%.0f", seconds)
end
--------- Energy verbrauch --------------------------------------------
function energyverbrauch();
local jsonListe = api.get("/energy/"..StartWaschZeit.."/"..EndWaschZeit.."/compare/devices/power/"..wallplug);
for k, v in pairs(jsonListe) do
local energykWh = json.decode(v.kWh)
return energykWh
end
end
---------------------------------------------------------------------
--------------- Ab hir startet das Waschprogramm. --------------------------
---------------------------------------------------------------------
if ((tonumber(fibaro:getValue(wallplug, "power")) > start ) and run == 0) then
StartWaschZeit = os.time();
debug('coral', "Trockner ist an... beginne zu trocknen.")
debug('green', "Verbrauch = "..power.." Watt")
run = 1
end
while run == 1 do
if ((tonumber(fibaro:getValue(wallplug,"power")) <= standby)) then --war nur < habe auf <= geendert.
if (counterStandby == counterStandbyMax) then
EndWaschZeit = os.time();
debug('aqua', "Trockner ist fertig; ........versende die Push Nachrichten.");
debug('orange',"Der Trockner benötigte "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", energyverbrauch()).." kWh und kostet "..string.format("%.2f", energyverbrauch()*ct/100).." €.");
------------------------------------------------------------------------------
fibaro:call(4, "sendPush", "Trockner ist fertig", "Trockner"); -- Push Handy Rik
fibaro:call(59, "sendPush", "Trockner ist fertig", "Trockner");-- Push Handy Verena
fibaro:call(phone1, "sendPush", "Trockner ist fertig - Nachricht2 über 'phone1'", "Trockner"); -- Push Handy Rik
--fibaro:call(phone2, "sendPush", "Trockner ist fertig "); -- Push Handy Sabine
counterStandby = 0
counterNachricht = counterNachricht + 1
end
if counterStandby > 1 then
debug('coral', "Trockner im Standby; ...zähle counterStandby hoch.")
debug('orange', ""..counterStandby.." Minuten bis zur nächsten Nachricht!")
end
if ((tonumber(fibaro:getValue(wallplug, "power")) < aus ) or counterNachricht == counterNachrichtMax) then
debug('mistyrose', "Du hast "..counterNachricht.." nachrichet....... erhalten.")
run = 0
counterStandby = 0
counterNachricht = 0
meldungenDebug = 0
debug('red',"Der Trockner ist fertig! ....Scene wird rebotet.")
fibaro:startScene(rebootSceneID);
end
counterStandby = counterStandby + 1
meldungenDebug = 0
fibaro:sleep(1*60*1000)
elseif (tonumber(fibaro:getValue(wallplug, "power")) > waschen) then
----- meldungenDebug = 0 ------------------------------------------------------------------
if meldungenDebug == 0 then
power = fibaro:getValue(wallplug, "power")
debug('lightsteelblue', "Trockner ist noch am arbeiten!!!")
meldungenDebug = 1
end
----- meldungenDebug = 0 ------------------------------------------------------------------
counterStandby = 0
fibaro:sleep(1*60*1000)
end
if ((tonumber(fibaro:getValue(wallplug, "power")) == 0 ))then
------------------------------------------------------------------------------
EndWaschZeit = os.time();
debug('orange',"Die Trocknung dauerte "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", energyverbrauch()).." kWh und kostet "..string.format("%.2f", energyverbrauch()*ct/100).." €.");
------------------------------------------------------------------------------
debug('red',"Trockner aus... Abort scene")
run = 0
counterStandby = 0
counterNachricht = 0
meldungenDebug = 0 -- hilfs vareable um die meldungen nicht an dauernd zu wiederholen.
fibaro:startScene(rebootSceneID);
end
fibaro:sleep(2*1000)
end
----------------------------------------------------------------------------------------
---############# Trockner ##################################################---
----------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
if ( tonumber(fibaro:getValue(wallplug, "value")) == 0 )then
fibaro:sleep(3*1000)
fibaro:call(wallplug, "turnOn");
debug('lightblue', "ZwischenStecker Trockner... wurde wieder eingeschaltet.")
elseif ( tonumber(fibaro:getValue(wallplug, "value")) > 1 )
and (tonumber(fibaro:getValue(wallplug, "power")) < aus ) then
fibaro:sleep(10*1000)
debug('lightslategrey', "ZwischenStecker Trockner ist eingeschaltet.")
end
--###########################################################################################
Hier bekomme ich leider keine Meldung auf die Smartphones, IDs der Endgeräte passt, habe ich mit einem anderen Script getestet
Beim Script von der Waschmaschine bekomme ich ebenfalls keine Meldung auf die Smartphones und im Debug-Fenster erhalte ich folgende Fehlermeldung:
[ERROR] 11:08:00: Cannot query interpreter state
[ERROR] 14:35:00: Cannot query interpreter state
[ERROR] 14:37:00: Cannot query interpreter state
Hier das Script für die Waschmaschine
--[[
%% properties
76 power
76 value
%% globals
--]]
local wallplug = 76 -- wallplug zwischenstecker Trockner.
local start = 200 -- 200 Start "Watt" bevor der Trockner einschaltet.
local standby = 5 -- "X" Watt. Verbrauch, unter dem der Standby-Modus erkannt werden soll.
local waschen = 160 -- Trockner tut noch trocknen wen drueber ist.
local phone1 = 4 -- ID Rik iPhone.
-- local phone1 = 59 -- ID Verena iPhone.
-- Erklärungen zu den Werten unter
-- https://www.siio.de/board/thema/waschmaschine-push-nachricht/page/11/#post-40147
local aus = 2 -- wenn unter ... Watt dann Trockner wird ausgeschaltet.
local counterStandbyMax = 1.5 -- Conter je eine minute bis Nachricht verschickt wird.
local counterNachrichtMax = 3 -- counterNachrichtMax vieviele nachrichte du erhalten willst.
local rebootSceneID = 15 -- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0 -- hilfs vareable um die Meldungen nicht an dauernd zu wiederholen.
local StartWaschZeit -- Start der Trocknerzeit.
local EndWaschZeit -- Ende der Trocknerzeit.
local ct = 22.41 -- ct/kWh
-----------------------------------------------------------------------------------------
debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
--#######################################################################################
if (fibaro:countScenes()>1) then
fibaro:abort();
fibaro:sleep(1*6*1000)
end
-------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local run = 0
local counterStandby = 0
local counterNachricht = 0
local power = fibaro:getValue(wallplug, "power")
----------Timestamp berechnen------------------------------------------
function convertTime(seconds)
local stunden = math.floor(seconds/3600)
local minute = math.floor((seconds - (stunden*3600)) /60)
local seconds = ((seconds - (stunden*3600)) - minute * 60)
return stunden..":"..minute .. ":" ..string.format("%.0f", seconds)
end
--------- Energy verbrauch --------------------------------------------
function energyverbrauch();
local jsonListe = api.get("/energy/"..StartWaschZeit.."/"..EndWaschZeit.."/compare/devices/power/"..wallplug);
for k, v in pairs(jsonListe) do
local energykWh = json.decode(v.kWh)
return energykWh
end
end
---------------------------------------------------------------------
--------------- Ab hir startet das Waschprogramm. --------------------------
---------------------------------------------------------------------
if ((tonumber(fibaro:getValue(wallplug, "power")) > start ) and run == 0) then
StartWaschZeit = os.time();
debug('coral', "Waschmaschine ist an... beginne zu waschen.")
debug('green', "Verbrauch = "..power.." Watt")
run = 1
end
while run == 1 do
if ((tonumber(fibaro:getValue(wallplug,"power")) <= standby)) then --war nur < habe auf <= geendert.
if (counterStandby == counterStandbyMax) then
EndWaschZeit = os.time();
debug('aqua', "Waschmaschine ist fertig; ........versende die Push Nachrichten.");
-- fibaro:setGlobal("GerhardTelegram", "Waesche ist fertig. Der Waschvorgang dauerte "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", energyverbrauch()).." kWh und kostet "..string.format("%.2f", energyverbrauch()*ct/100).." €.");
debug('orange',"Die Waschmaschine brauchte "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", energyverbrauch()).." kWh und kostet "..string.format("%.2f", energyverbrauch()*ct/100).." €.");
------------------------------------------------------------------------------
fibaro:call(4, "sendPush", "Waschmaschiene ist fertig", "Waschmaschiene"); -- Push Handy Rik
fibaro:call(59, "sendPush", "Waschmaschiene ist fertig", "Waschmaschiene");-- Push Handy Verena
fibaro:call(phone1, "sendPush", "Waschmaschine ist fertig per Variable phone1"); -- Push Handy Michael
-- fibaro:call(phone2, "sendPush", "Trockner ist fertig "); -- Push Handy Sabine
--fibaro:call(EMail1, "sendEmail", "Trockner ist fertig...Waesche ist fertig"); -- E-Mail an Michael
------------------------------------------------------------------------------
-- fibaro:call(vu_wz, "pressButton", "47")--WZ nachricht von waschmaschine... an VU+!
-- fibaro:call(vu_sz, "pressButton", "47")--KZ nachricht von waschmaschine... an VU+!
-- fibaro:call(vu_kz, "pressButton", "47")--SZ nachricht von waschmaschine... an VU+!
-- fibaro:call(vu_ke, "pressButton", "47")--Kl nachricht von waschmaschine... an VU+!
------------------------------------------------------------------------------
counterStandby = 0
counterNachricht = counterNachricht + 1
end
if counterStandby > 1 then
debug('coral', "Trockner im Standby; ...zähle counterStandby hoch.")
debug('orange', ""..counterStandby.." Minuten bis zur nächsten Nachricht!")
end
if ((tonumber(fibaro:getValue(wallplug, "power")) < aus ) or counterNachricht == counterNachrichtMax) then
debug('mistyrose', "Du hast "..counterNachricht.." nachrichet....... erhalten.")
run = 0
counterStandby = 0
counterNachricht = 0
meldungenDebug = 0
debug('red',"Die Waschmachine ist fertig! ....Scene wird rebotet.")
fibaro:startScene(rebootSceneID);
end
counterStandby = counterStandby + 1
meldungenDebug = 0
fibaro:sleep(1*60*1000)
elseif (tonumber(fibaro:getValue(wallplug, "power")) > waschen) then
----- meldungenDebug = 0 ------------------------------------------------------------------
if meldungenDebug == 0 then
power = fibaro:getValue(wallplug, "power")
debug('lightsteelblue', "Waschmaschine ist noch am arbeiten!!!")
meldungenDebug = 1
end
----- meldungenDebug = 0 ------------------------------------------------------------------
counterStandby = 0
fibaro:sleep(1*60*1000)
end
if ((tonumber(fibaro:getValue(wallplug, "power")) == 0 ))then
------------------------------------------------------------------------------
EndWaschZeit = os.time();
-- fibaro:setGlobal("GerhardTelegram", "Waesche ist fertig. Der Waschvorgang dauerte "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", energyverbrauch()).." kWh und kostet "..string.format("%.2f", energyverbrauch()*ct/100).." €.");
debug('orange',"Das Waschen dauerte "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", energyverbrauch()).." kWh und kostet "..string.format("%.2f", energyverbrauch()*ct/100).." €.");
------------------------------------------------------------------------------
debug('red',"Waschmaschine aus... Abort scene")
run = 0
counterStandby = 0
counterNachricht = 0
meldungenDebug = 0 -- hilfs vareable um die meldungen nicht an dauernd zu wiederholen.
fibaro:startScene(rebootSceneID);
end
fibaro:sleep(2*1000)
end
----------------------------------------------------------------------------------------
---############# Trockner ##################################################---
----------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
if ( tonumber(fibaro:getValue(wallplug, "value")) == 0 )then
fibaro:sleep(3*1000)
fibaro:call(wallplug, "turnOn");
debug('lightblue', "ZwischenStecker Waschmaschine... wurde wieder eingeschaltet.")
elseif ( tonumber(fibaro:getValue(wallplug, "value")) > 1 )
and (tonumber(fibaro:getValue(wallplug, "power")) < aus ) then
fibaro:sleep(10*1000)
debug('lightslategrey', "ZwischenStecker Waschmaschine ist eingeschaltet.")
end
--###########################################################################################
Habe mir versucht die Scripte zu erklären, leider mit mäßigem Erfolg
Wie bekomme ich mehr Debug-Meldungen angezeigt, da ist ja extra eine Variable für vorgesehen, oder?
Ich habe die Scripte verglichen und Code-technisch keinen Unterschied feststellen können warum die beiden unterschiedlich arbeiten…
Freu mich über Eure Hilfe, Danke im Voraus!!
Rik