NEWS
Skript funktioniert nicht mehr
-
Hallo zusammen!
Ich weiß ja, daß es sich komisch anhört, aber seit gestern funktioniert eines meiner Skripte nicht mehr. Ich hänge es mal an.
Eine Idee könnte sein: Erst seit ein paar Tagen fällt die Heizung mehrfach aus, manchmal mehrmals am Tag. Bis vor Kurzem war dies nur einmal pro Monat der Fall. Früher wurde der ioBroker also zwischen den Ausfällen vermutlich immer mal neu gestartet, jetzt eben wegen der Häufigkeit der Probleme mit der Heizung nicht mehr. Vielleicht hängt es damit zusammen?
Das Nicht-Funktionieren des Skriptes läßt sich reproduzieren: Stromversorgung Heizung per Gosund ausschalten, Stromverbrauch laut Tasmota-Oberfläche 0W, Heizung per Gosund einschalten, Stromverbrauch laut Tasmota-Oberfläche für paar Sekunden über 30W, dann runter auf 2W, aber bei Telegram kommt nix an.
Das Skript habe ich definitiv nicht geändert.Hat jemand Rat?
EDIT: Gerade den iobroker restartet und schon funktioniert das Skript wieder! Hat es etwas mit der Variable zu tun, die beim Neustarten des iobrokers "resettet" wird, oder so?
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</variable> </variables> <block type="variables_set" id="vB%/(%QK-.|VB8olH+F+" x="-62" y="-137"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> <value name="VALUE"> <block type="logic_boolean" id="Zt3N#kbH0XjK+}5)pbJ^"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="on" id="?*7pS-cANelnRStH5fpi"> <field name="OID">sonoff.0.Heizung.ENERGY_Power</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="*bOx]47]yxIByA#qqt3J"> <value name="IF0"> <block type="logic_operation" id="Z=d#73]O`zyDGC~L|Jn/" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id=".(cUpb9mFzXnI.u`/RGu"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="+L|D9(N^L/_9p**AC4Y#"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="IRXiQ:Tf}.:}u-F;(J?|"> <field name="NUM">10</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="!+aTX:f8zpg?koPwXqU9"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="~^+uLCVDphEA1T3csQ;4"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> </block> </value> <value name="B"> <block type="logic_boolean" id="m9)+OzK@16j;{0FErZe_"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="yj^]v8#=,-=xs,C$1:0m"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> <value name="VALUE"> <block type="logic_boolean" id="c%J}.8a#0L-%7wEqRPVF"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="telegram" id=")43X.^NP$KHLnE,ZJK[m"> <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="B`kyTY5/jBuR@[lQA^oW"> <field name="TEXT">Heizung ausgefallen</field> </shadow> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>
-
du setzt due variable
Heizung_aktiv_ = true;
bei start auf true.. bei ausfall setzt du diese auf false..
und wann soll die wieder auf true .. das hast du nicht drin.. ergo reagiert dein script richtig...
du musst nur dafür sorgedn das deine variable Heizung_aktiv_ wieder auf true gesetzt wird wenn die Heizung wieder läuft..
-
@arteck
Hmm, danke, aber ich meine sogar, daß mir das hier im Forum mal so gesagt wurde, daß es so geht, wie ich es jetzt habe.
Verstanden habe ich es aber nie wirklich.Der „Trigger“ für das Skript ist doch die Änderung des Wertes „Power“, und der ändert sich ja quasi ständig. Soweit richtig?
Also müßte ich einen zusätzlichen Block einbauen „wenn Power größer 10, dann Variable auf true“?
-
@invidianer genau
-
@arteck
Ist es so richtig?
Oder kann ich mir dann die erste Zeile ("setze Heizung_aktiv auf wahr") sparen?<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</variable> </variables> <block type="variables_set" id="vB%/(%QK-.|VB8olH+F+" x="-62" y="-137"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> <value name="VALUE"> <block type="logic_boolean" id="Zt3N#kbH0XjK+}5)pbJ^"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="on" id="?*7pS-cANelnRStH5fpi"> <field name="OID">sonoff.0.Heizung.ENERGY_Power</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="*bOx]47]yxIByA#qqt3J"> <value name="IF0"> <block type="logic_operation" id="Z=d#73]O`zyDGC~L|Jn/" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id=".(cUpb9mFzXnI.u`/RGu"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="+L|D9(N^L/_9p**AC4Y#"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="IRXiQ:Tf}.:}u-F;(J?|"> <field name="NUM">10</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="!+aTX:f8zpg?koPwXqU9"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="~^+uLCVDphEA1T3csQ;4"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> </block> </value> <value name="B"> <block type="logic_boolean" id="m9)+OzK@16j;{0FErZe_"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="yj^]v8#=,-=xs,C$1:0m"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> <value name="VALUE"> <block type="logic_boolean" id="c%J}.8a#0L-%7wEqRPVF"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="telegram" id=")43X.^NP$KHLnE,ZJK[m"> <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="B`kyTY5/jBuR@[lQA^oW"> <field name="TEXT">Heizung ausgefallen</field> </shadow> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="SMD|6.2sDFq+r%iL#ELz"> <value name="IF0"> <block type="logic_operation" id="SkJ=EH_8_%Lo*_L@Jie3" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="TGC[$w7%JDjtF5~qK*8D"> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="D2*4jWg=76/NX*ea$,XM"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="#9$-.]Ez)n[x[obSJ}rv"> <field name="NUM">10</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="$3(WN[syH!|`@*hAE7B#"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="jOWtY=s_~IY);zxxd4l~"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> </block> </value> <value name="B"> <block type="logic_boolean" id="?83TGBJYB(pcs-W5q@`+"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="3;|GKjBfv^7lThxNLo?="> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> <value name="VALUE"> <block type="logic_boolean" id="~OSPv*3TO#heU?!:u!%`"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </xml>
-
@invidianer nein ist auch verkehrt.. blockly ist nicht so mein ding .. aber eher so
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</variable> </variables> <block type="variables_set" id="vB%/(%QK-.|VB8olH+F+" x="-62" y="-137"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> <value name="VALUE"> <block type="logic_boolean" id="Zt3N#kbH0XjK+}5)pbJ^"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="on" id="?*7pS-cANelnRStH5fpi"> <field name="OID">sonoff.0.Heizung.ENERGY_Power</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="*bOx]47]yxIByA#qqt3J"> <value name="IF0"> <block type="logic_operation" id="Z=d#73]O`zyDGC~L|Jn/" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id=".(cUpb9mFzXnI.u`/RGu"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="+L|D9(N^L/_9p**AC4Y#"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="IRXiQ:Tf}.:}u-F;(J?|"> <field name="NUM">10</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="!+aTX:f8zpg?koPwXqU9"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="~^+uLCVDphEA1T3csQ;4"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> </block> </value> <value name="B"> <block type="logic_boolean" id="m9)+OzK@16j;{0FErZe_"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="yj^]v8#=,-=xs,C$1:0m"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> <value name="VALUE"> <block type="logic_boolean" id="c%J}.8a#0L-%7wEqRPVF"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="telegram" id=")43X.^NP$KHLnE,ZJK[m"> <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="B`kyTY5/jBuR@[lQA^oW"> <field name="TEXT">Heizung ausgefallen</field> </shadow> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="SMD|6.2sDFq+r%iL#ELz"> <value name="IF0"> <block type="logic_operation" id="SkJ=EH_8_%Lo*_L@Jie3" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="TGC[$w7%JDjtF5~qK*8D"> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="D2*4jWg=76/NX*ea$,XM"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="#9$-.]Ez)n[x[obSJ}rv"> <field name="NUM">10</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="$3(WN[syH!|`@*hAE7B#"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="jOWtY=s_~IY);zxxd4l~"> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> </block> </value> <value name="B"> <block type="logic_boolean" id="?83TGBJYB(pcs-W5q@`+"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="3;|GKjBfv^7lThxNLo?="> <field name="VAR" id="EP`a-qu0Mi)#+F^5KaM)">Heizung_aktiv?</field> <value name="VALUE"> <block type="logic_boolean" id="~OSPv*3TO#heU?!:u!%`"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </xml>
-
@arteck
Ah, okay, danke!
Ist ja exakt, wie meines, nur habe ich am Ende im zweiten "falls"-Zweig "Heizung_aktiv? = wahr" abgefragt, anstatt "Heizung_aktiv? = falsch" und "setze Heizung_aktiv? auf falsch", anstatt "setze Heizung_aktiv? auf wahr", richtig?
Sonst hast Du doch nichts geändert?