NEWS
Anfängerfrage: Reihenfolge von Skriptausführung
-
@ticaki sagte: ist ganz schlechter Stil. Nimm dafür Zeitplan oder Intervall
Auch eine zyklische Abfrage ist kein guter Stil. Besser prüft man, ob mind. alle 10 Minuten getriggert wird:
-
@paul53
Als Ersatz ist das guter Stil.Auf das Problem bezogen würde ich bei Erstellung des Telegramms prüfen, ob einer der Zeitstempel jünger als now() -10 Minuten ist. Hätte ich die Zeit vom letzten Telegram würde ich between prüfen. Mit der jetzigen Version sollte die Erstellung oder Versand des Telegrams den Wert auf false setzen und nicht ein Timer.
-
Vielen Dank für Eure Rückmeldungen! Von Stil habe ich keine Ahnung
, aber auf Basis Eurer Infos habe ich jetzt zwei Varianten, die beide funktionieren...
oder
Das ist dann beides ok?
-
@harald-ohne-nummer
Ich hab damit nur ein Problem die Zeitlinie:0:00 Telegram nachricht
0:01 Skript check
0:08 Zigbee hat sich seit 10 Minuten nicht gemeldet
0:10 Telegammnachricht
0:01 Skript registriert Zigbee
0:20 Telegrammnachricht 12 Minuten zu spät.nur zur Info: ein/dein Interval startet das erste mal nach 10 minuten und dann alle 10 Minuten
-
@ticaki Für meinen Anwendungsfall ist es egal, ob der "Funkausfall" ein paar Minuten früher oder später bemerkt wird. Das ist ein Ereignis, das ohnehin nicht oder nur sehr selten vorkommen sollte und dessen Auswirkungen nicht kritisch sind. D.h. es reicht, wenn ich das dann ggf. ein paar Minuten "zu spät" bemerke.
-
Ich grabe das hier mal aus, da das Problem das gleiche ist. Die Reihenfolge der Aktionen unter einem Trigger läuft nicht sequenziell ab.
Ich habe einen Berechnungsscript in Blockly gebaut. Hier scheint es zu sein, dass die Berechnungsreihenfolge durcheinander läuft und der Volumetracker dadurch Fehlermeldungen produziert.
0_userdata.0.Benutzervariablen.Strom.Wert_Gespart wurde scheinbar resetet! Reset von 874.13 nach 874.11 passe alle Startwerte an
hier ist der Blockly Block.
kann ich irgendwie Blockly dazu zwingen die Berechnungen nacheinander zu machen, oder macht er das eh und der Fehler liegt woanders?
-
@axmlm sagte: kann ich irgendwie Blockly dazu zwingen die Berechnungen nacheinander zu machen
Ja, verwende Variablen für Werte, die später wieder verwendet werden, denn "aktualisiere" wird asynchron ausgeführt, ist also beim Wiedereinlesen noch nicht fertig.
-
@paul53 said in Anfängerfrage: Reihenfolge von Skriptausführung:
@axmlm sagte: kann ich irgendwie Blockly dazu zwingen die Berechnungen nacheinander zu machen
Ja, verwende Variablen für Werte, die später wieder verwendet werden, denn "aktualisiere" wird asynchron ausgeführt, ist also beim Wiedereinlesen noch nicht fertig.Meinst Du so?
EDIT:geht nicht:
javascript.0 10:33:08.705 error script.js.Strom.PV-Ertragswerte: getState has been called with id of type "number" but expects a string javascript.0 10:33:08.706 error script.js.Strom.PV-Ertragswerte: TypeError: Cannot read properties of undefined (reading 'val') javascript.0 10:33:08.707 error at Object.<anonymous> (script.js.Strom.PV-Ertragswerte:9:62)
-
jetzt läufts
-
die Fehlermeldungen sind leider geblieben.
valuetrackerovertime.0 2025-04-30 11:10:49.694 warn 0_userdata.0.Benutzervariablen.Strom.PV-Eigenverbrauch wurde scheinbar resetet! Reset von 3250.42 nach 3250.33 passe alle Startwerte an valuetrackerovertime.0 2025-04-30 11:10:49.693 warn 0_userdata.0.Benutzervariablen.Strom.Verbrauch_gesamt wurde scheinbar resetet! Reset von 9820.42 nach 9820.33 passe alle Startwerte an valuetrackerovertime.0 2025-04-30 11:10:49.691 warn 0_userdata.0.Benutzervariablen.Strom.Wert_Gewinn wurde scheinbar resetet! Reset von 1216.99 nach 1216.97 passe alle Startwerte an valuetrackerovertime.0 2025-04-30 11:10:49.689 warn 0_userdata.0.Benutzervariablen.Strom.Wert_Gespart wurde scheinbar resetet! Reset von 874.36 nach 874.34 passe alle Startwerte an valuetrackerovertime.0 2025-04-30 11:09:39.804 warn 0_userdata.0.Benutzervariablen.Strom.PV-Eigenverbrauch wurde scheinbar resetet! Reset von 3250.41 nach 3250.32 passe alle Startwerte an valuetrackerovertime.0 2025-04-30 11:09:39.801 warn 0_userdata.0.Benutzervariablen.Strom.Verbrauch_gesamt wurde scheinbar resetet! Reset von 9820.41 nach 9820.32 passe alle Startwerte an