Hallo Trixxon
Das habe ich nur für dich gemach und andere die für Lösungen interessiert sind.
Mein Script ist abwendig gestaltet mit fein dosierbare Parameter für das erkennen des Start, Aus Standby… Wunsch von Verzögerung der Nachrichten versenden wie viele nachrichten du erhalten willst und wohin sie überall gesendet werden sollen TV, Handy , Telegramm und vor allem Der Debug wird nur mit einer nachricht angegeben was die Maschiene macht und wenn sich was ändert wieder …
Ich stelle mein Script auch da rein für die die sich interessieren vor allem für Lösungsansätze und Spielerei.
Ich bin kein Programmierer habe von hier und da gelernt. ich vertrete die Meinung das mann fast alles Programmieren kann.
Die Zeilen 12 und 15 habe ich übersehen und die 8 sek kann mann abziehen.
--################# Waschmaschine test 01.07.2016 ####################################
--[[
%% properties
14 power
14 value
%% globals
--]]
local wallplug = 14 -- wallplug zwischenstecker waschmaschiene.
local start = 40 -- 40 Start "Watt" bevor die Waschmaschiene einschaltet.
local standby = 2 -- 2 Watt. Verbrauch, unter dem der Standby-Modus erkannt werden soll.
local waschen = 5 -- Waschmaschiene tut noch waschen wen drueber ist.
local phone1 = 96 -- ID Handy Gerhard.
local phone2 = 70 -- ID Handy Liana.
local radio = 34 -- ID RadioTablet.
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 ... Wat dann Waschmaschiene wird ausgeschaltet.
local counterStandbyMax = 1 -- Conter je eine minute bis Nachricht verschikt wird.
local counterNachrichtMax = 1 -- counterNachrichtMax vieviele nachrichte du erhalten willst.
local rebootSceneID = 18 -- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0 -- hilfs vareable um die meldungen nicht an dauernd zu wiederholen.
local StartWaschZeit -- Start Der Waschzeit.
local EndWaschZeit -- Ende der Wschzeit.
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',"Der Waschvorgang 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", "Waesche ist fertig"); -- Push Handy Gerhard
fibaro:call(phone2, "sendPush", "Masina de spalat este gata."); -- Push Handy Liana
fibaro:call(radio, "sendPush", "Masina de spalat este gata...Waesche ist fertig"); -- Push Handy RadioTablet
------------------------------------------------------------------------------
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', "Waschmaschine im Standby; ...zähle counterStandby hoch.")
debug('orange', ""..counterStandby.." Minute 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 Wäsche 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 tut noch waschen!!!")
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',"Der Waschvorgang 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
----------------------------------------------------------------------------------------
---############# Waschmaschine ##################################################---
----------------------------------------------------------------------------------------
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")) > 0 )
and (tonumber(fibaro:getValue(wallplug, "power")) < aus ) then
fibaro:sleep(10*1000)
-- debug('lightslategrey', "ZwischenStecker Waschmaschine ist eingeschaltet.")
end
--###########################################################################################
Mann kann gans sicher was optimieren.
viel spass