NEWS
[gelöst]Geschirrspüler-Überwachung hängt sich auf
-
Hallo Forum, nach etlichen, vergeblichen Versuchen das Skript zum Laufen zu bekommen, wende ich mich nun an euch - vielleicht habt ihr ja noch eine Idee.
Zum Hintergrund: Ich überwache den Stromverbrauch in Watt (Power) von unserem Geschirrspüler mit einem Gosund SP111, auf dem Tasmota läuft.
Der Geschirrspüler hat drei Phasen mit intensivem Stromverbrauch und zum Schluss eine lange (Trocknungs-)Phase mit wenig Stromverbrauch. Ganz zum Ende wird nochmal kurz etwas mehr verbraucht, um ein letztes Abpumpen durchzuführen (siehe Bild weiter unten).Zum Problem: Leider ist die Trocknungsphase so knapp im Stromverbrauch, dass diese dem Standby-Verbrauch entspricht - dementsprechend kann ich nicht ausschließlich über die Power gehen und muss prüfen, ob ich mich in der letzten Phase befinde und dann auf das Abpumpen warten.
Leider hängt sich mein gesamter Pi bei erreichen der "wiederhole" Schleife immer komplett auf. Habt ihr eine Idee, was hier falsch ist?
Zur Verdeutlichung die Aufzeichnung des Verbrauches:
Abschließend das gesamte Script:
Das Skript:
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="=e%GN.LN)Gy-5HtrE;9Q">letztesAbpumpenFindetStatt</variable> <variable type="" id="u)kvrD,(T/X{z%S*fXQT">prüft</variable> <variable type="" id="9tA@(r@l25PEGfb3@*QX">geschirrspuelerAktiv</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="undefined" id="timeout2">timeout2</variable> </variables> <block type="variables_set" id="zx}-8$S):{KNNk@u)w66" x="313" y="-113"> <field name="VAR" id="=e%GN.LN)Gy-5HtrE;9Q" variabletype="">letztesAbpumpenFindetStatt</field> <value name="VALUE"> <block type="logic_boolean" id="I{1L9w7hwy8I_dd|OXFb"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="Is(C9Ea=ugetS:/XCD/H"> <field name="VAR" id="u)kvrD,(T/X{z%S*fXQT" variabletype="">prüft</field> <value name="VALUE"> <block type="logic_boolean" id="@{V41q]]?D{xxBQVn~Fw"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="Z}N15W#D6SrkCwOKBfFR"> <field name="VAR" id="9tA@(r@l25PEGfb3@*QX" variabletype="">geschirrspuelerAktiv</field> <value name="VALUE"> <block type="logic_boolean" id="LAW*@vpKBNTPfsXDVeV-"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="on_ext" id="bczS+!=FSeS$nF8p={q,"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Y{km8[Tjcqu@NDzqiHYO"> <field name="oid">default</field> </shadow> <block type="field_oid" id="=iFdinzpGPAa,jTE#M$y"> <field name="oid">sonoff.0.geschirrspueler.ENERGY_Power</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="TzJ0{6erp8Npn=eyz9!y"> <mutation elseif="2"></mutation> <value name="IF0"> <block type="logic_operation" id="S_;XckvgIBZp:!_5.8^L" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="C?FxV~gvdX|k@}zi7uXG"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="hJO^h2lq_Oc^=t~HE9f8"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id=".Cf-U`/m3J1W5@fCz!G)"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="IwEOANp^|ZY?f37d!U*l"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="Y;ML1WUeF[Oc;PO3#}_#"> <field name="VAR" id="9tA@(r@l25PEGfb3@*QX" variabletype="">geschirrspuelerAktiv</field> </block> </value> <value name="B"> <block type="logic_boolean" id="9T]YE%V4^}Zl77L/-,rJ"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id=":bz/v.-cHeI$K~^T$iko"> <field name="VAR" id="9tA@(r@l25PEGfb3@*QX" variabletype="">geschirrspuelerAktiv</field> <value name="VALUE"> <block type="logic_boolean" id="0d2?Sx,Uv#HLct!X)4WJ"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="telegram" id="|ntllg4xP;|WPMcU[g/8"> <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="Dr6NqWDIdiR9N5*TS!SZ"> <field name="TEXT">text</field> </shadow> <block type="text" id="2ij,tq-)T^ttf6qXC`r9"> <field name="TEXT">Geschirrspüler gestartet</field> </block> </value> <value name="USERNAME"> <block type="text" id="I,k;_{mH^)2r+TTMRz.$"> <field name="TEXT">Thorben</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="aK1W8]MX$s}vqFS,0SQ%" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="Ou/ZN2oMeJ,2kr=!IV}d" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="pKM!uW$o2,M?Io$M6YCx"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="ryOhDFn^F.2Zk%^ohN2g"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="q.]PmC2LEOVSuJ_?{@)I"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="KgEl]P;2LDRW#b5@;E/K"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="80PG2X.u#$:n:M+xwVn2"> <field name="VAR" id="=e%GN.LN)Gy-5HtrE;9Q" variabletype="">letztesAbpumpenFindetStatt</field> </block> </value> <value name="B"> <block type="logic_boolean" id="$DxVs0=@h/?.lR?yi4.w"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="]f`^J#p^0lWaq-@htw?j" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id=";ztG`7-TwyNdQY~+dOCW"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="pK$]uD+IAl)n-)Y_(hyk"> <field name="VAR" id="9tA@(r@l25PEGfb3@*QX" variabletype="">geschirrspuelerAktiv</field> </block> </value> <value name="B"> <block type="logic_boolean" id="SdksIb@b9%l2OPu%WQG]"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="2%/B*_{-On|,$9Au8zNB"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="qX}6`]XHc!.N[i;kQP$o"> <field name="VAR" id="u)kvrD,(T/X{z%S*fXQT" variabletype="">prüft</field> </block> </value> <value name="B"> <block type="logic_boolean" id="s2$~[Mm;iN+W#4lK{HG9"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="variables_set" id="gyKOq*@[7?#g4GMl[36E"> <field name="VAR" id="u)kvrD,(T/X{z%S*fXQT" variabletype="">prüft</field> <value name="VALUE"> <block type="logic_boolean" id="UV0OD@6XZ@4N{MTEEv,F"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_settimeout" id="oPdX|sy]T(+T0B_1XH_X"> <field name="NAME">timeout</field> <field name="DELAY">2</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="aEt|=,fH2]_Z*n#R/Yuy"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="@-yjla)?hOXU8%#nR/A-"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="H9+RNG;HC~2|W?Xz3],f"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="uuPVt7]BlgS:YGv~zE/["> <field name="NUM">5</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_whileUntil" id="YJ]Ml2pL5sYmJy3}4CyH"> <field name="MODE">WHILE</field> <value name="BOOL"> <block type="logic_compare" id="`/yUh513YQz(D$+%3s7e"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="s{Ot;zZKzorW3@wF~/8A"> <field name="VAR" id="=e%GN.LN)Gy-5HtrE;9Q" variabletype="">letztesAbpumpenFindetStatt</field> </block> </value> <value name="B"> <block type="logic_boolean" id="4v5+=[(b7~h1qc%t#%=O"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO"> <block type="timeouts_settimeout" id="AJ_Ljr:y8]V_1]WtYsz!"> <field name="NAME">timeout2</field> <field name="DELAY">20</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="[h*9RDH3WzSJDl}c!-9("> <value name="IF0"> <block type="logic_compare" id="Cv%Ww:s_bZDBY!3y7wS?"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="?e/d`M?|d}#T!Vo1`e`F"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="c$niJZEn|WKQAoH}0Nr4"> <field name="NUM">8</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="BDHy!?2Td0G}H2t%b@-q"> <field name="VAR" id="=e%GN.LN)Gy-5HtrE;9Q" variabletype="">letztesAbpumpenFindetStatt</field> <value name="VALUE"> <block type="logic_boolean" id="tBe9R@A/kspo9_H6-#9:"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="variables_set" id="c)u6:OQ+!Hh?xtGa:1^E"> <field name="VAR" id="u)kvrD,(T/X{z%S*fXQT" variabletype="">prüft</field> <value name="VALUE"> <block type="logic_boolean" id="7hqA9cE97V=Nvi$L)o|N"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="t7S`dp7~.]2|T={JNuo!"> <field name="VAR" id="u)kvrD,(T/X{z%S*fXQT" variabletype="">prüft</field> <value name="VALUE"> <block type="logic_boolean" id="PWtr*?f)0-fpm7m!VU$i"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </statement> <value name="IF2"> <block type="logic_operation" id="zC#[iGDaRRG3Im+Y(2OA" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="4S}3t}O=o(b.fW$7Fxs?" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="-Xb4Dby~e1LGAa!xNyow"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="1U=EE;r,^~%GxidS{=_x"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="B?3.W`OON!0Dh1)I=ZFN"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="QM0d#82G9`uQVm)J]t;p"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="2U/{xZgQ$lNYxI5a=9Ap"> <field name="VAR" id="u)kvrD,(T/X{z%S*fXQT" variabletype="">prüft</field> </block> </value> <value name="B"> <block type="logic_boolean" id="mScx0xE_,/U@gbk,kY;/"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="gTAGEK|vDvn=l81PM|_r" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="EU|d8C7|%9j0bOs{GL~K"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="Pdx.1M9Y^0{3KaDp#ZL-"> <field name="VAR" id="9tA@(r@l25PEGfb3@*QX" variabletype="">geschirrspuelerAktiv</field> </block> </value> <value name="B"> <block type="logic_boolean" id="6H-Hjbt6yrQWsN8j3sN4"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="M1L5tg/{(h/4k.CZPjod"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="xrYOPUG`Lx-=7?Do5M^q"> <field name="VAR" id="=e%GN.LN)Gy-5HtrE;9Q" variabletype="">letztesAbpumpenFindetStatt</field> </block> </value> <value name="B"> <block type="logic_boolean" id="!%EwZ`=oi|EV0`@=|+-O"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO2"> <block type="telegram" id="S1y|m#1OM/mEbn+YM}}h"> <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="rO{Ha:S~llGBzS!T`:Ik"> <field name="TEXT">text</field> </shadow> <block type="text" id=",;bz.Ga$a^qi1S~=1~j]"> <field name="TEXT">Geschirrspüler ist fertig!</field> </block> </value> <next> <block type="control" id="hCHr_nq`{O[j`le?K|e2"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090P3088147029K.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="mUs8wuH75R`t4/ce?KJ+"> <field name="TEXT">Geschirrspüler ist fertig</field> </block> </value> <next> <block type="variables_set" id="@a)BR2V=V05n}d,Qh}vv"> <field name="VAR" id="9tA@(r@l25PEGfb3@*QX" variabletype="">geschirrspuelerAktiv</field> <value name="VALUE"> <block type="logic_boolean" id="naC6~f`09o)GH(iNRF{d"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="gn[~Rtb*^A}@AqW8~TZt"> <field name="VAR" id="=e%GN.LN)Gy-5HtrE;9Q" variabletype="">letztesAbpumpenFindetStatt</field> <value name="VALUE"> <block type="logic_boolean" id="tBfdf8NW3b2WqQ*!n^#O"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </xml>
Ich danke euch im Voraus!
-
@TKnpl sagte:
Habt ihr eine Idee, was hier falsch ist?
"wiederhole solange" ist ein äußerst gefährlicher Befehl, mit dem man regelmäßig Endlosschleifen produziert. Du brauchst das Intervall.
-
@paul53 Das werde ich testen! Danke für den Tipp!
-
@paul53 Hängt nicht mehr. Vielen Dank!
-
Kannst du bitte den geänderten funktionierenden kompletten Script weitergeben. Danke