Wir haben in unserem ersten Artikel zur smarten Waschmaschine bereits beschrieben, wie wir uns über das Ende des Waschvorgangs über eine notification informieren lassen können. Bestandteil des Scripts ist die Berechnung des tatsächlichen Verbrauchs der Waschmaschine oder des Trockners. Zuletzt war die Berechnung recht komplex, da wir jede an übertragene Änderungen der gemessenen Leistung am Shelly 1pm erfassen und in zeitlichen Bezug setzen mussten.

Blockly Waschmaschine mit shelly 1pm

Blockly Waschmaschine mit shelly 1pm

In einem der letzten Firmware-Updates des Shelly 1pm wurde allerdings eingeführt, dass der absolute Energieverbrauch des Shelly 1pm in kWh gespeichert wird. Dies hat den Vorteil, dass wir lediglich bei Start und Ende die Differenz ermitteln müssen und somit direkt den tatsächlichen Verbrauch der Buntwäsche in 60°C ermitteln können.

SHELLY WLAN-Schaltaktor Plus 2PM, 2x 10 A, Bluetooth, 3 Stück
Preis: 79,99 € (26,66 € / stück)
Sie sparen: 6,81 € (8%)
3 neu von 79,99 € (26,66 € / stück)0 gebraucht
  • 2-Kanalschalter mit Messfunktion, 2x10 A
  • Verbindung über Ihr WLAN-Netzwerk, kein HUB erforderlich
  • Bluetooth-Verbindung über Shelly Cloud App
  • Steuerung der Abdeckung (Walze)
  • Leistungsmessung mit Datenspeicherung

Die Logik der Ermittlung, ob die Maschine fertig ist bleibt gleich:

  1. Wir prüfen, ob der Leistungsbezug der Maschine über einen Schwellwert steigt
  2. Solange die Leistung über diesem initialen Schwellwert liegt, wissen wir, dass die Maschine läuft
  3. Sinkt der Wert unter einen Leistungswert, der nur im Ruhezustand/Standby verbraucht wird, können wir erkennen, dass die Maschine eventuell fertig ist
  4. Leider kann es sein, dass es im Wasch-/Trockenprogramm Phasen mit geringen Stromverbrauch gibt, deswegen lassen wir im dritten Schritt einen Timer laufen, nach dessen Abschluss das Ende notifiziert wird
  5. Steigt während des Timers zwischendurch die Leistung der Maschine wieder über den Standby-Schwellenwert, löschen wir den Timer und das Script befindet sich im zweiten Schritt der Logik.
  6. Erst nach vollständigem Ablauf des Timers können wir sicher die Benachrichtigung über das Ende senden

Viel einfacher wird es mit Geräten, die sich nach Ablauf des Vorgangs vollständig ausschalten und der Strombedarf auf 0 Watt sinkt. In diesem Fall gilt ledliglich die Regel, wenn wir gemessen haben, dass die Maschine angeschaltet wurde, warte bis der Wert wieder auf 0 Watt fällt und sende die Benachrichtigung über das Ende.

Blockly-Export

<xml xmlns="https://developers.google.com/blockly/xml">
  <variables>
    <variable id="n1z{RD[A#HVTG]8!X55V">actual_power</variable>
    <variable id="SGZ1H`:rT3@9pZC1p/dc">wait_status</variable>
    <variable id="O%z-ZR5AF}I=)hIt`vhx">won</variable>
    <variable id=")g$SO)J%^HoLN3|sYMiy">standby_power</variable>
    <variable id="Z=o);0Ep2ZL/+[9Ia):p">on_power</variable>
    <variable type="timeout" id="ausschalten">ausschalten</variable>
  </variables>
  <block type="create" id="^2Rg-q.1Ed^~t`cgEo,X" x="46" y="-709">
    <field name="NAME">BS32.Waschmaschine.ON</field>
    <value name="VALUE">
      <block type="logic_boolean" id="wvF4-g`2vkKhnhsDn[i1">
        <field name="BOOL">FALSE</field>
      </block>
    </value>
    <next>
      <block type="create" id="}!WF{?AklaNk[sat13Yc">
        <field name="NAME">BS32.Waschmaschine.verbrauch</field>
        <value name="VALUE">
          <block type="math_number" id="en8^em$5WE#eZ4J?C_^3">
            <field name="NUM">0</field>
          </block>
        </value>
        <next>
          <block type="create" id="kr8e!^;dw71|`+1*9Cv%">
            <field name="NAME">BS32.Waschmaschine.wait_status</field>
            <value name="VALUE">
              <block type="logic_boolean" id="1vdh}BlPp5CW8Gq0=_94">
                <field name="BOOL">FALSE</field>
              </block>
            </value>
            <next>
              <block type="create" id="(0:fK2#.Ea}MNeUvn?/{">
                <field name="NAME">BS32.Waschmaschine.power_start</field>
                <value name="VALUE">
                  <block type="math_number" id="j?lK5R8si7^hWd6A#~8t">
                    <field name="NUM">0</field>
                  </block>
                </value>
                <next>
                  <block type="on" id="KqJdA_zOB)2fbog)!N1)">
                    <field name="OID">shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Power</field>
                    <field name="CONDITION">ne</field>
                    <field name="ACK_CONDITION"></field>
                    <statement name="STATEMENT">
                      <block type="debug" id="H|d!a]26CSjJ!xIY(w=[" disabled="true">
                        <field name="Severity">log</field>
                        <value name="TEXT">
                          <shadow type="text">
                            <field name="TEXT">test</field>
                          </shadow>
                          <block type="text_join" id="eh!`ju5X(Bs/CvKM|R/*">
                            <mutation items="2"></mutation>
                            <value name="ADD0">
                              <block type="text" id="v5kenIbkS_Ac%|@G^TmV">
                                <field name="TEXT">actual power: </field>
                              </block>
                            </value>
                            <value name="ADD1">
                              <block type="variables_get" id="/5%vG/e~YOK0}KvmKyl/">
                                <field name="VAR" id="n1z{RD[A#HVTG]8!X55V">actual_power</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <next>
                          <block type="debug" id="M9M.sd~;3W,vs$/lWayy" disabled="true">
                            <field name="Severity">log</field>
                            <value name="TEXT">
                              <shadow type="text">
                                <field name="TEXT">test</field>
                              </shadow>
                              <block type="text_join" id="JA)6[sNxgp{3@}X$?^ZV">
                                <mutation items="2"></mutation>
                                <value name="ADD0">
                                  <block type="text" id="G]-_{6C.cPW0v)i({EKs">
                                    <field name="TEXT">wait: </field>
                                  </block>
                                </value>
                                <value name="ADD1">
                                  <block type="variables_get" id="/[cSr4;uIg1*5jq%ee(h">
                                    <field name="VAR" id="SGZ1H`:rT3@9pZC1p/dc">wait_status</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <next>
                              <block type="debug" id="zL@`_~W:X|IQp=Ec,s+-" disabled="true">
                                <field name="Severity">log</field>
                                <value name="TEXT">
                                  <shadow type="text">
                                    <field name="TEXT">test</field>
                                  </shadow>
                                  <block type="text_join" id="CX{U?0bVPhc9Yvg(~TES">
                                    <mutation items="2"></mutation>
                                    <value name="ADD0">
                                      <block type="text" id="#B%J;@$yPEWYWU%Gpg(=">
                                        <field name="TEXT">won: </field>
                                      </block>
                                    </value>
                                    <value name="ADD1">
                                      <block type="variables_get" id="HdB.cTg$E2~bEnIF]?t6">
                                        <field name="VAR" id="O%z-ZR5AF}I=)hIt`vhx">won</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <next>
                                  <block type="debug" id="~b6gv``]-~v.s$1M,8jp" disabled="true">
                                    <field name="Severity">log</field>
                                    <value name="TEXT">
                                      <shadow type="text">
                                        <field name="TEXT">test</field>
                                      </shadow>
                                      <block type="text_join" id="+^D{!rEbqSlT:39#(CO?">
                                        <mutation items="2"></mutation>
                                        <value name="ADD0">
                                          <block type="text" id="q0{_S*d**]{{%]FwTXvd">
                                            <field name="TEXT">verbrauch: </field>
                                          </block>
                                        </value>
                                        <value name="ADD1">
                                          <block type="get_value" id="oJ$*?IEuHRB.j!-O,1O9">
                                            <field name="ATTR">val</field>
                                            <field name="OID">javascript.0.BS32.Waschmaschine.verbrauch</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="variables_set" id="o?yLT0R6D^=K2iPigdUA">
                                        <field name="VAR" id="n1z{RD[A#HVTG]8!X55V">actual_power</field>
                                        <value name="VALUE">
                                          <block type="get_value" id="dUVqiU]{{P$0^-^Ay}J_">
                                            <field name="ATTR">val</field>
                                            <field name="OID">shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Power</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="variables_set" id="o/;o?[l.ch[H3/W]@wVx">
                                            <field name="VAR" id=")g$SO)J%^HoLN3|sYMiy">standby_power</field>
                                            <value name="VALUE">
                                              <block type="math_number" id="26x)Sf%n^,BlU,r$y}J^">
                                                <field name="NUM">3.5</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="variables_set" id="biH}+twiCi-Sk()X!~@#">
                                                <field name="VAR" id="Z=o);0Ep2ZL/+[9Ia):p">on_power</field>
                                                <value name="VALUE">
                                                  <block type="math_number" id="u*{vpjUJ5=#2!U!W4my-">
                                                    <field name="NUM">10</field>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="variables_set" id="dYW~4eL^}iW/;}l#}vgE">
                                                    <field name="VAR" id="O%z-ZR5AF}I=)hIt`vhx">won</field>
                                                    <value name="VALUE">
                                                      <block type="get_value" id="J4vY[GP)e?Mx[R]CBsyv">
                                                        <field name="ATTR">val</field>
                                                        <field name="OID">javascript.0.BS32.Waschmaschine.ON</field>
                                                      </block>
                                                    </value>
                                                    <next>
                                                      <block type="variables_set" id="keP0-d_K8fL8UGJ/|.pL">
                                                        <field name="VAR" id="SGZ1H`:rT3@9pZC1p/dc">wait_status</field>
                                                        <value name="VALUE">
                                                          <block type="get_value" id=";E(WNE#]eF`dHwYS~`%:">
                                                            <field name="ATTR">val</field>
                                                            <field name="OID">javascript.0.BS32.Waschmaschine.wait_status</field>
                                                          </block>
                                                        </value>
                                                        <next>
                                                          <block type="controls_if" id="*TsQ9Te-vsxc.R~;MIJg">
                                                            <mutation elseif="3"></mutation>
                                                            <value name="IF0">
                                                              <block type="logic_operation" id="MQ-3sh@QmtJf9)muV84i">
                                                                <field name="OP">AND</field>
                                                                <value name="A">
                                                                  <block type="logic_compare" id="ZP,|~/ZLYb5i?e4g-fHy">
                                                                    <field name="OP">EQ</field>
                                                                    <value name="A">
                                                                      <block type="variables_get" id="Ky1kt^qsYkz//}I;UH/M">
                                                                        <field name="VAR" id="O%z-ZR5AF}I=)hIt`vhx">won</field>
                                                                      </block>
                                                                    </value>
                                                                    <value name="B">
                                                                      <block type="logic_boolean" id="pg*c=%`Xk!O![`!j}6np">
                                                                        <field name="BOOL">FALSE</field>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                                <value name="B">
                                                                  <block type="logic_compare" id="r__we4H6Y[,)Pxsz=N%x">
                                                                    <field name="OP">GT</field>
                                                                    <value name="A">
                                                                      <block type="variables_get" id="+UGMoha9kLIvOL7tmPPD">
                                                                        <field name="VAR" id="n1z{RD[A#HVTG]8!X55V">actual_power</field>
                                                                      </block>
                                                                    </value>
                                                                    <value name="B">
                                                                      <block type="variables_get" id="l![`T=dTh#hq+/TNYQpZ">
                                                                        <field name="VAR" id=")g$SO)J%^HoLN3|sYMiy">standby_power</field>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <statement name="DO0">
                                                              <block type="comment" id="+s{6@[3Nc${L.Gm,8M)}">
                                                                <field name="COMMENT">Start, WON ist aus und Power größer Start-Power</field>
                                                                <next>
                                                                  <block type="debug" id="yc2WB+O5L./5l7AY9e#$">
                                                                    <field name="Severity">log</field>
                                                                    <value name="TEXT">
                                                                      <shadow type="text" id="{:T5F7`}S.$,S`w(zZK1">
                                                                        <field name="TEXT">test</field>
                                                                      </shadow>
                                                                      <block type="text" id="BYgP#cg4^@+wF@gZnJg#">
                                                                        <field name="TEXT">WM: einschalten</field>
                                                                      </block>
                                                                    </value>
                                                                    <next>
                                                                      <block type="update" id="])RM0j-$t#8dON`$:?~N">
                                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                        <field name="OID">javascript.0.BS32.Waschmaschine.ON</field>
                                                                        <field name="WITH_DELAY">FALSE</field>
                                                                        <value name="VALUE">
                                                                          <block type="logic_boolean" id=":?N.q*(x^q$*/11Ew%n,">
                                                                            <field name="BOOL">TRUE</field>
                                                                          </block>
                                                                        </value>
                                                                        <next>
                                                                          <block type="update" id="!JeiJ%7(a;(D#GL/G8W$">
                                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                            <field name="OID">javascript.0.BS32.Waschmaschine.wait_status</field>
                                                                            <field name="WITH_DELAY">FALSE</field>
                                                                            <value name="VALUE">
                                                                              <block type="logic_boolean" id="V%P0tl5u[8nNZvoiXu:d">
                                                                                <field name="BOOL">FALSE</field>
                                                                              </block>
                                                                            </value>
                                                                            <next>
                                                                              <block type="update" id="$uB(y5JWR]IH|Z#@Vqx2">
                                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                <field name="OID">javascript.0.BS32.Waschmaschine.power_start</field>
                                                                                <field name="WITH_DELAY">FALSE</field>
                                                                                <value name="VALUE">
                                                                                  <block type="get_value" id="miDE1w$UqN9HOQf/$LUG">
                                                                                    <field name="ATTR">val</field>
                                                                                    <field name="OID">shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Energy</field>
                                                                                  </block>
                                                                                </value>
                                                                                <next>
                                                                                  <block type="update" id="$g{SdgR7dI1h_M-[RP[c">
                                                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                    <field name="OID">javascript.0.BS32.Waschmaschine.verbrauch</field>
                                                                                    <field name="WITH_DELAY">FALSE</field>
                                                                                    <value name="VALUE">
                                                                                      <block type="math_number" id="B$kYAu60[9{xsj$D@HHo">
                                                                                        <field name="NUM">0</field>
                                                                                      </block>
                                                                                    </value>
                                                                                  </block>
                                                                                </next>
                                                                              </block>
                                                                            </next>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </statement>
                                                            <value name="IF1">
                                                              <block type="logic_operation" id="k:kZrrhU+{1wx#L5#w@L">
                                                                <field name="OP">AND</field>
                                                                <value name="A">
                                                                  <block type="logic_compare" id="671.iRrzN^EH3Xj14!8)">
                                                                    <field name="OP">EQ</field>
                                                                    <value name="A">
                                                                      <block type="variables_get" id="fcFyu-/XW.^IV@JbswUx">
                                                                        <field name="VAR" id="O%z-ZR5AF}I=)hIt`vhx">won</field>
                                                                      </block>
                                                                    </value>
                                                                    <value name="B">
                                                                      <block type="logic_boolean" id="7I$k~cIe]A(`|vTS(=F9">
                                                                        <field name="BOOL">TRUE</field>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                                <value name="B">
                                                                  <block type="logic_operation" id="w#jlI|Jfef_sdS37H/)g">
                                                                    <field name="OP">AND</field>
                                                                    <value name="A">
                                                                      <block type="logic_compare" id="PX1OQR$wBmEe{+4wg-3T">
                                                                        <field name="OP">EQ</field>
                                                                        <value name="A">
                                                                          <block type="variables_get" id=".S^nWZBJR|GzLbQ`O#`D">
                                                                            <field name="VAR" id="SGZ1H`:rT3@9pZC1p/dc">wait_status</field>
                                                                          </block>
                                                                        </value>
                                                                        <value name="B">
                                                                          <block type="logic_boolean" id="Fy-:lLqOtd-DL^1_AN`j">
                                                                            <field name="BOOL">FALSE</field>
                                                                          </block>
                                                                        </value>
                                                                      </block>
                                                                    </value>
                                                                    <value name="B">
                                                                      <block type="logic_compare" id="Bc@%|gCH3+PO([%L;!0r">
                                                                        <field name="OP">LT</field>
                                                                        <value name="A">
                                                                          <block type="variables_get" id="[+An*vhjxH/TkiTt|wPw">
                                                                            <field name="VAR" id="n1z{RD[A#HVTG]8!X55V">actual_power</field>
                                                                          </block>
                                                                        </value>
                                                                        <value name="B">
                                                                          <block type="variables_get" id="`+}}B}V!Hpzt%Ui0r9Hm">
                                                                            <field name="VAR" id=")g$SO)J%^HoLN3|sYMiy">standby_power</field>
                                                                          </block>
                                                                        </value>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <statement name="DO1">
                                                              <block type="comment" id="=+WfUrDNSM_{_G%#01K~">
                                                                <field name="COMMENT">WON ist an und wait ist false und Power &lt; standby</field>
                                                                <next>
                                                                  <block type="debug" id="c!|VS7nkQ*Q;Jz3H2HPV">
                                                                    <field name="Severity">log</field>
                                                                    <value name="TEXT">
                                                                      <shadow type="text">
                                                                        <field name="TEXT">test</field>
                                                                      </shadow>
                                                                      <block type="text" id=";]zY[PGUZ:ddAIt}~^(?">
                                                                        <field name="TEXT">WM: power &lt; standby, timer startet</field>
                                                                      </block>
                                                                    </value>
                                                                    <next>
                                                                      <block type="update" id="^S{E:6Q3E:cOXLl]xdz*">
                                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                        <field name="OID">javascript.0.BS32.Waschmaschine.wait_status</field>
                                                                        <field name="WITH_DELAY">FALSE</field>
                                                                        <value name="VALUE">
                                                                          <block type="logic_boolean" id="50I2I=S`m6~.KE}/un#M">
                                                                            <field name="BOOL">TRUE</field>
                                                                          </block>
                                                                        </value>
                                                                        <next>
                                                                          <block type="timeouts_settimeout" id="[-$lT^GVp1*PaU1X3P3W">
                                                                            <field name="NAME">ausschalten</field>
                                                                            <field name="DELAY">20</field>
                                                                            <field name="UNIT">min</field>
                                                                            <statement name="STATEMENT">
                                                                              <block type="debug" id="}WD3(miU]BP:,77782w^">
                                                                                <field name="Severity">log</field>
                                                                                <value name="TEXT">
                                                                                  <shadow type="text">
                                                                                    <field name="TEXT">test</field>
                                                                                  </shadow>
                                                                                  <block type="text" id=".lEr:[EP[q@Z9h1k!y^t">
                                                                                    <field name="TEXT">WM: Ende, setze AUS</field>
                                                                                  </block>
                                                                                </value>
                                                                                <next>
                                                                                  <block type="update" id="sdJ-yYw*{IveisAr9B6P">
                                                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                    <field name="OID">javascript.0.BS32.Waschmaschine.ON</field>
                                                                                    <field name="WITH_DELAY">FALSE</field>
                                                                                    <value name="VALUE">
                                                                                      <block type="logic_boolean" id="y(khG6h0$k]nm+W.e$2t">
                                                                                        <field name="BOOL">FALSE</field>
                                                                                      </block>
                                                                                    </value>
                                                                                    <next>
                                                                                      <block type="update" id="nIibe/wunC6g#R]^E;=Z">
                                                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                        <field name="OID">javascript.0.BS32.Waschmaschine.wait_status</field>
                                                                                        <field name="WITH_DELAY">FALSE</field>
                                                                                        <value name="VALUE">
                                                                                          <block type="logic_boolean" id="aVp-K:t?Rp`??rPkHybD">
                                                                                            <field name="BOOL">FALSE</field>
                                                                                          </block>
                                                                                        </value>
                                                                                        <next>
                                                                                          <block type="update" id="i]^viZ6]~FE$[E-Gcj/k">
                                                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                            <field name="OID">javascript.0.BS32.Waschmaschine.verbrauch</field>
                                                                                            <field name="WITH_DELAY">FALSE</field>
                                                                                            <value name="VALUE">
                                                                                              <block type="math_rndfixed" id="u*+BP=:Iy9@qr@NMq8if">
                                                                                                <field name="n">1</field>
                                                                                                <value name="x">
                                                                                                  <shadow type="math_number" id="flLf-K-B}/mg0/bI-UDW">
                                                                                                    <field name="NUM">3.1234</field>
                                                                                                  </shadow>
                                                                                                  <block type="math_arithmetic" id="1+O(m[I]i,.^-kX}l4q2">
                                                                                                    <field name="OP">MINUS</field>
                                                                                                    <value name="A">
                                                                                                      <shadow type="math_number" id="O~zSUcvuwmRuyeI*gK;Z">
                                                                                                        <field name="NUM">1</field>
                                                                                                      </shadow>
                                                                                                      <block type="get_value" id="*elD-U){/gNR,8#=dV_5">
                                                                                                        <field name="ATTR">val</field>
                                                                                                        <field name="OID">shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Energy</field>
                                                                                                      </block>
                                                                                                    </value>
                                                                                                    <value name="B">
                                                                                                      <shadow type="math_number" id="|m|_K)owfP90LK0*heYe">
                                                                                                        <field name="NUM">1</field>
                                                                                                      </shadow>
                                                                                                      <block type="get_value" id="*_Bq=FP!dSmZX4VB?yvi">
                                                                                                        <field name="ATTR">val</field>
                                                                                                        <field name="OID">javascript.0.BS32.Waschmaschine.power_start</field>
                                                                                                      </block>
                                                                                                    </value>
                                                                                                  </block>
                                                                                                </value>
                                                                                              </block>
                                                                                            </value>
                                                                                          </block>
                                                                                        </next>
                                                                                      </block>
                                                                                    </next>
                                                                                  </block>
                                                                                </next>
                                                                              </block>
                                                                            </statement>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </statement>
                                                            <value name="IF2">
                                                              <block type="logic_operation" id="]Jyn,?1j:c(xM^+;;*8]">
                                                                <field name="OP">AND</field>
                                                                <value name="A">
                                                                  <block type="logic_compare" id="vmcQSuAc4FD^%R|Lm,Ob">
                                                                    <field name="OP">EQ</field>
                                                                    <value name="A">
                                                                      <block type="variables_get" id="[{e/|hN$2FT#6cY6%mVG">
                                                                        <field name="VAR" id="O%z-ZR5AF}I=)hIt`vhx">won</field>
                                                                      </block>
                                                                    </value>
                                                                    <value name="B">
                                                                      <block type="logic_boolean" id="^CPttO!TlTo%gZ?SHUgr">
                                                                        <field name="BOOL">TRUE</field>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                                <value name="B">
                                                                  <block type="logic_operation" id="%oRl-?u)V;ijCiKMlgBn">
                                                                    <field name="OP">AND</field>
                                                                    <value name="A">
                                                                      <block type="logic_compare" id=";vBzfldWgMdsgzzPznB?">
                                                                        <field name="OP">EQ</field>
                                                                        <value name="A">
                                                                          <block type="variables_get" id="|x+w[I]=Bnq;N5mQ-y#@">
                                                                            <field name="VAR" id="SGZ1H`:rT3@9pZC1p/dc">wait_status</field>
                                                                          </block>
                                                                        </value>
                                                                        <value name="B">
                                                                          <block type="logic_boolean" id="z02Kl|ip!CV^BQ6`~G##">
                                                                            <field name="BOOL">TRUE</field>
                                                                          </block>
                                                                        </value>
                                                                      </block>
                                                                    </value>
                                                                    <value name="B">
                                                                      <block type="logic_compare" id="z5|b|TkpdWWAnbKhYJd8">
                                                                        <field name="OP">GT</field>
                                                                        <value name="A">
                                                                          <block type="variables_get" id="bJ]gRx:IyJp@TSs8/4-)">
                                                                            <field name="VAR" id="n1z{RD[A#HVTG]8!X55V">actual_power</field>
                                                                          </block>
                                                                        </value>
                                                                        <value name="B">
                                                                          <block type="variables_get" id="UdP8qH}Zg/+9wOW.K9%B">
                                                                            <field name="VAR" id=")g$SO)J%^HoLN3|sYMiy">standby_power</field>
                                                                          </block>
                                                                        </value>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <statement name="DO2">
                                                              <block type="comment" id="0#o1Ts2Ou?EAp};KbB=2">
                                                                <field name="COMMENT">WON ist an, wait ist true und Power größer standby</field>
                                                                <next>
                                                                  <block type="debug" id="G[QB9iw/:~hJzVlna!k6">
                                                                    <field name="Severity">log</field>
                                                                    <value name="TEXT">
                                                                      <shadow type="text">
                                                                        <field name="TEXT">test</field>
                                                                      </shadow>
                                                                      <block type="text" id="L+fk.CK{J1m45yh|PF{z">
                                                                        <field name="TEXT">WM: power &gt;  standby, lösche timer</field>
                                                                      </block>
                                                                    </value>
                                                                    <next>
                                                                      <block type="timeouts_cleartimeout" id="P0;)rGIr+EyM;Gp0cIcn">
                                                                        <field name="NAME">ausschalten</field>
                                                                        <next>
                                                                          <block type="update" id="qq;uA)eI9+cx6,tSY]B8">
                                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                            <field name="OID">javascript.0.BS32.Waschmaschine.wait_status</field>
                                                                            <field name="WITH_DELAY">FALSE</field>
                                                                            <value name="VALUE">
                                                                              <block type="logic_boolean" id=";%H42%@?-AB+V|xWL.C#">
                                                                                <field name="BOOL">FALSE</field>
                                                                              </block>
                                                                            </value>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </statement>
                                                            <value name="IF3">
                                                              <block type="logic_operation" id="t=*a_VeW`A*(!/L5F_JC">
                                                                <field name="OP">AND</field>
                                                                <value name="A">
                                                                  <block type="logic_compare" id="z(d7;fZ|_M_My|Mt|p~$">
                                                                    <field name="OP">EQ</field>
                                                                    <value name="A">
                                                                      <block type="variables_get" id="FiC?bU/G?N.Z~.k]:QZP">
                                                                        <field name="VAR" id="O%z-ZR5AF}I=)hIt`vhx">won</field>
                                                                      </block>
                                                                    </value>
                                                                    <value name="B">
                                                                      <block type="logic_boolean" id="/r{|;oSerVvG8$tFcCOx">
                                                                        <field name="BOOL">TRUE</field>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                                <value name="B">
                                                                  <block type="logic_operation" id="y1c!HU;%HdG:l-hiqMlJ">
                                                                    <field name="OP">AND</field>
                                                                    <value name="A">
                                                                      <block type="logic_compare" id="8w*x9xcly^hgLz2%}/qO">
                                                                        <field name="OP">EQ</field>
                                                                        <value name="A">
                                                                          <block type="variables_get" id="yPx|~ejP3n%Q%`vCC0Z3">
                                                                            <field name="VAR" id="SGZ1H`:rT3@9pZC1p/dc">wait_status</field>
                                                                          </block>
                                                                        </value>
                                                                        <value name="B">
                                                                          <block type="logic_boolean" id="rM]i!p[xs!@(hk|lE5AD">
                                                                            <field name="BOOL">FALSE</field>
                                                                          </block>
                                                                        </value>
                                                                      </block>
                                                                    </value>
                                                                    <value name="B">
                                                                      <block type="logic_compare" id="v[cH!_}[LV[YilYj4aeY">
                                                                        <field name="OP">GT</field>
                                                                        <value name="A">
                                                                          <block type="variables_get" id="m2U{yNUCOjLo#n,]=M)V">
                                                                            <field name="VAR" id="n1z{RD[A#HVTG]8!X55V">actual_power</field>
                                                                          </block>
                                                                        </value>
                                                                        <value name="B">
                                                                          <block type="variables_get" id="]pa},6U5pVr|vt.S4{7V">
                                                                            <field name="VAR" id=")g$SO)J%^HoLN3|sYMiy">standby_power</field>
                                                                          </block>
                                                                        </value>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <statement name="DO3">
                                                              <block type="comment" id="?r`uZ,l)yvA!D-3~F2cL">
                                                                <field name="COMMENT">WON ist an, wait ist false und Power größer onpower</field>
                                                                <next>
                                                                  <block type="debug" id="9tL~]$-[Oe/UUdXx(0~k" disabled="true">
                                                                    <field name="Severity">log</field>
                                                                    <value name="TEXT">
                                                                      <shadow type="text">
                                                                        <field name="TEXT">test</field>
                                                                      </shadow>
                                                                      <block type="text" id="Fa|VNrW[A54BCBD(]qp8">
                                                                        <field name="TEXT">WM: power &gt;  standby, WM läuft, aktueller Verbrauch:</field>
                                                                      </block>
                                                                    </value>
                                                                    <next>
                                                                      <block type="debug" id="uhw2QNF@X{}M/H0HHRTc" disabled="true">
                                                                        <field name="Severity">log</field>
                                                                        <value name="TEXT">
                                                                          <shadow type="text">
                                                                            <field name="TEXT">test</field>
                                                                          </shadow>
                                                                          <block type="math_rndfixed" id=".)Q(p!sT@*9^ny+{NT+;">
                                                                            <field name="n">1</field>
                                                                            <value name="x">
                                                                              <shadow type="math_number">
                                                                                <field name="NUM">3.1234</field>
                                                                              </shadow>
                                                                              <block type="math_arithmetic" id="^8WPA$TDL;7m4Vv#2{)5">
                                                                                <field name="OP">MINUS</field>
                                                                                <value name="A">
                                                                                  <shadow type="math_number" id="aZ93]6k][TeTJ@B-x,n0">
                                                                                    <field name="NUM">1</field>
                                                                                  </shadow>
                                                                                  <block type="get_value" id="5PmRP44(DTb5GM6x/U6u">
                                                                                    <field name="ATTR">val</field>
                                                                                    <field name="OID">shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Energy</field>
                                                                                  </block>
                                                                                </value>
                                                                                <value name="B">
                                                                                  <shadow type="math_number">
                                                                                    <field name="NUM">1</field>
                                                                                  </shadow>
                                                                                  <block type="get_value" id="EjxhMW!l@z$ElqX*7JxK">
                                                                                    <field name="ATTR">val</field>
                                                                                    <field name="OID">javascript.0.BS32.Waschmaschine.power_start</field>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </value>
                                                                          </block>
                                                                        </value>
                                                                        <next>
                                                                          <block type="update" id="V7a.2%g0@]vFNnbE!sUd">
                                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                            <field name="OID">javascript.0.BS32.Waschmaschine.verbrauch</field>
                                                                            <field name="WITH_DELAY">FALSE</field>
                                                                            <value name="VALUE">
                                                                              <block type="math_rndfixed" id="D-NJLZ60=9KNCh!!6Fuf">
                                                                                <field name="n">1</field>
                                                                                <value name="x">
                                                                                  <shadow type="math_number">
                                                                                    <field name="NUM">3.1234</field>
                                                                                  </shadow>
                                                                                  <block type="math_arithmetic" id="]t0_{fZ:0+h1yZ]$RPJ#">
                                                                                    <field name="OP">MINUS</field>
                                                                                    <value name="A">
                                                                                      <shadow type="math_number">
                                                                                        <field name="NUM">1</field>
                                                                                      </shadow>
                                                                                      <block type="get_value" id="[j}Fn0FIh*Y4NupZ,Gr_">
                                                                                        <field name="ATTR">val</field>
                                                                                        <field name="OID">shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Energy</field>
                                                                                      </block>
                                                                                    </value>
                                                                                    <value name="B">
                                                                                      <shadow type="math_number" id="n`?-;-gJGwGQysMn1_h$">
                                                                                        <field name="NUM">1</field>
                                                                                      </shadow>
                                                                                      <block type="get_value" id="Mha^ND(ht^m:X!jFZqwa">
                                                                                        <field name="ATTR">val</field>
                                                                                        <field name="OID">javascript.0.BS32.Waschmaschine.power_start</field>
                                                                                      </block>
                                                                                    </value>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </value>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </statement>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                    <next>
                      <block type="on" id="e;nI/Udc$HRSE2=u5nAZ">
                        <field name="OID">javascript.0.BS32.Waschmaschine.ON</field>
                        <field name="CONDITION">ne</field>
                        <field name="ACK_CONDITION"></field>
                        <statement name="STATEMENT">
                          <block type="controls_if" id="0=FPz^;8Cv|r-,V-d*o*">
                            <mutation else="1"></mutation>
                            <value name="IF0">
                              <block type="logic_compare" id="9mS8`o}(`-GZ=-F`Z%2c">
                                <field name="OP">EQ</field>
                                <value name="A">
                                  <block type="get_value" id="B%Uya)mu|?y4Ufc,+R+W">
                                    <field name="ATTR">val</field>
                                    <field name="OID">javascript.0.BS32.Waschmaschine.ON</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="logic_boolean" id="}S2/;jHc,uVPrs%5G?]R">
                                    <field name="BOOL">FALSE</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="comment" id="b+__nM(,-$w3:^,;)l{x">
                                <field name="COMMENT">Wechsel ON&gt;OFF</field>
                                <next>
                                  <block type="update" id="?IKWAKlb%fF%|{:eM/Oa">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">javascript.0.BS32.Systemlog</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="text" id="FA,}j;*[E1gCXH/L?8sJ">
                                        <field name="TEXT">Waschmaschine ausgeschaltet</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="pushover" id="t:59o+x`Is_}YvzDDp~-">
                                        <field name="INSTANCE"></field>
                                        <field name="SOUND"></field>
                                        <field name="PRIORITY">0</field>
                                        <field name="LOG"></field>
                                        <value name="MESSAGE">
                                          <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                            <field name="TEXT">text</field>
                                          </shadow>
                                          <block type="text_join" id="4W!CY2kkdhbXk$^f[OS%">
                                            <mutation items="4"></mutation>
                                            <value name="ADD0">
                                              <block type="text" id="lgp6-Kmg)IP|./@*LFA;">
                                                <field name="TEXT">Die Waschmaschine ist jetzt fertig!</field>
                                              </block>
                                            </value>
                                            <value name="ADD1">
                                              <block type="text" id="K6WkbIjUE.RoS;2Fov7{">
                                                <field name="TEXT"> Verbrauch: </field>
                                              </block>
                                            </value>
                                            <value name="ADD2">
                                              <block type="math_rndfixed" id="J`#-63Bij9X*/P}`t8lx">
                                                <field name="n">1</field>
                                                <value name="x">
                                                  <shadow type="math_number">
                                                    <field name="NUM">3.1234</field>
                                                  </shadow>
                                                  <block type="get_value" id="~%q(pC5PE@a{Imm?zFmR">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">javascript.0.BS32.Waschmaschine.verbrauch</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <value name="ADD3">
                                              <block type="text" id="(r*mv@!btCH-D[j{(-=+">
                                                <field name="TEXT"> Wh</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </statement>
                            <statement name="ELSE">
                              <block type="comment" id="2=S6lD|q;r2kt78IRI|:">
                                <field name="COMMENT">Wechsel ON&gt;OFF</field>
                                <next>
                                  <block type="update" id="#IGL5LYZT7gd1UN|-Djj">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">javascript.0.BS32.Systemlog</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="text" id="]qUSmss@bb#20w#Ac1:h">
                                        <field name="TEXT">Waschmaschine eingeschaltet</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="pushover" id="SyuRtlkV=Y6y=03K0LEK">
                                        <field name="INSTANCE"></field>
                                        <field name="SOUND"></field>
                                        <field name="PRIORITY">0</field>
                                        <field name="LOG"></field>
                                        <value name="MESSAGE">
                                          <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                            <field name="TEXT">text</field>
                                          </shadow>
                                          <block type="text" id="lJp#W5.--N%;AA^flEUW">
                                            <field name="TEXT">Die Waschmaschine läuft jetzt!</field>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>

Javascript-Export

var actual_power, wait_status, won, standby_power, on_power, ausschalten;


createState("BS32.Waschmaschine.ON", false, function () {
});
createState("BS32.Waschmaschine.verbrauch", 0, function () {
});
createState("BS32.Waschmaschine.wait_status", false, function () {
});
createState("BS32.Waschmaschine.power_start", 0, function () {
});
on({id: "shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Power"/*Power*/, change: "ne"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  actual_power = getState("shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Power").val;
  standby_power = 3.5;
  on_power = 10;
  won = getState("javascript.0.BS32.Waschmaschine.ON").val;
  wait_status = getState("javascript.0.BS32.Waschmaschine.wait_status").val;
  if (won == false && actual_power > standby_power) {
    // Start, WON ist aus und Power größer Start-Power
    console.log('WM: einschalten');
    setState("javascript.0.BS32.Waschmaschine.ON"/*BS32.Waschmaschine.ON*/, true, true);
    setState("javascript.0.BS32.Waschmaschine.wait_status"/*BS32.Waschmaschine.wait_status*/, false, true);
    setState("javascript.0.BS32.Waschmaschine.power_start"/*BS32.Waschmaschine.power_start*/, getState("shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Energy").val, true);
    setState("javascript.0.BS32.Waschmaschine.verbrauch"/*BS32.Waschmaschine.verbrauch*/, 0, true);
  } else if (won == true && wait_status == false && actual_power < standby_power) {
    // WON ist an und wait ist false und Power < standby
    console.log('WM: power < standby, timer startet');
    setState("javascript.0.BS32.Waschmaschine.wait_status"/*BS32.Waschmaschine.wait_status*/, true, true);
    ausschalten = setTimeout(function () {
      console.log('WM: Ende, setze AUS');
      setState("javascript.0.BS32.Waschmaschine.ON"/*BS32.Waschmaschine.ON*/, false, true);
      setState("javascript.0.BS32.Waschmaschine.wait_status"/*BS32.Waschmaschine.wait_status*/, false, true);
      setState("javascript.0.BS32.Waschmaschine.verbrauch"/*BS32.Waschmaschine.verbrauch*/, Math.round((getState("shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Energy").val - getState("javascript.0.BS32.Waschmaschine.power_start").val)*10)/10, true);
    }, 1200000);
  } else if (won == true && wait_status == true && actual_power > standby_power) {
    // WON ist an, wait ist true und Power größer standby
    console.log('WM: power >  standby, lösche timer');
    (function () {if (ausschalten) {clearTimeout(ausschalten); ausschalten = null;}})();
    setState("javascript.0.BS32.Waschmaschine.wait_status"/*BS32.Waschmaschine.wait_status*/, false, true);
  } else if (won == true && wait_status == false && actual_power > standby_power) {
    // WON ist an, wait ist false und Power größer onpower
    setState("javascript.0.BS32.Waschmaschine.verbrauch"/*BS32.Waschmaschine.verbrauch*/, Math.round((getState("shelly.0.SHSW-PM#A4CF12F400AA#1.Relay0.Energy").val - getState("javascript.0.BS32.Waschmaschine.power_start").val)*10)/10, true);
  }
});
on({id: "javascript.0.BS32.Waschmaschine.ON"/*BS32.Waschmaschine.ON*/, change: "ne"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  if (getState("javascript.0.BS32.Waschmaschine.ON").val == false) {
    // Wechsel ON>OFF
    setState("javascript.0.BS32.Systemlog"/*BS32.Systemlog*/, 'Waschmaschine ausgeschaltet', true);
    sendTo("pushover", "send", {
       message: (['Die Waschmaschine ist jetzt fertig!',' Verbrauch: ',Math.round(getState("javascript.0.BS32.Waschmaschine.verbrauch").val*10)/10,' Wh'].join('')),
       sound: ""
    });
  } else {
    // Wechsel ON>OFF
    setState("javascript.0.BS32.Systemlog"/*BS32.Systemlog*/, 'Waschmaschine eingeschaltet', true);
    sendTo("pushover", "send", {
       message: 'Die Waschmaschine läuft jetzt!',
       sound: ""
    });
  }
});