NEWS
Seit JS 4.1.6 läuft bestimmtes Blockly nicht mehr (auch nicht in 4.1.7) - gelöst
-
Bis 4.05 lief das folgende Blockly einwandfrei:
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="procedures_defcustomreturn" id="]^61Plj!Mn:=T#0aqA~)" x="-387" y="-362"> <mutation statements="false"> <arg name="strobjektname"></arg> </mutation> <field name="NAME">IPauslesen</field> <field name="SCRIPT">dmFyIGlwPWdldFN0YXRlKHN0cm9iamVrdG5hbWUpLnZhbDsKcmV0dXJuIGlwOw==</field> <comment pinned="false" h="80" w="160">IP auslesen</comment> </block> <block type="schedule" id="_+?83h_Fn{/-=dF)t4TY" x="-388" y="-311"> <field name="SCHEDULE">15 3 * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="ax1wnXnRpcC;5Hp*6jEZ"> <field name="VAR">posKomma</field> <value name="VALUE"> <block type="math_number" id="fy%u8AoQI{4LK#/KTn{l"> <field name="NUM">0</field> </block> </value> <next> <block type="variables_set" id="78=.L17.k4D0*]%q;Goq"> <field name="VAR">ListeSonoffs</field> <value name="VALUE"> <block type="text_join" id="a~)ZvIAhU=f2uf)2ApUX"> <mutation items="2"></mutation> <value name="ADD0"> <block type="get_value" id="Wfo}1(IaiwlY.DvMW#hq"> <field name="ATTR">val</field> <field name="OID">sonoff.0.info.connection</field> </block> </value> <value name="ADD1"> <block type="text" id="J_61GFpx9XjNxm=.~zDn"> <field name="TEXT">,</field> </block> </value> </block> </value> <next> <block type="variables_set" id="^-{cZ%`Yl@inN6%iFV_1"> <field name="VAR">Schleifenende</field> <value name="VALUE"> <block type="logic_boolean" id="-(BAfc?GO`spC5!wpYsY"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="controls_whileUntil" id="6Ew3x5fxV4FcyJQwL{1S"> <field name="MODE">WHILE</field> <value name="BOOL"> <block type="logic_compare" id=")x[%vlw.*8rF#42(B-@t"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="Qj@F}ndW?Ga`t?P)]Xu_"> <field name="VAR">Schleifenende</field> </block> </value> <value name="B"> <block type="logic_boolean" id="L9^f5j)})B@U7e8hVr=Q"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO"> <block type="comment" id="M0kHyANF{r4imLFfM1]f"> <field name="COMMENT">Suche nächstes Komma in der Sonoff-Liste</field> <next> <block type="variables_set" id="onHAj,}EN=0ptY80mvuZ"> <field name="VAR">posKomma</field> <value name="VALUE"> <block type="text_indexOf" id="|)T;kdpR(/_8cpAgy-8]"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="q?/(-sqx:p%yl6]5]U;)"> <field name="VAR">ListeSonoffs</field> </block> </value> <value name="FIND"> <shadow type="text" id="i97+FP(ai8zMxC??|TGh"> <field name="TEXT">,</field> </shadow> </value> </block> </value> <next> <block type="controls_if" id="zaLa8Ye+4ifsEG1{xT*."> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="d#!2R.]me[E}D7:+zd)c"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id=",vZZJ8HVHbq1*4[)~c6J"> <field name="VAR">posKomma</field> </block> </value> <value name="B"> <block type="math_number" id="]8QHGi2yDY!zyl@0r.G@"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="Lu]hq0`*I|}3F~k1@jpr"> <field name="COMMENT">kein Komma mehr gefunden</field> <next> <block type="variables_set" id="`3Qc_7Yb_YFTv*5b-bJl"> <field name="VAR">Schleifenende</field> <value name="VALUE"> <block type="logic_boolean" id="v21Pm[OLs?K8MfRd3|=i"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="comment" id="VDR33}Sn|7UW6](RM{/v"> <field name="COMMENT">Sonoff-Name aus Sonoff-Liste vom ersten Zeichen</field> <next> <block type="comment" id="x#F+r^5O.SR]c;EI?Uau"> <field name="COMMENT">bis zum Zeichen vor dem Komma kopieren</field> <next> <block type="variables_set" id="%j/hlYKZv=KLa83TyTo+"> <field name="VAR">NameSonoff</field> <value name="VALUE"> <block type="text_join" id="C82GcH}BOx1MBU%/j|f1"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="rRpM+n,B3GU`/4)j1*Xe"> <field name="TEXT">sonoff.0.</field> </block> </value> <value name="ADD1"> <block type="text_getSubstring" id="X;{yx;N@ojxN9@sM%;aX"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="3n8g+)M//kcMfLC~t,;)"> <field name="VAR">ListeSonoffs</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="F%ckJ0YR!61f5+tEKD]n"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="g[e*s0*:|X3uK~aaUSM6"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="DajtIuOth{hV/t`|Vp-^"> <field name="VAR">posKomma</field> </block> </value> <value name="B"> <shadow type="math_number" id="J##.!2+}ZK_;,n*UTUQU"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="C%z8iR}NQZ{BLCTdL@Tj"> <field name="TEXT">.INFO.IPAddress</field> </block> </value> </block> </value> <next> <block type="comment" id="cCRoZ]K(_9ab[96os0GH"> <field name="COMMENT">IP-Adresse des Sonoffs über Javascript auslesen</field> <next> <block type="variables_set" id="5SZsG?NI(67[QgaWFE3:"> <field name="VAR">IPAdresse</field> <value name="VALUE"> <block type="procedures_callcustomreturn" id="wnzJ8,(}k(ap=;!FD^2@"> <mutation name="IPauslesen"> <arg name="strobjektname"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="0SX]Z}^wDSM`0N-p_^,r"> <field name="VAR">NameSonoff</field> </block> </value> </block> </value> <next> <block type="comment" id="|-!dskn/KBcDAtd,`9Gy"> <field name="COMMENT">Ersten Eintrag in der Sonoff-Liste entfernen</field> <next> <block type="variables_set" id="m{,#zBp1=o)_x92.wkB1"> <field name="VAR">ListeSonoffs</field> <value name="VALUE"> <block type="text_getSubstring" id="vSrOkB@+y5-t=@wGbX?i"> <mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"> <block type="variables_get" id="/*koR(^kCg!(*h1;(!OF"> <field name="VAR">ListeSonoffs</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="Snf@1(NV3O2-/Q{s[zw."> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="g[e*s0*:|X3uK~aaUSM6"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="!A?Mo*(l#k7F-?iyoKaX"> <field name="VAR">posKomma</field> </block> </value> <value name="B"> <shadow type="math_number" id=";YA6SY`7(NgEZ_SK`0KT"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="comment" id="p8LNBz*i-[5@L=lVUp|@"> <field name="COMMENT">URL für Restart des aktuellen Sonoffs erstellen</field> <next> <block type="variables_set" id="|tQ6q%T:bkRT;dgGX-)H"> <field name="VAR">RestartURL</field> <value name="VALUE"> <block type="text_join" id="hmg4gkUD=wn9`m8k=Wip"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="04;`,wWz7RWByQ=U|e|)"> <field name="TEXT">http://</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="b_hVl/#*k,2)rYQmj!_!"> <field name="VAR">IPAdresse</field> </block> </value> <value name="ADD2"> <block type="text" id="hyR19y=59s!H4{MQKCvY"> <field name="TEXT">/rb?</field> </block> </value> </block> </value> <next> <block type="comment" id="@w.yP6,ZV-}*3_Tku:+~"> <field name="COMMENT">URL aufrufen = Sonoff-Restart</field> <next> <block type="request" id="J7gk1(S*UXJ/i@;hB)w3"> <mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG">log</field> <value name="URL"> <shadow type="text" id="[NA{ZA?sj2%RB-}9Z)nc"> <field name="TEXT">text</field> </shadow> <block type="variables_get" id="UW3^#=kl!}iNdKV5RiaJ"> <field name="VAR">RestartURL</field> </block> </value> <next> <block type="comment" id="pC8M(DYgPmpC:04Q0Uuh"> <field name="COMMENT">Zusätzlichen Eintrag im Log erstellen (kann entfallen)</field> <next> <block type="debug" id="kDTrzP7)K6eNZfJ{V7E{"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="=AZlVJqJ8Bdv2^hc2b3h"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="]pH=D,b%GPW`V1ReS-YC"> <mutation items="4"></mutation> <value name="ADD0"> <block type="variables_get" id="T69`T0[y6p53v~7jylp2"> <field name="VAR">NameSonoff</field> </block> </value> <value name="ADD1"> <block type="text" id="OMb=Q/9BSV)OuE3F_lgg"> <field name="TEXT">(IP: </field> </block> </value> <value name="ADD2"> <block type="variables_get" id="m1M=RGrmi)Qo}x;/q{]m"> <field name="VAR">IPAdresse</field> </block> </value> <value name="ADD3"> <block type="text" id="?P(.~ss]U(BdMy0b^io4"> <field name="TEXT">) wurde neu gestartet</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
Nun bekomme ich folgenden Fehler:
1.3.2019, 10:15:06.787 [info ]: javascript.0 Stop script script.js.Neustart_Tasmota
1.3.2019, 10:15:12.370 [info ]: javascript.0 Start javascript script.js.Neustart_Tasmota
1.3.2019, 10:15:12.370 [info ]: javascript.0 script.js.Neustart_Tasmota: registered 0 subscriptions and 1 schedule
1.3.2019, 10:16:00.074 [warn ]: javascript.0 at Object.<anonymous> (script.js.Neustart_Tasmota:14:25)
1.3.2019, 10:16:00.075 [warn ]: javascript.0 at IPauslesen (script.js.Neustart_Tasmota:7:12)
1.3.2019, 10:16:00.075 [warn ]: javascript.0 at Object.<anonymous> (script.js.Neustart_Tasmota:27:19)
1.3.2019, 10:16:00.076 [error]: javascript.0 script.js.Neustart_Tasmota: Error: Invalid URI "http:///rb?"
1.3.2019, 10:16:00.076 [info ]: javascript.0 script.js.Neustart_Tasmota: request: http:///rb?Was läuft hier falsch?
-
Hallo,
ich hab mir gerade mal dein Script importiert und wie es scheint kann er die IP nicht auslesen weswegen die Restart URL "http://[hier fehlt die ip]/rb?" falsch ist und es abstürzt.
Du könntest ja mal ein paar Debug ausgaben einbauen wo du den Namen zusammen setzt und wo er die IP abruft.
-
@thewhobox das dies der Fall ist weiß ich ja. Nur, das Blockly lief über 1 Jahr ohne Fehler und nun nicht mehr ...
Hier muss ja der Fehler im JS Adapter liegen und nicht im Script.Wenn ich als pures JS umbaue sieht es so aus und läuft:
var strobjektname, posKomma, ListeSonoffs, Schleifenende, NameSonoff, IPAdresse, RestartURL; /** * IP auslesen */ function IPauslesen(strobjektname) { var ip=getState(strobjektname).val; return ip; } // Start per Scheduler schedule("10 16 * * *", function () { // posKomma = Position nächstes Komma in der Liste posKomma = 0; // Liste aller Sonoffs in Textform, kommasepariert ListeSonoffs = String(getState("sonoff.0.info.connection").val) + String(','); Schleifenende = false; while (Schleifenende == false) { // Suche nächstes Komma in der Sonoff-Liste posKomma = ListeSonoffs.indexOf(',') + 1; if (posKomma == 0) { // kein Komma mehr gefunden Schleifenende = true; } else { // Sonoff-Name aus Sonoff-Liste vom ersten Zeichen // bis zum Zeichen vor dem Komma kopieren NameSonoff = ['sonoff.0.',ListeSonoffs.slice(0, posKomma - 1),'.INFO.IPAddress'].join(''); // IP-Adresse des Sonoffs über Javascript auslesen IPAdresse = IPauslesen(NameSonoff); // Ersten Eintrag in der Sonoff-Liste entfernen ListeSonoffs = ListeSonoffs.slice(((posKomma + 1) - 1), ListeSonoffs.length); // URL für Restart des aktuellen Sonoffs erstellen RestartURL = ['http://',IPAdresse,'/cm?cmnd=Restart%201'].join(''); // URL aufrufen = Sonoff-Restart try { require("request")(RestartURL).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); } console.log("request: " + RestartURL); // Zusätzlichen Eintrag im Log erstellen (kann entfallen) } } });
-
Geht natürlich auch so, ist aber trotzdem unbefriedigend, dass es als pures Blockly nicht mehr läuft.
-
Bitte 4.1.7 installieren
-
habe ich eben gemacht - keine Änderung
-
Fehler bei Debug:
etState "List of connected clients" not found (3)
getState "sonoff.0.null.INFO.IPAddress" not found (3)daher ObjectID neu zugeiesen - nun geht's
Danke