NEWS
Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern
-
@paul53 sagte in Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern:
Durch die Änderung funktionieren einige ältere Blocklys nicht mehr!
- Es wurde in einem Major-Update geändert (ab 7.x)
- Das Feature um auf eine Timeout-Variable zu prüfen, gab es vorher nicht offiziell und ist z.B. in der Blockly-Dokumentation gar nicht zu finden: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/blockly.md
- Wenn es jetzt zurückgeändert wird, wäre es für viele auch ein Breaking-Change, welche den neu erstellten Block für die Prüfung verwenden
Ich werde hier also nichts anfassen. Man könnte darüber sprechen, dass es keine angepassten Release-Notes für 7.x mit einem Hinweis gab. Im Changelog steht ja, dass die Timeouts zurückgesetzt werden.
-
@haus-automatisierung sagte: Breaking-Change, welche den neu erstellten Block für die Prüfung verwenden
Den betrifft es nicht, sondern nur "Ausführen timeout". Ich würde eher noch um einen (grünen) Block "setze timeout auf null" ergänzen.
-
@paul53 sagte in Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern:
Den betrifft es nicht, sondern nur "Ausführen timeout".
Natürlich betrifft es den. Wird der Timeout nicht zurückgesetzt, ist das eine ganz andere Logik als jetzt:
Aktuell heißt es, dass kein Timeout läuft. Entferne ich das zurücksetzen auf null, heißt das "es wurde irgendwann mal ein Timeout mit dem Namen gestartet, aber keine Ahnung ob da noch was läuft oder nicht".
falls nicht <timeout> starteTimeout...
-
@haus-automatisierung sagte: Entferne ich das zurücksetzen auf null, heißt das "es wurde irgendwann mal ein Timeout mit dem Namen gestartet, aber keine Ahnung ob da noch was läuft oder nicht".
Richtig. So wie in Javascript, wo man selbst für das Rücksetzen auf null sorgen muss.
falls nicht <timeout> // timeout wurde noch nicht auf null zurück gesetzt starteTimeout...
-
@haus-automatisierung sagte in Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern:
…EDIT: Gibts ja schon (Waschmaschine aktiv). Einfach mit UND in den sonst falls aufnehmen
falls nicht <timeout> UND Waschmaschine aktiv
Hmm, dann ist es also im Endeffekt (technisch) egal, ob ich „setze timeout_fertig auf wahr" ergänze, wie zuerst vorgeschlagen, oder die Methode hier verwende? Also nur „stilistisch“ anders?
-
@haus-automatisierung sagte: Im Changelog steht ja, dass die Timeouts zurückgesetzt werden.
In Version 7.05, aber nicht als Breaking-Change. Einige Blockly-Skripte, die vorher erstellt wurden, funktionieren nicht mehr!!
-
@haus-automatisierung sagte: Aktuell heißt es, dass kein Timeout läuft.
Das macht beim Entprellen Sinn und war schon immer möglich.
-
@paul53 sagte in Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern:
Einige Blockly-Skripte, die vorher erstellt wurden, funktionieren nicht mehr!!
Ja, das ist richtig. Aber wenn es jetzt zurück geändert wird, funktionieren auch ggf. einige nicht mehr. Wie gesagt, aus meiner Sicht wurde
- damit ein Bug gefixt und
- das Verständnis für Timeouts vereinfacht (weil es ja keine "setze Timeout auf null" Block gibt)
Die Änderung wurde damals in einem PR durch Bluefox freigegeben.
Aktuell ist ein Großteil der Nutzer schon auf einer Version
>= 7.0.5 (2023-06-06)
. Das heißt, die meisten Nutzer haben schon die neue Logik.Wenn man das nun zurückschraubt, müsste man konsequenterweise ja
- wieder einen Major-Release mit Breaking Change erstellen,
- die Dokumentation anpassen,
- neue Blöcke erstellen für "setze <timeout> zurück" und
- das alles erklären.
Nur um dann eine kompliziertere Logik mit mehr Erklärungsbedarf zu haben als jetzt. Sorry, aber da bin ich raus.
-
@haus-automatisierung sagte: das Verständnis für Timeouts vereinfacht
Es entspricht aber nicht mehr dem Verhalten von Javascript, die Timer-Variablen betreffend.
@haus-automatisierung sagte in Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern:
neue Blöcke erstellen für "setze <timeout> zurück"
Das halte ich für die bessere Lösung. Es funktionierte ja schon mit dem normalen Variablen-Block - wenn auch etwas trickreich (dummy-Variable, Javascript-Ansicht).
-
@paul53 sagte in Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern:
Das halte ich für die bessere Lösung.
Dann halte ich Dich nicht auf das umzusetzen
Ich werde mir die ganze Arbeit nicht (für ein aus meiner Sicht schlechteres Ergebnis) machen. Aber dafür ist es ja Open Source.@paul53 sagte in Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern:
Es funktionierte ja schon mit dem normalen Variablen-Block
Ja, das ist doch aber komplett unschön und sollte am besten gar nicht so sein. Ich wäre sogar dafür, einen Prefix (wie
t___
vor die Timeout-Variablen zu generieren, damit diese nicht mit den manuell angelegten kollidieren. Aber das hätte man schon viel früher machen müssen, damit man gar nicht in die aktuelle Situation reinläuft... Jetzt wäre das wirklich zu extrem, da das leider recht viele nutzen und hier ja öfter verbreitet wurde, statt einfach Blockly-Bausteine dafür zu entwickeln... -