NEWS
Blocky script
-
Hallo,
es Funk.. super, nach Minuten hab ich das nicht kontrolliert aber schaut besser aus meine Lösung.
Sollte was mit Iobroker passieren brauche ich mir keine sorgen machen das Heizung ganze Tag rennt, Pulsetime ist Back Up. -
Sehr schön das freut mich.
-
Hallo,
heute ist das passiert, Datenpunkt hat sich nicht neu gestartet und seitdem hat Heizung nicht mehr gestartet, wahr leider nicht zu hause dann ich ich zu spät auf das gekommen.
ich hab auch Scheduller für Script instantz Neustarten aber das bringt nichts weil Datenpunk wahr schon auf True und er rechnet erst von False auf True die 90 Minuten.
Es gehört was anderes für Datenpunkt Restart.
Eine idee ? -
Kann das die Ursachen sein ? Was passiert wen dieser 90 Minuten zeit rennt und der Scheduller Startet die Ganze Script Instanz neu ?
-
Hilft das da :
<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="xDq%i~$rGx~A.83cmM%;" x="-227" y="-848"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="S5Ja?RFgi-amy%b3nasc"> <field name="oid">sonoff.0.Heizung_R08.POWER6</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="^IQpxvAC2OFS~7?Wb54p"> <value name="IF0"> <block type="logic_compare" id="wv?fv3Sv#4)xrUA!h,;d"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="~FmMS%jS(50Pu}fG;xD("> <field name="ATTR">val</field> <field name="OID">sonoff.0.Heizung_R08.POWER6</field> </block> </value> <value name="B"> <block type="logic_boolean" id="4AB~efGz{|usYULCq%,U"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="BCFn=IlgKqu+C@xy)z`p"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Testordner.Wohnzimmer_temp_Heizung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="CjsW,Fb567aTJf@*m@?U"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block>
-
Ja das Neustarten des Script ist natürlich nicht all zu hilfreich. Wer oder was Startet denn bei mir die JS Instanz neu. Das sollte eigentlich nicht so sein.
Man könnte um so ein Problem zu umgehen, einen Datenpunkt anlegen, welcher als CronTrigger benutzt werden kann. Und beim einschalten der Heizung kann man diesen Datenpunkt beschreiben, mit Aktueller Uhrzeit + 90 min.
Das wird dann aber etwas komplexer, schau dir das mal an:
So richtig toll ist die Lösung aber auch nicht, wenn ich mir es recht überlege.
-
Danke aber das ist mir zu kompliziert.
-
Hallo,
ich brauche wen Datenpunkten auf Wahr sind dann schalten ein Sonoff aber ausschalten erst wen alle auf False sind.
ich hab mir so was geschrieben es funktioniert aber es kommt ein Fehler in Log.
Kannst du mir bitte schreiben wieso ?<xml xmlns="https://developers.google.com/blockly/xml"> <block type="comment" id="_9LVB+mDFTm*bn-vUbQ{" x="993" y="-2106"> <field name="COMMENT">1.og</field> <next> <block type="on_ext" id="K,WN,pgM_?_@X4vx9kNn"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="4WJh[A=5{zfL8JJaexmQ"> <field name="oid">0_userdata.0.Testordner.Bad_1og_temp_Heizung</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="o1VmVTjNh.{faXSdtcf%"> <field name="oid">0_userdata.0.Testordner.Geastezimmer_temp_Heizung</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="zr))xYp5q6uk7gWR:FLp"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="(%ip:yl;!KUbNeYJO=Q."> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="IQvqF`Ea*52V%WOo$(BG"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="I[ss_EoVs)Q`.9$2jDOM"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="hS]=O?t$f/y`yv?xV.9v"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Testordner.Heizung-1og-AN</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="@WvR96o@/GT_W,v[-k@;"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="NI74tl{Cv%y2nnZ2mq(_" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="7uPMqgWG]Q790FDLTidp"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="5o;cwewhu(gE!B3`kDDT"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Testordner.Bad_1og_temp_Heizung</field> </block> </value> <value name="B"> <block type="logic_boolean" id="yVMjFYj};xch]pRb%O~O"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="(OQ76rw~]R]9Q_P/kA`V"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="R-*;=g!1Qh_#Zl_G0VM4"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Testordner.Geastezimmer_temp_Heizung</field> </block> </value> <value name="B"> <block type="logic_boolean" id="a(@N2R~G23z9_{+2v:.H"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="a010)~%,.3zP6z08$:dG"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Testordner.Heizung-1og-AN</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="*Bs?pd`s{_^$#C6$ZaQ%"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="on_ext" id="PbE+r6ibR_B!K.FQ}Fa$"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="R*u+`^~1q(-5RFx%o(wQ"> <field name="oid">0_userdata.0.Testordner.Heizung-1og-AN</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="r*B?@=L`.guY]MLJ.H@."> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="yG^]{6_J#ybwkkR--1fQ"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=",~*oG6T^1=4~o,45tX/h"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Testordner.Heizung-1og-AN</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Ds_@mglbN-,}cDM*CoR3"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="#5GKyB|4=F4zr^[k^cQk"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.T2_WC_EG.POWER2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="wjLU9dHN#h7Y?!IU[;}G"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="-3=In3^#!.98tjamQv=M"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="IFmUuw4PVYZsI)!mwF{b"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Testordner.Heizung-1og-AN</field> </block> </value> <value name="B"> <block type="logic_boolean" id="X~3*IfnF7=:[xg@w.[9y"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="ahb3Mq`:H=Unj~Jji#z:"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.T2_WC_EG.POWER2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="hZi.6P!TF_zeAvEvho]4"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </xml>
-
Ich hätte es etwas anders gebaut, aber von der Funktion her ist alles ok. Weiß auch nicht wieso du die Warnungen bekommst, sorry.
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="comment" id="_9LVB+mDFTm*bn-vUbQ{" x="993" y="-2106"> <field name="COMMENT">1.og</field> <next> <block type="on_ext" id="K,WN,pgM_?_@X4vx9kNn"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="4WJh[A=5{zfL8JJaexmQ"> <field name="oid">0_userdata.0.Testordner.Bad_1og_temp_Heizung</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="o1VmVTjNh.{faXSdtcf%"> <field name="oid">0_userdata.0.Testordner.Geastezimmer_temp_Heizung</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="zr))xYp5q6uk7gWR:FLp"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="on_source" id="IQvqF`Ea*52V%WOo$(BG"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="control" id="hS]=O?t$f/y`yv?xV.9v"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Testordner.Heizung-1og-AN</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="@WvR96o@/GT_W,v[-k@;"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="NI74tl{Cv%y2nnZ2mq(_" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_negate" id="jk|97gb=SGULHK]i-VF+"> <value name="BOOL"> <block type="get_value" id="5o;cwewhu(gE!B3`kDDT"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Testordner.Bad_1og_temp_Heizung</field> </block> </value> </block> </value> <value name="B"> <block type="logic_negate" id="Yh1Rk9{J)7{|ysC(ieb+"> <value name="BOOL"> <block type="get_value" id="R-*;=g!1Qh_#Zl_G0VM4"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Testordner.Geastezimmer_temp_Heizung</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="a010)~%,.3zP6z08$:dG"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Testordner.Heizung-1og-AN</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="*Bs?pd`s{_^$#C6$ZaQ%"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="on_ext" id="PbE+r6ibR_B!K.FQ}Fa$"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="R*u+`^~1q(-5RFx%o(wQ"> <field name="oid">0_userdata.0.Testordner.Heizung-1og-AN</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="r*B?@=L`.guY]MLJ.H@."> <mutation else="1"></mutation> <value name="IF0"> <block type="on_source" id=")M?HBgc%+wvanXNJN!6@"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="control" id="#5GKyB|4=F4zr^[k^cQk"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.T2_WC_EG.POWER2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="wjLU9dHN#h7Y?!IU[;}G"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="control" id="ahb3Mq`:H=Unj~Jji#z:"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.T2_WC_EG.POWER2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="hZi.6P!TF_zeAvEvho]4"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </xml>
Wenn du den Datenpunkt "0_userdata.0.Testordner.Heizung-1og-AN" nicht noch für irgendwas anderes brauchst, kannst du dir den 2. Trigger natürlich sparen und direkt oben den Sonoff "an-aus" schalten.
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="comment" id="_9LVB+mDFTm*bn-vUbQ{" x="993" y="-2106"> <field name="COMMENT">1.og</field> <next> <block type="on_ext" id="K,WN,pgM_?_@X4vx9kNn"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="4WJh[A=5{zfL8JJaexmQ"> <field name="oid">0_userdata.0.Testordner.Bad_1og_temp_Heizung</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="o1VmVTjNh.{faXSdtcf%"> <field name="oid">0_userdata.0.Testordner.Geastezimmer_temp_Heizung</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="zr))xYp5q6uk7gWR:FLp"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="on_source" id="IQvqF`Ea*52V%WOo$(BG"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="control" id="#5GKyB|4=F4zr^[k^cQk"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.T2_WC_EG.POWER2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="wjLU9dHN#h7Y?!IU[;}G"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="NI74tl{Cv%y2nnZ2mq(_" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_negate" id="jk|97gb=SGULHK]i-VF+"> <value name="BOOL"> <block type="get_value" id="5o;cwewhu(gE!B3`kDDT"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Testordner.Bad_1og_temp_Heizung</field> </block> </value> </block> </value> <value name="B"> <block type="logic_negate" id="Yh1Rk9{J)7{|ysC(ieb+"> <value name="BOOL"> <block type="get_value" id="R-*;=g!1Qh_#Zl_G0VM4"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Testordner.Geastezimmer_temp_Heizung</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="ahb3Mq`:H=Unj~Jji#z:"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.T2_WC_EG.POWER2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="hZi.6P!TF_zeAvEvho]4"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </xml>
-
Möglicherweise ist dein eigener Datenpunkt nicht Typ "boolean" ? bzw. ALLE eigenen in dem Skript ...
-
-
Hallo,
wen du zeit hast kann du mir sagen wo der fehler ist?
<block xmlns="https://developers.google.com/blockly/xml" type="on" id="?9=:,6dF!Ds,yQ+]uN54" inline="true" x="63" y="-112"> <field name="OID">sonoff.0.ZigBee_Bridge1.ZbReceived_0x76D5_Occupancy</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="5eEzY4|KU%Yd_(#R|U2p"> <value name="IF0"> <block type="time_compare_ex" id="!qnFjRmKhWn0sNNAmbr~"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="*RptDjwC!r}ATe$y(tNT"> <field name="TEXT">16:00</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="=5C6%c64-e~xL!{g1z6K"> <field name="TEXT">07:15</field> </shadow> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="AQl:[z7ziSvI^%|vkElP"> <value name="IF0"> <block type="logic_compare" id="}34wSTT1vu?8aX^sx6nL"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id="HT,@i;!euqI6?]sKhdku"> <field name="ATTR">val</field> <field name="OID">sonoff.0.ZigBee_Bridge1.ZbReceived_0x76D5_Occupancy</field> </block> </value> <value name="B"> <block type="get_value_var" id="dJW%ZYj@@#3t$M@[Q;!e"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="`|gpACVlMN^K7}9,T|34"> <field name="TEXT">0</field> </shadow> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="[C/)?#|4[z7Rg,q5R4{b"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.Licht_LB01_Stehlampewohn.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="zkrRb*.p`d*aUUB[yU_k"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="d^{fyZ{zb6K:YGRIn]iI"> <value name="IF0"> <block type="logic_compare" id="E|PpztC$MEh:Oim:e=^]"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="d0*.rPqPdb,%9NC6Oxu)"> <field name="ATTR">val</field> <field name="OID">sonoff.0.ZigBee_Bridge1.ZbReceived_0x76D5_Occupancy</field> </block> </value> <value name="B"> <block type="get_value_var" id="ng0CtUj[qf+g#@!G*Dx7"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="+mgc$I`-$A*/{Twey-(}"> <field name="TEXT">1</field> </shadow> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="N5rC9RB#PdS]D)$@i50V"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.Licht_LB01_Stehlampewohn.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="?|kCO^aqaf!fb7Xgq7k{"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block>
-
@ingenii
Da sind 4 Fehler- logs als screenshot - Die kann kaum einer lesen. Logs immer als Text in code tags posten
- skript nur als Export - das kann kaum einer lesen ohne das man es in eine aktive Blockly Instanz kopiert. Da ist ein Bild oft besser, ansonsten statt des XML Export lieber das Skript temporär auf JS Umstellen und den JS code posten. Da sieht man den Fehler dann zumeist direkt (die Zeile die den Fehler erzeugt steht im log)
- in deinem falls Block vergleichst du
wert von sonoff.0.ZigBee_Bridge1.ZbReceived_0x76D5_Occupancy
mitwert von 0
. Du hast aber keinen Datenpunkt0
- du triggerst auf
sonoff.0.ZigBee_Bridge1.ZbReceived_0x76D5_Occupancy
Und holst dir dann den geänderten state nochmal. Das ist unnötig. Im trigger Bereich findest du einen Baustein der mitObjekt ID
Vorgelegt ist. Diesen kannst du aufWert
Umstellen. Wenn du den dann im trigger benutzt erhältst du den Wert der den trigger ausgelöst hat, sprich den kannst du an stelle vonwert von sonoff.0.ZigBee_Bridge1.ZbReceived_0x76D5_Occupancy
nutzen.
A.