NEWS
Blockly schleife läuft durch
-
Hallo,
Ich habe dieses Blockly geschrieben um mit wenn ein sender (oder mein test DP) auf true wechselt solange eine Telegram nachricht zu schicken bis ich das quittiere (tex2komm...)... das funktioniert so weit auch aber der JS-Adapter ist damit starkt ausgelattetes (>40% GPU) auch nach dem Quittieren... könnt ihr mir sagen warum?
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="interval" id="intervall">intervall</variable> </variables> <block type="procedures_defcustomnoreturn" id="Y*CK._LX]d`/0lF^Qe;e" x="88" y="-37"> <mutation statements="false"></mutation> <field name="NAME">Telegramm Quiut?</field> <field name="SCRIPT">c2VuZFRvKCd0ZWxlZ3JhbS4wJywgew0KICAgIHRleHQ6ICAgJ3F1aXR0aWVyZW4gPycsDQogICAgcmVwbHlfbWFya3VwOiB7DQogICAgICAgIGtleWJvYXJkOiBbDQogICAgICAgICAgICAgWydxdWl0dGllcmVuJ10NCiAgICAgICAgXSwNCiAgICAgICAgcmVzaXplX2tleWJvYXJkOiAgIHRydWUsDQogICAgICAgIG9uZV90aW1lX2tleWJvYXJkOiB0cnVlDQogICAgfQ0KfSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="control" id="qkr|Zv8.p7!#!r9I/lL[" x="88" y="-12"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Eigene.Automation.Sicherheit.quittiert_on_off</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="t=3k+JLs]gz%.{Pq-5.="> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="on_ext" id="Z:[WU-iKpUi}5h{-7B-O"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="4"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="SWdv!Fu.4VMGvAWgx}JD"> <field name="oid">0_userdata.0.Eigene.Automation.Test.Test_true_false</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="a9L@z3a+n6_D1UYvKt-u"> <field name="oid">zigbee.0.00158d000705d726.detected</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id="yG|woHybI:7?(X8DR{[w"> <field name="oid">zigbee.0.00158d0006f94454.detected</field> </shadow> </value> <value name="OID3"> <shadow type="field_oid" id=",.ih_m2*^O3ga=+lJtYu"> <field name="oid">zigbee.0.00158d000705b107.detected</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="cganBdvt^Pqq^s)g-qKT"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="yA`xUc~Itn5]lEH+PO?,"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="#olW2?.8Xp-;E.MC`v{q"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="s:B:Xzm;^dY%$ReLcV~a"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="procedures_callcustomnoreturn" id="@@;$vCT;o}h,Sy4$mr*w"> <mutation name="Telegramm Quiut?"></mutation> <next> <block type="timeouts_setinterval" id="+`AvYYvJD1p]=XIKfAiW"> <field name="NAME">intervall</field> <field name="INTERVAL">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="debug" id="pA8TS=DH(|08eOyy]BAS"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="^)]Lra!A:KZ8~1hkv?bh"> <field name="TEXT">Wasserschaden</field> </shadow> <block type="on_source" id="T6|GU(KRqsB2C3`s:ac8"> <field name="ATTR">channelName</field> </block> </value> <next> <block type="telegram" id="p71-/0dBke+)Wqhi$D7H" disabled="true"> <field name="INSTANCE"></field> <field name="LOG">error</field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="amu:R2T@@4xc_z3e6tT;"> <field name="TEXT">Wasserschaden Küche</field> </shadow> <block type="text_join" id=";.{2+VV}(${m[PiV?5*C"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="C{c(_umh-]h3{mSbEc}S"> <field name="TEXT">WASSER Melder Ausgelösst</field> </block> </value> <value name="ADD1"> <block type="on_source" id="oB~M8T/6y=f!;Pz,;p[0"> <field name="ATTR">channelName</field> </block> </value> </block> </value> <value name="USERNAME"> <block type="text" id="A.SEvhki];sgRAKC5$2!"> <field name="TEXT">Christian</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> <statement name="ELSE"> <block type="timeouts_clearinterval" id="):dotUOV,q0n7ql9+gQv"> <field name="NAME">intervall</field> <next> <block type="control" id="%m`xLjZc_E=ha1s]MEO#"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Eigene.Automation.Sicherheit.quittiert_on_off</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="@j,U52GVMY#%MxYu-Ba^"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> <next> <block type="on_ext" id="MCF8g9[iF6A5yLWOXN-`"> <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=":TgBaz3t}(~JmS73]3^#"> <field name="oid">0_userdata.0.Eigene.Automation.Sicherheit.quittiert_on_off</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_clearinterval" id="}mN*rb@PZ3Wt#o0z!_:v"> <field name="NAME">intervall</field> <next> <block type="control" id="gLK)^0H2|dyFT/K?w]jF"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Eigene.Automation.Sicherheit.quittiert_on_off</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="_lG)#oR7-!^f#/Nt:O#1"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </xml>
Danke
-
@christian-sandkaulen
- Warum läuft das Intervall einmal jede Sekunde ?
- Was genau macht die Funktion Telegram Quiut ?
Ich gehe davon aus das
- die Telegram Funktion einiges an Rechenleistung zieht
- das Ausführen dieser Funktion einmal pro Sekunde einfach zu oft ist. Muss das wirklich so schnell abgefragt werden ?
A.
-
@asgothian sagte in Blockly schleife läuft durch:
@christian-sandkaulen
- Warum läuft das Intervall einmal jede Sekunde ?
- Was genau macht die Funktion Telegram Quiut ?
Ich gehe davon aus das
- die Telegram Funktion einiges an Rechenleistung zieht
- das Ausführen dieser Funktion einmal pro Sekunde einfach zu oft ist. Muss das wirklich so schnell abgefragt werden ?
A.
das Intervall ist sicher was hoch ich denke alle 10sec reicht, mir auch
ich möchte so lange nachrichten bekommen bis ich das bestätig habe--- dazu das die "Telegram Quiut" funktion
Telegram Quiut ruft im telegram bot die button zum abstellen auf.sendTo('telegram.0', { text: 'quittieren ?', reply_markup: { keyboard: [ ['quittieren'] ], resize_keyboard: true, one_time_keyboard: true } });
-
@christian-sandkaulen sagte: nach dem Quittieren... könnt ihr mir sagen warum?
Der Quittierungs-Trigger erzeugt mit "wurde aktualisiert" eine Endlosschleife, da auf jedes "steuere quittiert_on_off mit falsch" erneut getriggert wird. Ändere den Trigger auf "ist größer als letztes".
-
@paul53 sagte in Blockly schleife läuft durch:
@christian-sandkaulen sagte: nach dem Quittieren... könnt ihr mir sagen warum?
Der Quittierungs-Trigger erzeugt mit "wurde aktualisiert" eine Endlosschleife, da auf jedes "steuere quittiert_on_off mit falsch" erneut getriggert wird. Ändere den Trigger auf "ist größer als letztes".
Ohh super danke, das habe ich nicht gesehen.