NEWS
SOLVED [gelöst]Position für Timeout ?
-
Hallo Kollegen, also irgendwie habe ich wohl einen Denkfehler in meinem Blockly Skript...
Ich möchte gerne eine Verweilzeit / Timeout an der markierten Stelle einbauen, so das für z.B. 5 Sek. geprüft
wird, ob der Spannungswert in dem vorgegebenen Bereich ist, und dann soll erst geschaltet werden...Aber wenn ich an besagter Stelle einen Timeout einbaue bekomme ich immer eine Fehlermeldung in dem Skript ?
Wo mache ich denn den Fehler ?? -
@MartinK sagte in Zeile 8:
Wartezeit für Spannungsbereich
Der Variablenbezeichner enthält unzulässige Zeichen: Leerzeichen. Siehe Unterschied zu Zeile 1. Ändere den Bezeichner in Wartezeit_fuer_Spannungsbereich.
-
@MartinK stell bitte das Blockly selbst hier auch rein, dann ist es leichter dich zu unterstützen
-
@BBTown Alles klar kein Problem...
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on_ext" id="Xdgfq1%=t4?7-[dkN{9n" x="37" y="113"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION">true</field> <comment pinned="false" h="80" w="160">Shelly Waschmaschine</comment> <value name="OID0"> <shadow type="field_oid" id="akQsOKjeEHC1,d^?2^.H"> <field name="oid">shelly.0.SHPLG-S#04160D#1.Relay0.Power</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="R$cKI$`~w+G)hF?n2_O4"> <field name="COMMENT">Spannungsbereich **Waschmaschine läuft!** - ON</field> <next> <block type="controls_if" id="]m~.6j3B1{XW=gp?gdk^"> <value name="IF0"> <block type="logic_compare" id="vq)){?1BUz)#dcgeBm7S"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="E2c}57phdFnXyT+1lM`)"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHPLG-S#04160D#1.Relay0.Power</field> </block> </value> <value name="B"> <block type="math_number" id="rd@RJ5@;=:0K+45-Sd?^"> <field name="NUM">10</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="};_LwjFGmKzLlL%XdMfe"> <mutation delay_input="false"></mutation> <field name="OID">waschmaschine.0.Waschmaschine-Läuft!</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=")f.dxuD;q`e!`eZ)5[.U"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="HVbQB(7%}W7w4a@c$FJq"> <mutation delay_input="true"></mutation> <field name="OID">waschmaschine.0.Waschmaschine_FERTIG!-Schalter</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="[@ZR/bgVtvXYT@K*(Pkd"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="#Ll``wDrt;lB}o(-{J`$"> <field name="COMMENT">Spannungsbereich **Waschmaschine Fertig!** - ON</field> <next> <block type="controls_if" id="Y+tAM}-dcs/}/s1Pw4[."> <value name="IF0"> <block type="logic_operation" id="6a,u*{3.*]CJv`d_mg~O"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="|qFYwQFn@OCZ8_`0_x3E"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="4hD^48P;$cK3$[BeGG[w"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHPLG-S#04160D#1.Relay0.Power</field> </block> </value> <value name="B"> <block type="math_number" id="=6)V*2~6ZXYUnR`_hp/4"> <field name="NUM">2</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="w%99=#+^i}lR3`hXn]LN"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="_{*wE,7^zUb~;ve6{~/D"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHPLG-S#04160D#1.Relay0.Power</field> </block> </value> <value name="B"> <block type="math_number" id="0/!EJs?d#^Cs`SQNU)g/"> <field name="NUM">6</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="{4s,,vTW2_RdeH#r4QiG"> <mutation delay_input="false"></mutation> <field name="OID">waschmaschine.0.Waschmaschine-Läuft!</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=";.cJHr.!ti0HSIeTh,k@"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="IE6y#M+CajI*~DjJS}ft"> <mutation delay_input="true"></mutation> <field name="OID">waschmaschine.0.Waschmaschine_FERTIG!-Schalter</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="dI{4ezz77{U:4GxKb_ge"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="dn`dcSp_:Cv^U`tHV;%n"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="x$~IyL/opau[^n3owx1+"> <field name="oid">waschmaschine.0.Waschmaschine-Läuft!</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="IIr%-Cww6AxN$,B?@naw"> <value name="IF0"> <block type="logic_compare" id="8xAz}TZRZ45,ACac0H/,"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="]`-e-tPv1S{,$$;bp{7B"> <field name="ATTR">val</field> <field name="OID">waschmaschine.0.Waschmaschine-Läuft!</field> </block> </value> <value name="B"> <block type="logic_boolean" id="zd+4F{Wf)_L7IYT(5Ip$"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id="u?Gy~b,2*{c.e6E=2E~s"> <field name="INSTANCE"></field> <field name="LOG">warn</field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="q,9w0T^mFW(]kOsr%oks"> <field name="TEXT">Waschmaschine wurde gestartet...!</field> </shadow> </value> </block> </statement> </block> </statement> <next> <block type="on_ext" id="`gqeB2i|TC2K=lRs2el-"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="rSgV1ejA0;$`]++Wzvf|"> <field name="oid">waschmaschine.0.Waschmaschine_FERTIG!-Schalter</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="x),^#TeB~9ErD!xYaNhn"> <value name="IF0"> <block type="logic_compare" id="R8p]CMfv$jx53c?+nY,q"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="`@Fh8!B|uR9E;5P~0PUR"> <field name="ATTR">val</field> <field name="OID">waschmaschine.0.Waschmaschine_FERTIG!-Schalter</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Px-MH!.~qa,4@l*REX}{"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id=":r7FME#d3tNf+xSec1fY"> <field name="INSTANCE"></field> <field name="LOG">warn</field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="1;fR%fVv,%81ec1OCg#X"> <field name="TEXT">Waschmaschine fertig!</field> </shadow> </value> <next> <block type="control" id="-5HcJrX?ie@pQRKdT=FM"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF11825724VF.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="^df^{;E+v/AuoIKe0Z)="> <field name="NUM">40</field> </block> </value> <next> <block type="control" id="CfivdkKk(PI))l4~ta5O"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0U2048507004D.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="*;laa]+SS).3Vm#d|uSw"> <field name="NUM">40</field> </block> </value> <next> <block type="control" id="k/UC/tTYGWGS+5Pm2E1-"> <mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF11825724VF.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <comment pinned="false" h="32" w="79">Echo Küche</comment> <value name="VALUE"> <block type="text" id="xd26jTj^)2k4m/9)MF;e"> <field name="TEXT">Die Waschmaschine ist jetzt Fertig!</field> </block> </value> <next> <block type="control" id="%Y71nM6:mF2QuW[Fycyv"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0U2048507004D.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <comment pinned="false" h="41" w="81">Echo Wohnzmmer</comment> <value name="VALUE"> <block type="text" id="f3#AA=mc^.Zb9Zn]EP|A"> <field name="TEXT">Die Waschmaschine ist jetzt Fertig!</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </xml>
-
@MartinK
Wenn ich deine Fragestellung richtig verstanden habe, dann sollte die Lösung so aussehen
-
Eine Sache hast Du hiermit aber noch nicht gelöst .... es wird noch nicht abgefangen, wenn es zwar eine Änderung von "Power" gibt, diese aber innerhalb von 2 - 6 stattfindet während der timer läuft, dann würde der Timer erneut gestartet.
-
@BBTown Ja, mir geht es nur darum, das über einen Zeitraum von 5 oder 10 Sek geschaut wird, ob sich der Spannungswert im beschriebenen Bereich aufhält, und wenn das 5-10 Sek gegeben ist, soll erst die "steuere" Funktion aktiviert werden.... Ist das so mit deinem ergänzten Timeout möglich ?
-
@BBTown sagte in Position für Timeout ?:
@MartinK
Wenn ich deine Fragestellung richtig verstanden habe, dann sollte die Lösung so aussehen
Das Problem ist, wenn ich den Timeout so einbaue bekomme ich immer wieder den Fehler in dem Skript angezeigt
-
@MartinK
das kann ich nicht nachvollziehen ...und ohne die beiden Timer Einträge kommt kein Fehler?
Was ist wenn Du die beiden anderen Trigger mal aus dem Script raus nummst, so dass Du dich auf einen Anwendungsfall konzentrieren kannst?Macht es einen Unterschied, wenn Du oben im Trigger anstelle von "Update" dort "egal" auswählst? (kann ich mir aber eigentlich nicht vorstellen)
-
@BBTown Auch ohne die beiden unteren Anwendungsfälle erscheint der Fehler, und eine Änderung der Trigger Einstellung auf "egal" macht auch keinen unterschied... ohne den Timeout läuft das Skript super.... ??
-
@MartinK
Was steht im generierten Javascript-Code (Zeile 8 ) ? -
@paul53 Leider bin ich noch nicht so der Nerd in Sachen Blockly & Co... Welcher Javaskript -code (Zeile 8 ) ist denn gemeint??? Der Fehler der im LOG steht in der Zeile 8 nach dem ausführen des Skriptes ?
-
@paul53 Da ist der Fehler in Zeile 8
-
@MartinK sagte:
Welcher Javaskript -code (Zeile 8 ) ist denn gemeint???
Im Blockly-Editor kann man rechts oben (links neben dem Schraubenschlüssel) in die Javascript-Ansicht umschalten, in der der aus Blockly erzeugte JS-Code mit Zeilennummer angezeigt wird. Diesen Code poste bitte ohne die letzte Zeile in Code tags (copy & paste).
-
@paul53 Hier ist der Code
var Wartezeit_f_C3_BCr_Spannungsbereich; // Shelly Waschmaschine on({id: 'shelly.0.SHPLG-S#04160D#1.Relay0.Power', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; (function () {if (Wartezeit für Spannungsbereich) {clearTimeout(Wartezeit für Spannungsbereich); Wartezeit für Spannungsbereich = null;}})(); // Spannungsbereich **Waschmaschine läuft!** - ON if (getState("shelly.0.SHPLG-S#04160D#1.Relay0.Power").val > 10) { setState("waschmaschine.0.Waschmaschine-Läuft!"/*waschmaschine.0.Waschmaschine-Läuft!*/, true); setStateDelayed("waschmaschine.0.Waschmaschine_FERTIG!-Schalter"/*Waschmaschine_FERTIG!-Schalter*/, false, 1000, false); } // Spannungsbereich **Waschmaschine Fertig!** - ON if (getState("shelly.0.SHPLG-S#04160D#1.Relay0.Power").val > 2 && getState("shelly.0.SHPLG-S#04160D#1.Relay0.Power").val < 6) { Wartezeit für Spannungsbereich = setTimeout(function () { setState("waschmaschine.0.Waschmaschine-Läuft!"/*waschmaschine.0.Waschmaschine-Läuft!*/, false); setState("waschmaschine.0.Waschmaschine_FERTIG!-Schalter"/*Waschmaschine_FERTIG!-Schalter*/, true); }, 10000); } });
-
@MartinK sagte in Zeile 8:
Wartezeit für Spannungsbereich
Der Variablenbezeichner enthält unzulässige Zeichen: Leerzeichen. Siehe Unterschied zu Zeile 1. Ändere den Bezeichner in Wartezeit_fuer_Spannungsbereich.
-
@paul53 Alles klar !!! Vielen Dank ! Das war der Fehler !