NEWS
Blockly Script triggert nicht
-
Hi Leute,
ich möchte, dass am Monatsanfang ein paar Werte meiner Heizung berechnet und in entsprechende DPs geschrieben werden.
Leider triggert das Script scheinbar nicht richtig, ich finde aber den Fehler nicht.
Wenn ich einen Monatsblock aus dem Script herausnehme und das Script starte, werden die Daten in den DPs sofort korrekt aktualisiert, aber innerhalb des Zeitplans scheints automatisiert nicht zu klappen ...
Kann mir jemand weiterhelfen ?
-
@qlink sagte in Blockly Script triggert nicht:
Leider triggert das Script scheinbar nicht richtig,
was soll das arne Skript denn machen?
@qlink sagte in Blockly Script triggert nicht:
ich möchte, dass am Monatsanfang
das sagst du ihm aber nicht.
dein CRON
47 0 2 * *
bedeutet am 2. jeden Monats um 0:47, so wie es auch im Screenshot steht -
-
Ja, das ist mir klar und das passt auch so.
Ist nicht weiter wichtig ob das Script am Monats 1. oder am Monats 2. triggert... Hauptsache am Monatsanfang...Das Thema ist, wenn ich dann Tage später, z.B. am 8. oder 9. in iobroker schaue, merke ich dass die Daten nicht aktualisiert worden sind, weil das Script nicht getriggert hat.
-
@qlink
Mein Vorschlag:
Es ist allerdings nicht ganz klar, ob die Werte alle aus dem gleichen Objekt stammen, oder ab das verschiedene Objekte mit jeweils gleichem Namen sind.Aber das Prinzip sollte hier klar sein: Die Namen der Zielobjekte werden dynamisch bestimmt und dann wird der Salat zentral beschrieben.
-
Das sind verschiedene Objekte die leider alle den gleichen Namen haben ...
Kannst du mir sagen wieso mein Script nicht triggert ?
Dass deine Lösung viel besser und eleganter ist sehe ich zu 100 Prozent.
Mich würde aber interessieren wieso meine Lösung nicht funktioniert ?
Beste Grüße
-
@qlink sagte in Blockly Script triggert nicht:
dass die Daten nicht aktualisiert worden sind, weil das Script nicht getriggert hat.
woran machst du das fest?
keinerlei andere Ursache für das Fehlen der Daten möglich? -
weil die Datenpunkte Waermemenge-Jan, Waermemenge-Feb, Waermemenge-Mar usw. unter "Objects" keinen Zeitstempel zu dem Auslösezeit des Scripts erhalten...
-
@qlink sagte in Blockly Script triggert nicht:
weil die Datenpunkte Waermemenge-Jan, Waermemenge-Feb, Waermemenge-Mar usw. unter "Objects" keinen Zeitstempel zu dem Auslösezeit des Scripts erhalten...
ja und?
deswegen kann es triggern und bei einem Fehlet im Programm hängen bleiben... -
@homoran sagte in Blockly Script triggert nicht:
deswegen kann es triggern und bei einem Fehlet im Programm hängen bleiben...
@Qlink
Bau doch mal einen Debug-Block ein und schau dann im Log, ob der Trigger gefeuert hat oder nicht. -
Hab jetzt endlich mal wieder Zeit gefunden für dieses Problemchen...
Der Tipp mit dem Debug Output war top.2023-10-02 00:45:00.031 - info: javascript.0 (943) script.js.Stiebel.Leistungsaufnahme_V2: Berechnung Leistungsaufnahme September 2023-10-02 00:45:00.032 - info: javascript.0 (943) script.js.Stiebel.Leistungsaufnahme_V2: Berechnung LeistungsaufnahmeHEIZ September 2023-10-02 00:45:00.032 - info: javascript.0 (943) script.js.Stiebel.Leistungsaufnahme_V2: Berechnung LeistungsaufnahmeWW September 2023-10-02 00:45:00.032 - info: javascript.0 (943) script.js.Stiebel.Leistungsaufnahme_V2: Berechnung LeistungsaufnahmeGesamt September 2023-10-02 00:47:00.014 - info: javascript.0 (943) script.js.Stiebel.Wärmemenge_V2: Berechnung Wärmemenge September 2023-10-02 00:47:00.014 - info: javascript.0 (943) script.js.Stiebel.Wärmemenge_V2: Berechnung WärmemengeHEIZ September 2023-10-02 00:47:00.014 - info: javascript.0 (943) script.js.Stiebel.Wärmemenge_V2: Berechnung WärmemengeWW September 2023-10-02 00:47:00.014 - info: javascript.0 (943) script.js.Stiebel.Wärmemenge_V2: Berechnung WärmemengeWRG September 2023-10-02 00:47:00.014 - info: javascript.0 (943) script.js.Stiebel.Wärmemenge_V2: Berechnung WärmemengeGesamt September 2023-10-02 00:57:00.017 - info: javascript.0 (943) script.js.Stiebel.COP: Berechnung COP September 2023-10-02 00:57:00.018 - info: javascript.0 (943) script.js.Stiebel.COP: Berechnung COPGesamt September
Jetzt weiß ich zumindest dass die Scripte alle korrekt triggern.
Was ich allerdings nicht verstehe ist, warum folgendes Script scheinbar die letzte Berechnung nicht durchführt:
Die Werte "Leistungsaufnahme-HEIZ" und "Leistungsaufnahme-WW" werden richtig aktualisiert laut Zeitstempel und entsprechend geändert, aber der Wert "Leistungsaufnahme-Sep" (Addition von HEIZ + WW) bekommt nur einen Zeitstempel, wird aber nicht geändert:
Hat jemand eine Idee wo hier der Fehler liegt ?
Beste Grüße
-
@qlink sagte in Blockly Script triggert nicht:
Hat jemand eine Idee wo hier der Fehler liegt ?
Du rechnest mit Werten, die zu dem Zeitpunkt noch gar nicht aktualisiert vorliegen.
2x den Wert aus "Monatlicher Wert" auszulesen ist auch ineffizient.
Mein Vorschlag: Erstelle passende Variablen und berechne zunächst die Werte.
Erst dann schreibst Du die Werte, die dann in den Variablen bereits fertig berechnet sind, in die entsprechenden Datenpunkte.
Die Verzögerung kann man sich dann auch sparen. -
Wieso liegen die noch nicht vor ?
Die Addition passiert mit 4 Minuten Verzögerung nach der Aktualisierung, oder verstehe ich hier was falsch ?
Nach 3min liegt der erste Wert vor, nach 6min der zweite Wert und nach 10min werden beide addiert ...
Die 2x monatlicher Wert sind zwei unterschiedliche DPs, die denselben Namen haben ... -
@qlink sagte in Blockly Script triggert nicht:
Wieso liegen die noch nicht vor ?
Ich kann mich täuschen, aber nach der Verzögerung wird der Wert geschrieben.
Würde mich jedenfalls nicht wundern, wenn die Berechnung bereits vorher stattfindet oder durch die Asynchronität zum falschen Zeitpunkt ausgeführt wird.Lies die Werte der Datenpunkte (ganz zu Beginn) in Variablen ein.
Mit denen kannst Du nach Herzenslust rechnen und die Ergebnisse in weitere Variablen schreiben.Am Ende schreibst Du die Werte der Ergebnisvariablen zu einem Dir passenden Zeitpunkt in die Datenpunkte.
Wenn die Variablen dann auch noch sprechende Namen haben, macht das das Script auch noch gut lesbar.Warum überhaupt zu unterschiedliche Zeitpunkten schreiben?