@parip69, habe es angepasst und getestet, irgendwie hängt er sich fest. Bei der Antwort #40015 sieht man meine letzten Einstellungen ( Bis auf den Counter der auf 70 gesetzt werden muss, damit der Trockner wg. dem Knitterschutz , der immer wieder so kurz bis 65 geht erst nach dieser Zeit eine Pushnachricht versendet.)
--################# Waschmaschine test 01.07.2016 ####################################
--[[
%% properties
34 power
34 value
%% globals
--]]
local wallplug = 34 -- wallplug zwischenstecker Trockner.
local start = 200 -- 200 Start "Watt" bevor der Trockner einschaltet.
local standby = 3 -- 3 Watt. Verbrauch, unter dem der Standby-Modus erkannt werden soll.
local waschen = 3 -- Trockner tut noch trocknen wen drueber ist.
local phone1 = 5 -- ID Tablet Michael.
--local phone2 = 21 -- ID Tablet Sabine.
--local EMail1 = 4 -- ID E-Mail Michael
--local vu_wz = 63 -- WZ maesage waschmaschine... an VU+!
--local vu_sz = 68 -- SZ maesage waschmaschine... an VU+!
--local vu_kz = 64 -- KZ maesage waschmaschine... an VU+!
--local vu_ke = 65 -- Ke maesage waschmaschine... an VU+!
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 = 62 -- 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.");
-- 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',"Der Trockner dauerte "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", energyverbrauch()).." kWh und kostet "..string.format("%.2f", energyverbrauch()*ct/100).." €.");
------------------------------------------------------------------------------
fibaro:call(phone1, "sendPush", "Trockner ist fertig"); -- 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',"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();
-- 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 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")) > 0 )
and (tonumber(fibaro:getValue(wallplug, "power")) < aus ) then
fibaro:sleep(10*1000)
debug('lightslategrey', "ZwischenStecker Trockner ist eingeschaltet.")
end
--###########################################################################################