NEWS
[gelöst] Probleme mit Schedule
-
Hallo Zusammen,
kann mir bitte jemand erklären warum er bei 40secs (völlig ok) UND bei 0secs auslöst?
Nach meinem Verständnis macht der 2 Einträge in schedule1 und löscht diese beim letzten Durchlauf und hat dann nur noch bei 40secs zum Auslösen<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="YPOJ3U]cF:UhW-C(R9DL">i</variable> <variable type="cron" id="schedule1">schedule1</variable> </variables> <block type="timeouts_wait" id="t,}fh)@#x:GUHcSzEXRF" x="-337" y="-512"> <field name="DELAY">10</field> <field name="UNIT">sec</field> <next> <block type="controls_for" id="fK6R7$XAZM#X)X?#Za)E"> <field name="VAR" id="YPOJ3U]cF:UhW-C(R9DL">i</field> <value name="FROM"> <shadow type="math_number" id="ECDy1m8UyU0Yr_2^?Y@5"> <field name="NUM">0</field> </shadow> </value> <value name="TO"> <shadow type="math_number" id="/mO%TGS|H2*%`Je~G5Nt"> <field name="NUM">2</field> </shadow> </value> <value name="BY"> <shadow type="math_number" id="#tO;I|!j5faZ4FG!12ZK"> <field name="NUM">1</field> </shadow> </value> <statement name="DO"> <block type="controls_if" id="Hf/BZ4`q*@_dj6lT$ufM"> <value name="IF0"> <block type="logic_compare" id="?b2+{9?D.-d4w8mpA|.r"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="%I4Q5DH?H@b$^[]Deu91"> <field name="VAR" id="YPOJ3U]cF:UhW-C(R9DL">i</field> </block> </value> <value name="B"> <block type="math_number" id="C0G7gS:]L}!HZjc/xjJP"> <field name="NUM">2</field> </block> </value> </block> </value> <statement name="DO0"> <block type="schedule_clear" id="Rz%UZo@``?albIjO@O_S"> <field name="NAME">schedule1</field> </block> </statement> <next> <block type="schedule_create" id="Z:8|^}]d{hsCi6H5ECpp"> <field name="NAME">schedule1</field> <value name="SCHEDULE"> <shadow type="field_cron" id="k+tVG(C)iA4;+)nag^Lo"> <field name="CRON">* * * * *</field> </shadow> <block type="cron_builder" id="C?FF1k(hWMT!]IX_X39t"> <mutation xmlns="http://www.w3.org/1999/xhtml" seconds="true" as_line="false"></mutation> <field name="LINE">FALSE</field> <field name="WITH_SECONDS">TRUE</field> <value name="DOW"> <shadow type="text" id="kT+kE?yOdYbug_2m`v:)"> <field name="TEXT">*</field> </shadow> </value> <value name="MONTHS"> <shadow type="text" id="Q8o0zbZ@.$@.VzyjVfqY"> <field name="TEXT">*</field> </shadow> </value> <value name="DAYS"> <shadow type="text" id="N,+oCO]iS:kZD,b5Rt;|"> <field name="TEXT">*</field> </shadow> </value> <value name="HOURS"> <shadow type="text" id="UiQhUBt!UoD;Uo*.IZj9"> <field name="TEXT">*</field> </shadow> </value> <value name="MINUTES"> <shadow type="text" id="~(s;RW3%^036|`LA*ae}"> <field name="TEXT">*</field> </shadow> </value> <value name="SECONDS"> <shadow type="text" id="tq?wkVQC_2J0k`|AfA_["> <field name="TEXT">*</field> </shadow> <block type="math_arithmetic" id="MlVRJ%**;V3*.ijY}.Y?"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="NjYbS@EKT9=T!Hl@C.r9"> <field name="NUM">20</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="(~,-l/$Y:LRsN2JKPkUz"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="q.TXMwTVr;_Y#Vg06v%O"> <field name="VAR" id="YPOJ3U]cF:UhW-C(R9DL">i</field> </block> </value> </block> </value> </block> </value> <statement name="STATEMENT"> <block type="debug" id="j1wEbvJoCi0P]1,6%a`y"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="NX/^6FZAj_cH@MX$|#,g"> <field name="TEXT">test</field> </shadow> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </xml>
Danke für eure Antworten
-
@plasmachef sagte in Probleme mit Schedule:
kann mir bitte jemand erklären warum er bei 40secs (völlig ok) UND bei 0secs auslöst?
Wie soll er den ersten löschen? Wenn
i = 0
und danachi = 1
ist die Referenz auf den ersten Schedule weg.Du musst Dir das so vorstellen, dass man eine ID zurückbekommt, wenn man einen Schedule anlegt (vereinfacht gesagt). Diese ID kann man dann in eine Variable speichern um damit später den Schedule wieder anzuhalten.
- Ist nun
i = 0
bekommst Du z.B.2348
als ID nach dem Anlegen - Diese ID wird in der Variablen
schedule1
gespeichert - Jetzt ist
i = 1
und Du bekommst6589
als ID beim Anlegen - Diese ID wird in der Variablen
schedule1
gespeichert (und der alte Wert ersetzt) - Jetzt ist
id = 2
und Du löschst den Schedule mit ID6589
(steht ja in Variableschedule1
- den vorigen Wert der Variablen kennst Du nicht mehr. Daher läuft der andere Schedule weiter.
Das ist das Problem an der (seltsamen) Logik. Es gibt keine "zwei Einträge" in
schedule1
. Nur den letzten. Das lässt sich mit Blockly so nicht lösen - da müsste man auf JavaScript wechseln und z.B. eine Liste (Array) bauen, welches alle vorigen IDs enthält und diese dann abbrechen. - Ist nun
-
wow, was für eine Erklärung!
Ich dachte schedule1 steht für das komplette Paket an "Triggern".
Habs verstanden!
Herzlichen Dank dafür -
-
noch ne ganz kleine Frage an Rand:
Werden bei blockly beim Stoppen des "Scripts" alle Trigger gelöscht (ausgeführt wird ja nichts mehr) oder müllt man sich grade beim Testen eines neuen Triggers so das System voll?
Denn aktiv meldet man sie ja nicht ab. -
@plasmachef sagte in [gelöst] Probleme mit Schedule:
Werden bei blockly beim Stoppen des "Scripts" alle Trigger gelöscht (ausgeführt wird ja nichts mehr)
Ja, wäre schlimm wenn nicht
-
Danke dir!
Wünsche dir einen schönen Tag