NEWS
Blockly, script läuft mit alten Werten
-
Hallo Kollegen,
ich bin immer noch am Suchen ( ich purer Anfängerin iobroker), warum mein maxcul adapter die datenpunkte von den Heizkörperventilen nicht regelmäßig updated.Heute habe ich ein kleines script( Aktuator alle 3 min einschalten und nach 20 sek wieder ausschalten) für Lernzwecke geschrieben, hat funktioniert. Anschließend habe ich nur das Zeit Intervall von 3 Minuten auf 15 Minuten geändert anschließend gespeichert und abschließend das Skript gestoppt und wieder gestartet. Die neuen Werte wurden nicht verwendet auch nach Skript Stopp und Restart nicht. Erst als ich den JavaScript Adapter gestoppt und neu gestartet habe wurde das Skript mit den neuen Werten ausgeführt.
Was mache ich verkehrt oder wo liegt das Problem ?
Über ein Feedback würde ich mich freuen, Danke Gruß Robert -
@Robert_100
Schwierig zu sagen, ohne das Skript zu sehen. Aber vermutlich wird eine Änderung nicht getriggert und das Programm läuft in einer Schleife immer und immer wieder durch -
@Ocrim
Danke für die schnelle Antwort, Das Script wurde aber gespeichert nur nicht mit den neuen Werten ausgeführt -
Alles was in dem Trigger steht wird zur gleichen Zeit ausgelöst. Wenn du fehlerfrei etwas ausschalten willst, dann musst du entweder mit Verzögerung arbeiten oder einen Timeout setzen.
oder eben so:
Edit: Der haken bei Verzögerung im letzten Bild muss dann natürlich raus, sonst würde sich die Verzögerung addieren. Deinen Baustein Pause habe ich aber auch noch nicht gesehen
-
@Ocrim Danke für die Info, so habe ich das noch nicht gesehen. Werde ich morgen mal ausprobieren, Danke Gruß robert
-
@Ocrim sagte in Blockly, script läuft mit alten Werten:
Alles was in dem Trigger steht wird zur gleichen Zeit ausgelöst.
Nein, durch das Pause Statement wird das Ausschalten auch um 20Sekunden verzögert. Der Unterschied zur Verzögerung und zum Timeout ist der, dass das Skript für 20 Sekunden 'anhält' und nichts anderes ausgeführt wird, im gezeigten Beispiel muss es funktionieren
-
@fastfoot
Aber wo kommt der Baustein her und warum steht in der Doku auf GitHub zum Javascript Adapter"There is no "pause" in blockly, but you can use this block to simulate pause. If you place all blocks, that must be executed after the pause you will achieve the same effect as with pause."
Zu finden unter der Erklärung zum timeout -
@Ocrim sagte in Blockly, script läuft mit alten Werten:
@fastfoot
Aber wo kommt der Baustein her und warum steht in der Doku auf GitHub zum Javascript Adapter"There is no "pause" in blockly, but you can use this block to simulate pause. If you place all blocks, that must be executed after the pause you will achieve the same effect as with pause."
Zu finden unter der Erklärung zum timeoutevtl. gibt es den nur in der Beta, welche ich nutze. Dort findet man ihn unter Timeouts. Ich würde ihn nicht nutzen wollen, weil er das gesamte Skript anhält, aber es gibt ihn und er funktioniert auch
-
@fastfoot sagte in Blockly, script läuft mit alten Werten:
evtl. gibt es den nur in der Beta, welche ich nutze
da gibt es anscheinend noch etwas wie "blockly-plus". Nutzst du das auch?
-
@Ocrim sagte in Blockly, script läuft mit alten Werten:
"There is no "pause" in blockly, but you can use this block to simulate pause.
Neuere Versionen haben einen pause-Block
https://github.com/ioBroker/ioBroker.javascript/blob/master/CHANGELOG_OLD.md#490-2020-10-09 -
@fastfoot sagte in Blockly, script läuft mit alten Werten:
Ich würde ihn nicht nutzen wollen, weil er das gesamte Skript anhält, aber es gibt ihn und er funktioniert auch
Das stimmt nicht - Pause bezieht sich nur auf den jeweiligen Kontext (z.B. die aktuelle Trigger-Ausführung). Der Rest des Skripts läuft unbehelligt weiter und auch neue Auslösungen des Triggers können ausgeführt werden.
-
@Homoran
Hallo, Danke für die Infos.
Ich schäme micht für so ein script, aber mein erstes um schnell zu testen ob der raspi irgendwo hängt, da meine Heizkörperthermostate sehr unregelmäßig ausgelesen werden.
Das script läuft wie es oben gezeigt wird und korrekt nach 20 sec der Schaltvorgang beendet.
Was ich nicht wusste das alle scripts dann auch nicht mehr bedient werden (nicht beobachtet, da ich nur ein am laufen habe) Ich werde aber trotzdem ocrims vorschlag so umsetzten.
Ich habe Blockly nach Anleitung hier im Forum installiert und habe den Pause Befehl unter Timeouts gefunden....als Neuling probiert man ja alles aus...
Allerdings bringt er im Log eine warn-fehlermeldung das ich mit 0 u 1 einschalte und nicht wie vorgesehen mit true und false..aber Ausführen tut er es korrekt Der "Steuere" nimmt aber nur 0 u1, selbst wenn ich true rein schreibe ändert er es in eine 1 um, wie löse ich das Problem ?
Danke Gruß Robert -
@Robert_100 sagte in Blockly, script läuft mit alten Werten:
Ich habe Blockly nach Anleitung hier im Forum installiert und habe den Pause Befehl unter Timeouts gefunden....als Neuling
Welches Repository nutzst du denn als Neuling?
im stable/default ist dieser Block nicht drin. Zumindest habe ich ihn auch nichtHast du auf latest/Beta gestellt?
-
@Robert_100 sagte:
Der "Steuere" nimmt aber nur 0 u1
Der nimmt auch falsch und wahr (unter "Logik").
-
@Robert_100 sagte in Blockly, script läuft mit alten Werten:
Was ich nicht wusste das alle scripts dann auch nicht mehr bedient werden
Irgendwie habe ich das Gefühl, dass meine Kommentare heute ignoriert werden
Das stimmt nicht. Ein solcher Block wäre absolut unsinnig und den hätten wir nicht implementiert. -
@Homoran
Hallo Homoran,
es tut mir leid, aber ich kann es dir nicht sagen, was ich vor 3 Wochen bei der Installation eingestellt hatte. Normalerweise nehme ich nur stable. Die ioBroker.admin ist die 4 .1.11
Ich finde die Installierte Blockly Versionsnummer nicht, Wo finde ich diese ? Sorry Neuling
Gruß Robert -
-
@Robert_100 sagte in Blockly, script läuft mit alten Werten:
ch finde die Installierte Blockly Versionsnummer nicht, Wo finde ich diese ? Sorry Neuling
unter javascript / Script Engine
-
-
@Robert_100 Danke!
Seltsam, habe auch die 4.10.5 und diesen Block nicht