NEWS
Timeout in IDs vom Selektor
-
@codierknecht Na klar funktionieren die Leerzeichen. Schon seit Ewigkeiten. Und so weiß ich auch in drei Jahren noch was ich da gemacht hab. Aber das war eigentlich nicht das Problem?
-
@codierknecht sagte: Soll das 'ne Variable sein? Mit Leerzeichen?
Blockly ersetzt Leerzeichen durch Unterstriche.
-
@guitardoc sagte: Versteht das Blockly das und führt die mehreren Timeouts mit den richtigen unterschiedlichen Werten aus oder geht das so gar nicht?
Das geht so nicht. Jeder DP benötigt seinen eigenen Timeout.
-
@guitardoc sagte in Timeout in IDs vom Selektor:
Versteht das Blockly das und führt die mehreren Timeouts mit den richtigen unterschiedlichen Werten aus oder geht das so gar nicht?
Das geht so, nur wird jedes Mal ein Timeout gestartet - auch, wenn bereits für die gleiche ID einer läuft. Der vorige für die ID kann nicht gestoppt werden, weil Dir dafür dann die Referenz fehlt.
Mit JavaScript wäre das lösbar.
-
@haus-automatisierung sagte: Der vorige für die ID kann nicht gestoppt werden, weil Dir dafür dann die Referenz fehlt.
Das meinte ich mit meiner Aussage. Eine halbe Stunde ist eine lange Zeit.
-
Hmm, da werde ich für jeden Datenpunkt lieber einen separaten Timeout starten. Man muss es ja nicht unnötig verkomplizieren.
Aber interessehalber - wie würde man das in Javascript lösen bzw. was wäre da anders? -
@guitardoc sagte: wie würde man das in Javascript lösen bzw. was wäre da anders?
In Javascript kann man z.B. ein "Array of timers" verwenden.
-
@paul53 Das mit den Arrays (und Array of Array) ist auch ein Punkt der mir in den Blocklys fehlt, ebenso wie Unterprogramme mit mehreren Rückgabewerten. Ist zwar hier Off-Topic, aber ist da geplant dies irgendwann zu implementieren?
-
@guitardoc sagte: Unterprogramme mit mehreren Rückgabewerten.
Das gibt es nicht. Man kann ein Objekt oder ein Array zurück geben, was auch in Blockly möglich ist. Dabei aber beachten, dass Objekte / Arrays per Referenz (Zeiger) übergeben werden.
-
@guitardoc Eigentlich geht schon alles. Was nur fehlt, ist eine Möglichkeit einen Timer zu stoppen indem man eine Variable übergibt. Der Rest würde funktionieren.
-
@paul53 said in Timeout in IDs vom Selektor:
dass Objekte / Arrays per Referenz (Zeiger) übergeben werden
Wie macht man das konkret?
-
Wenn es die Blöcke gäbe, könnte man die Objekt-ID als Eigenschaft eines Objektes nehmen und dort den Timeout drauf speichern. Das Problem dabei ist, dass die meisten solche Konstrukte wohl nicht verstehen werden. Daher habe ich die "Objekt"-Blöcke so einfach wie möglich gestaltet.
-
@haus-automatisierung Das stimmt - so würde es gehen. Hmm, vielleicht wäre es ein Vorschlag an die Entwickler von Blockly?
-
@guitardoc sagte in Timeout in IDs vom Selektor:
Hmm, vielleicht wäre es ein Vorschlag an die Entwickler von Blockly?
Wie gesagt, könnte ich alles einbauen. Aber werden dann immer mehr Bausteine und viele sind ja jetzt schon mit einfachen Konstrukten überfordert.
-
@haus-automatisierung said in Timeout in IDs vom Selektor:
Das Problem dabei ist, dass die meisten solche Konstrukte wohl nicht verstehen werden.
Das ist allerdings tatsächlich ein Problem. Man muss schon ganz schöne Gehirnakrobatik betreiben, um zu verstehen, was da passiert.
-
@guitardoc Und dann denke ich mir oft: Wer das in Blockly hinbekommt, der versteht auch JavaScript und schafft es die paar Zeilen zu programmieren.
-
@haus-automatisierung Naja, ich persönlich tu mich schwer mit Javascript. Habe jahrelang objektorientiert programmiert. Ja, mit Typescript geht das zwar auch, aber mir fehlt die Möglichkeit, den Code sinnvoll mit wenig Aufwand während der Laufzeit zu debuggen. Aber vielleicht hab ich mich auch nur noch nicht ausführlich genug damit beschäftigt.
-
Ich hab es jetzt mit einem Cron gelöst - der schaut jede Minute ob bei verschiedenen States die 30 Minuten schon erreicht sind und schaltet dann. Ist zwar nicht besonders elegant, scheint aber zu funktionieren.