Waschmaschine Push Nachricht

Hi,

zu 1.) puhhh… Wollte erst schreiben, dass es nicht geht. Hab dann kurz drüber nachgedacht. Problem an der Sache ist ja, dass nur die Änderungen beim Verbrauch mitgeteilt werden. Ergo müsste man die nehmen, die Zeitspanne ermitteln, auf ne Sekunde umrechnen und dann addieren.

zu 2.) Man kann beim Start die Zeit in eine globale Variable schreiben und am Ende die aktuelle Zeit mit der verrechnen. Dann hättest du die Laufzeit. Im vergleich zu 1. ist das relativ leicht umzusetzen :slight_smile: 1 wäre schon eine Hausnummer mehr.

Gruß

Top. Funktioniert einwandfrei. Danke!

Hallo Trixxon
wen ich mich nicht irre kann mann vieleicht es so regeln.

verbrauchStart = fibaro:getValue(14, "energy")
verbrauchEnde = fibaro:getValue(14, "energy")
debug(verbrauchStart - verbrauchEnde )

bei beginn in eine Vareable verbrauchStart schreiben und am ende noch einmal in eine zweite Vareable verbrauchEnde und abzigen dann hat man den verbarauch.

Stimmt, gute Idee. Hatte ich so nicht auf dem Schirm.

Gruß

Hallo
ID anpassen, die verbrauchStart am anfang irgend wo positionieren und die verbrauchEnde kurtz bevor die nachricht verschickt wird.
Ich habe mein script tark umgebaut.


local ct = 22.41 --ct/kWh
local verbrauchStart = fibaro:getValue(14, "energy");
local verbrauchEnde = fibaro:getValue(14, "energy");
print("Verbrauch ist "..string.format("%.2f", verbrauchEnde - verbrauchStart).." kWh und kostet "..string.format("%.2f",(verbrauchEnde - verbrauchStart)*ct).." €.")


Hallo, ich habe noch eine Frag zu dem obigen Script. Einmal … lief es erfoglreich. Nur ist es so, dass ich den Wall-Plug dann manuel auschalte. Nun wollte ich die Waschmaschine starten, Wall-Plug manuel einschalten und bums… er ging sofort wieder aus und sendete die Pushnachricht :slight_smile: Wow dachte ich so schnell war die Waschmaschine noch nie fertig :slight_smile:

Noch was vergessen…
Ich habe noch eine Zeile eingefügt das der Wall-Plug sich ausschalten soll… am ende “fibaro:call(132, “turnOff”)”
Ich bin noch Anfänger im Bereich von LUA…also brauch noch etwas Zeit um alles zu verstehen :slight_smile:

Dann wird beim Einschalten des Wallplugs so viel Energie verbraucht, dass das Skript starten und anhand des Steomverbrauches davon ausgeht, dass der Verbraucher läuft. Hier schaust du dir am Besten den Debug der Szene an und passt dann die Verbrauchswerte im Skript an.

Gruß

Hallo

ein bein beispiel mit Waschzeit verbrauch und costen.

local ct = 22.41 --ct/kWh
local verbrauchStart = fibaro:getValue(14, "energy");
local verbrauchEnde = fibaro:getValue(14, "energy");
print("Verbrauch ist "..string.format("%.2f", verbrauchEnde - verbrauchStart).." kWh und kostet "..string.format("%.2f",(verbrauchEnde - verbrauchStart)*ct).." €.")   
 
local StartWaschZeit
local EndWaschZeit
StartWaschZeit = os.time()

EndWaschZeit = os.time()
print("Der Waschvorgang dauerte  "..string.format("%.2f", (EndWaschZeit - StartWaschZeit)/60).." Stunden. Der Verbrauch ist "..string.format("%.2f", verbrauchEnde - verbrauchStart).." kWh und kostet "..string.format("%.2f",(verbrauchEnde - verbrauchStart)*ct).." €.")   
 

Hallo parip69

hast Du diese codezeilen einfach in das bestehende Waschskript eingefügt, oder müssen diese Zeilen an ganz bestimmter Stelle stelle stehen um zu funktionieren?

Wie sieht es aus, wenn man sich diese Nachnicht am E-Mail zukommen lassen will, ginge dies auch?

Hallo Trixxon

dieser teil des Codes kommt ganz am Anfang wo das Script startet.


if ((tonumber(fibaro:getValue(wallplug, "power")) > start ) and run == 0) then
	debug('coral', "Waschmaschine ist an... beginne zu waschen.")
 	------------------------------------------------------------------
 	local ct = 22.41 --ct/kWh
 	local StartWaschZeit = os.time()
 	local StartVerbrauch = fibaro:getValue(14, "energy");
 	------------------------------------------------------------------  
	fibaro:debug("Verbrauch = "..power.." Watt")
	run = 1
end

und dieser teil gleich dort wo die Push Nachricht gesendet wurde.


fibaro:sleep(5*1000)
local EndeVerbrauch = fibaro:getValue(14, "energy");
local EndWaschZeit = os.time();
fibaro:debug("Der Waschvorgang dauerte  "..string.format("%.2f", (EndWaschZeit - StartWaschZeit)/60).." Stunden. Der Verbrauch ist "..string.format("%.2f", EndeVerbrauch - StartVerbrauch).." kWh und kostet "..string.format("%.2f",(EndeVerbrauch - StartVerbrauch)*ct).." €.")   
 

Gruss

Hallo parip69 habe die drei Codezeilen am Anfang reingesetzt

local ct = 22.41 --ct/kWh
local StartWaschZeit = os.time()
local StartVerbrauch = fibaro:getValue(14, “energy”);

Und diese am Ende, wo die eigentliche Pushnachricht steht.
fibaro:sleep(5*1000)
local EndeVerbrauch = fibaro:getValue(14, “energy”);
local EndWaschZeit = os.time();
fibaro:debug(“Der Waschvorgang dauerte “…string.format(”%.2f”, (EndWaschZeit - StartWaschZeit)/60)…" Stunden. Der Verbrauch ist “…string.format(”%.2f", EndeVerbrauch - StartVerbrauch)…" kWh und kostet “…string.format(”%.2f",(EndeVerbrauch - StartVerbrauch)*ct)…" €.")

Habe es mal durchlaufen lassen und bekomme dann in der Fibaro debug Zeile folgende Meldung
line 54: attempt to perform arithmetic on global ´StartWaschZeit`(a nil value)

Was könnte hier die Ursache sein?

Hallo
Es scheint als hättest du den ersten Teil zu weit vorne eingepflegt.
Ich müßte den ganzen Code sehen.

@parip69 kein Problem hier ist mein Skript, nur für den Trockner angepasst.

--[[
%% properties
34 power
%% globals
--]]
 
local power_socket = 34 -- 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")) > 40 ) and run == 0 then
  local start = (os.time())
  fibaro:debug("Trockner läuft...")
  local ct = 22.41 --ct/kWh
  local StartTrocknerZeit = os.time()
  local StartVerbrauch = fibaro:getValue(34, "energy");
  fibaro:debug("Verbrauch = "..power.." Watt")
  run = 1
end
 
while run == 1 do
 
if (tonumber(fibaro:getValue(power_socket, "power")) < 3) 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")) > 3 ) then
       counter = 0
      end
       if (tonumber(fibaro:getValue(power_socket, "power")) < 3.0) and counter > 5 then
          fibaro:debug( os.date("Trockner ist fertig am %d.%m.%Y um %R:%S."))
          local power3 =  fibaro:getValue(power_socket, "power")
          fibaro:debug("Verbrauch (3) = "..power3.." Watt")
          fibaro:debug("Send Push")
               fibaro:sleep(5*1000)
               local EndeVerbrauch = fibaro:getValue(34, "energy");
               local EndWaschZeit = os.time();
               fibaro:debug("Der Trockner lief  "..string.format("%.2f", (EndWaschZeit - StartTrocknerZeit)/60).." Stunden. Der Verbrauch ist "..string.format("%.2f", EndeVerbrauch - StartVerbrauch).." kWh und kostet "..string.format("%.2f",(EndeVerbrauch - StartVerbrauch)*ct).." €.")   
        
    run = 0
       end 
  fibaro:sleep(1*1000)
  
end

Hallo Trixxon

Der erste teil währe gut gewesen, den zweiten teil habe ich dir verschoben etwas weiter oben im Code um sicher zu gehen das die Variablen auch befühlt werden.
Ich meine das sie lehr geblieben sind und nicht damit rechnen konnte oder die Definition als tonumber …StartVerbrauch = tonumber(fibaro:getValue(34, "energy"));

Das einlesen der kWh und der verbrauch von wenigen Watt bei einem Waschvorgang wird dir kaum befriedigende werte liefern.

Aber spas macht es.
Probiere.

--[[
%% properties
34 power
%% globals
--]]
 
local power_socket = 34 -- wallplug
local powerlive = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch = "..powerlive.." Watt")

local StartTrocknerZeit
local StartVerbrauch
local EndeVerbrauch
local EndWaschZeit
local ct = 22.41 --ct/kWh

 
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")) > 40 ) and run == 0 then
  local start = (os.time())
  fibaro:debug("Trockner läuft...")
  StartTrocknerZeit = os.time()
  StartVerbrauch = tonumber(fibaro:getValue(34, "energy"));
  fibaro:debug("Verbrauch = "..power.." Watt")
  run = 1
end
 
while run == 1 do
 
if (tonumber(fibaro:getValue(power_socket, "power")) < 3) then
     counter = counter + 1
    local power2 = fibaro:getValue(power_socket, "power")
        fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
	EndeVerbrauch = tonumber(fibaro:getValue(34, "energy"));
    EndWaschZeit = os.time();
    end
      if (tonumber(fibaro:getValue(power_socket, "power")) > 3 ) then
       counter = 0
      end
       if (tonumber(fibaro:getValue(power_socket, "power")) < 3.0) and counter > 5 then
          fibaro:debug( os.date("Trockner ist fertig am %d.%m.%Y um %R:%S."))
          local power3 =  fibaro:getValue(power_socket, "power")
          fibaro:debug("Verbrauch (3) = "..power3.." Watt")
          fibaro:debug("Send Push")
		  
               fibaro:debug("Der Trockner lief  "..string.format("%.2f", (EndWaschZeit - StartTrocknerZeit)/60).." Stunden. Der Verbrauch ist "..string.format("%.2f", EndeVerbrauch - StartVerbrauch).." kWh und kostet "..string.format("%.2f",(EndeVerbrauch - StartVerbrauch)*ct).." €.")   
               fibaro:sleep(5*1000)        
    run = 0
       end 
  fibaro:sleep(1*1000)
  
end

Hallo Trixxon

Habe eine Funktion die Sekunden in stunden umwandelt eingebaut da die zeit nicht richtig berechnet wurde.

Probiere


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

--[[
%% properties
34 power
%% globals
--]]
 
local power_socket = 34 -- wallplug
local powerlive = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch = "..powerlive.." Watt")

local StartTrocknerZeit
local StartVerbrauch
local EndeVerbrauch
local EndWaschZeit
local ct = 22.41 --ct/kWh

 
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

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
 
if ( tonumber(fibaro:getValue(power_socket, "power")) > 40 ) and run == 0 then
  local start = (os.time())
  fibaro:debug("Trockner läuft...")
  StartTrocknerZeit = os.time()
  StartVerbrauch = tonumber(fibaro:getValue(34, "energy"));
  fibaro:debug("Verbrauch = "..power.." Watt")
  run = 1
end
 
while run == 1 do
 
if (tonumber(fibaro:getValue(power_socket, "power")) < 3) then
     counter = counter + 1
    local power2 = fibaro:getValue(power_socket, "power")
        fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
	EndeVerbrauch = tonumber(fibaro:getValue(34, "energy"));
    EndWaschZeit = os.time();
    end
      if (tonumber(fibaro:getValue(power_socket, "power")) > 3 ) then
       counter = 0
      end
       if (tonumber(fibaro:getValue(power_socket, "power")) < 3.0) and counter > 5 then
          fibaro:debug( os.date("Trockner ist fertig am %d.%m.%Y um %R:%S."))
          local power3 =  fibaro:getValue(power_socket, "power")
          fibaro:debug("Verbrauch (3) = "..power3.." Watt")
          fibaro:debug("Send Push")
				fibaro:debug("Der Trockner lief  "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", EndeVerbrauch - StartVerbrauch).." kWh und kostet "..string.format("%.2f",(EndeVerbrauch - StartVerbrauch)*ct).." €.")   
				fibaro:sleep(5*1000)        
    run = 0
       end 
  fibaro:sleep(1*1000)
  
end

@parip69, hat funktioniert. Welche Zeit muss eigentlich vergehen, das am Ende Verbrauch und die Kosten angezeigt werden. Habe dies mal ca. 40 sec getestet und hier kam dann 0,00kw und 0,00 Euro.

Könnte man dies auch schon im Sekundenbereich auswerten? Macht zwar keinen Sinn, wie du schon sagtest, aber irgendwie doch Spaß.

Hallo Trixxon

Ich hatte gerade geschrieben das es verschwindend gering sein wird, 40s test mit einem verbrauch von 20 Watt so viel kann es nicht sein damit er rechnen kann. Die werte die man bekommt vom “wallplug” sind mit einer Auflösung von 2 decimal stellen und das bedeutet das man mindestens 10 Watt verbrauchen muss damit Du was rechnen kannst.

Mann müste die energie anders erfassen.

Viele spass

Hallo Trixxon

Habe mehrere tage gebraucht um eine anständige Lösung zu suchen.
Jetzt mist man auf die Sekunde genau und muss nicht mehr aufpassen mit dem befüllen der verbrauch Variablen die braucht man nicht mehr.
Durch die “function energyverbrauch();” die ich eingebaut habe mist er anhand der Timestamp StartTrocknerZeit = os.time() und dem EndWaschZeit = os.time();
Die ja schon vorhanden sind.


--[[
%% properties
34 power
%% globals
--]]
 
local power_socket = 34 -- wallplug
local powerlive = fibaro:getValue(power_socket, "power")
fibaro:debug("Verbrauch = "..powerlive.." Watt")

local StartTrocknerZeit
local EndWaschZeit
local ct = 22.41 --ct/kWh

 
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

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

function energyverbrauch();
  	local jsonListe = api.get("/energy/"..StartWaschZeit.."/"..EndWaschZeit.."/compare/devices/power/"..power_socket);
    for k, v in pairs(jsonListe) do
    local energykWh = json.decode(v.kWh)
      return energykWh
    end
end 
 
if ( tonumber(fibaro:getValue(power_socket, "power")) > 40 ) and run == 0 then
  local start = (os.time())
  fibaro:debug("Trockner läuft...")
  StartTrocknerZeit = os.time()
  fibaro:debug("Verbrauch = "..power.." Watt")
  run = 1
end
 
while run == 1 do
 
if (tonumber(fibaro:getValue(power_socket, "power")) < 3) then
     counter = counter + 1
    local power2 = fibaro:getValue(power_socket, "power")
        fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
    EndWaschZeit = os.time();
    end
      if (tonumber(fibaro:getValue(power_socket, "power")) > 3 ) then
       counter = 0
      end
       if (tonumber(fibaro:getValue(power_socket, "power")) < 3.0) and counter > 5 then
          fibaro:debug( os.date("Trockner ist fertig am %d.%m.%Y um %R:%S."))
          local power3 =  fibaro:getValue(power_socket, "power")
          fibaro:debug("Verbrauch (3) = "..power3.." Watt")
          fibaro:debug("Send Push")
				fibaro:debug("Der Trockner lief  "..convertTime(EndWaschZeit - StartWaschZeit).." Stunden. Der Verbrauch ist "..string.format("%.2f", energyverbrauch()).." kWh und kostet "..string.format("%.2f", energyverbrauch()*ct/100).." €")   
    			fibaro:sleep(5*1000)        
    run = 0
       end 
  fibaro:sleep(1*1000)
  
end

viel spass.

Hallo parip69, wir nähern uns langsam der Zielgerade.

In Zeile 12 und 45 steht noch fälschlicher Weise StartTrocknerZeit anstatt StartWaschZeit. ( Hatte ich mal angepasst)

Habe dies geändert und es kam folgendes Ergebniss raus. Habe genau 1 Minute gestoppte Zeit den Trockner laufen lassen.

Ergebniss in der Debug Zeile: Der Trockner lief 0:1:8 Stunden. Der Verbrauch ist 0.03 KWh und kostet 0.01 Euro

Ich habe auch rausgefunden wo diese 8 sek herrühren, je nachdem wie hoch der Counter eingestellt ist. Hier ja 5 sec und dann kommt noch die Zeit bis er erkennt, das der Trockner läuft, macht die 8 sek unterschied. Man könnte jetzt diese Zeiten noch mit rausrechnen, dann würde die Sache noch präziser oder? Lustig, und macht Spaß.

Aber ich denke mal trotzdem Du darfst Dir auf meine kosten ein Bier aufmachen, Du hast es Dir verdient. :slight_smile:

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