Benötigt wird ein Shelly 1PM oder ein anderer Shelly der die Leistung messen kann. Dieser muss natürlich vor dem Geschirrspüler installiert sein.
Des Weiteren wird noch eine Systemvariable benötigt, die Anfangs auf die noch vorhanden Tabs manuell beschrieben werden muss. Die benötigten Leistungswerte müssen dann noch von euren Geräte ermittelt werden. Ich empfehle die Schwelle mit den 50W für den Start zu lassen, sonst kann es passieren, dass man den Geschirrspüler einschaltet ohne aber ein Programm laufen zu lassen und ihn anschließend wieder ausschaltet, dass er iorbroker denkt, dass das gerät lief. Wird eine neue Packung gekauft, muss die Variable wieder von Hand beschrieben werden.
Als Abschluss gibt es noch ein Telegramm aufs Handy, dass der Geschirrspüler fertig ist.
Ich arbeite noch nicht lange mit dem Iobroker, daher geht bestimmt manchen deutlich einfacher oder schlanker....
Blockly Export
<xml xmlns="http://www.w3.org/1999/xhtml">
<variables>
<variable type="" id="lpH;YI/T(sC6n[fhfta1">P_Geschirrspueler_akt</variable>
<variable type="" id="Rqm%uv,~8MnTQRm!L@0?">B_Geschirrspueler_an</variable>
<variable type="" id="uqiq+JcQK,U:^VRd{i(C">Var_Counter_Tabs</variable>
</variables>
<block type="on" id="/V`vmsry1Aqt(d/t/.r!" x="113" y="13">
<field name="OID">shelly.0.SHSW-PM#BA50C2#1.Relay0.Power</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="variables_set" id="zo-jMQZP3.JQqlc]EFq(">
<field name="VAR" id="lpH;YI/T(sC6n[fhfta1" variabletype="">P_Geschirrspueler_akt</field>
<value name="VALUE">
<block type="get_value" id="6g~(aRrL/awh`;q/WESW">
<field name="ATTR">val</field>
<field name="OID">shelly.0.SHSW-PM#BA50C2#1.Relay0.Power</field>
</block>
</value>
<next>
<block type="controls_if" id="Nu*qu-T=mmS7]-6Uf!.f">
<value name="IF0">
<block type="logic_compare" id="JBUvFrLT|R!fu0Zh002i">
<field name="OP">GTE</field>
<value name="A">
<block type="variables_get" id="r-oBggDM_:6L?~E!TqGb">
<field name="VAR" id="lpH;YI/T(sC6n[fhfta1" variabletype="">P_Geschirrspueler_akt</field>
</block>
</value>
<value name="B">
<block type="math_number" id="7(L1]#ap}yTEM)r,bnk)">
<field name="NUM">50</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="6W^3.g_t5WC]eySp`iTu">
<field name="VAR" id="Rqm%uv,~8MnTQRm!L@0?" variabletype="">B_Geschirrspueler_an</field>
<value name="VALUE">
<block type="logic_boolean" id="hu+MhSy[3IHk[BQw}PMi">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<next>
<block type="on_ext" id="AoXtR]Z=[0B28K2K-_hz">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="um43%0(OapU0nqyrtj/y">
<field name="oid">shelly.0.SHSW-PM#BA50C2#1.Relay0.Power</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="variables_set" id="aVT)x),;Blig#[Ko(@nM">
<field name="VAR" id="lpH;YI/T(sC6n[fhfta1" variabletype="">P_Geschirrspueler_akt</field>
<value name="VALUE">
<block type="get_value" id="oY3N,:*KwP7K#r=OM*.N">
<field name="ATTR">val</field>
<field name="OID">shelly.0.SHSW-PM#BA50C2#1.Relay0.Power</field>
</block>
</value>
<next>
<block type="controls_if" id="_;y-;Q}e_@NGee5IRx#P">
<value name="IF0">
<block type="logic_operation" id="=M)nQRR(Tmj+aH^$R$G?" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="/[h+^L5`[QN0|9w*KG:4">
<field name="OP">LT</field>
<value name="A">
<block type="variables_get" id="U{dz#*Bp*MFlVo%8w%Sl">
<field name="VAR" id="lpH;YI/T(sC6n[fhfta1" variabletype="">P_Geschirrspueler_akt</field>
</block>
</value>
<value name="B">
<block type="math_number" id="xAIT__(4qq(2;cjG*~s(">
<field name="NUM">2.8</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="}^x2HcWDJ7r+)dNi)H*m">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="NI,8@Ot)FtexlVJ(hnSl">
<field name="VAR" id="Rqm%uv,~8MnTQRm!L@0?" variabletype="">B_Geschirrspueler_an</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="H{cDSUwG8^N%oJ9eT~+x">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="DnO9cYAw@^d+UBGQayoN">
<field name="VAR" id="Rqm%uv,~8MnTQRm!L@0?" variabletype="">B_Geschirrspueler_an</field>
<value name="VALUE">
<block type="logic_boolean" id="7U4$=^3uIy/dhFtU5aPN">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="variables_set" id="Bmo#B(,a:1/3T@Ddp}?}">
<field name="VAR" id="uqiq+JcQK,U:^VRd{i(C" variabletype="">Var_Counter_Tabs</field>
<value name="VALUE">
<block type="get_value" id="ZOf=8v$t=rm$Id49!Qwx">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Var_Counter_Geschirrspültabs</field>
</block>
</value>
<next>
<block type="variables_set" id="k#{Ue6(;8h%p~|*~4[`*">
<field name="VAR" id="uqiq+JcQK,U:^VRd{i(C" variabletype="">Var_Counter_Tabs</field>
<value name="VALUE">
<block type="math_arithmetic" id="Udx3xVl_C*ewI|Tn$yvn">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="/Zp;#,IV=/M$8xty(?7I">
<field name="NUM">1</field>
</shadow>
<block type="variables_get" id="QW6NXtovxSn$!#y`ij2,">
<field name="VAR" id="uqiq+JcQK,U:^VRd{i(C" variabletype="">Var_Counter_Tabs</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="ChE%hhlOm|MYdKvg2v.Z">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</value>
<next>
<block type="control" id="@b0h/uwOL]!?[4h3wqvl">
<mutation delay_input="false"></mutation>
<field name="OID">0_userdata.0.Var_Counter_Geschirrspültabs</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="S]dI*DjhY2pE;[3.r~oS">
<field name="VAR" id="uqiq+JcQK,U:^VRd{i(C" variabletype="">Var_Counter_Tabs</field>
</block>
</value>
<next>
<block type="telegram" id="dbgFBvJ$phy$X[P^I#5K">
<field name="INSTANCE"></field>
<field name="LOG"></field>
<field name="SILENT">FALSE</field>
<field name="PARSEMODE">default</field>
<value name="MESSAGE">
<shadow type="text" id="M7AC{j?J._{Jky|~)+!B">
<field name="TEXT">Geschirrspüler fertig</field>
</shadow>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</xml>