NEWS
[Frage] Blockly - Liste nutzen um Werte hinzuzufügen und zu prüfen
-
Hallo,
ich nutze ein Blockly Skript um mich zu informieren wenn ein Fenster zu lange geöffnet ist. Falls das der Fall ist, sende ich eine Nachricht via Telegram und zeige auf meiner Lametric ein Icon neben der Uhr an. Dieses lösche ich, sobald das Fenster geschlossen ist. Jedoch will ich nun mehrere Fenster einbinden und das Symbol nur löschen, wenn kein aktiver Alarm mehr vorhanden ist (es können ja auch mehrere Fenster zu lange geöffnet sein, dann soll das schließen des einen Fensters ja nicht das Symbol löschen, da es ja noch aktiv für das andere Fenster ist)
Meine Idee war, den Name des Fensters in eine Liste zu schreiben, und das Icon nur zu löschen wenn die Liste leer ist. Jedoch müsste ich somit bei schließen eines Fenster auch speziell diesen Wert (also den Namen des aktuellen Fensters) aus der Liste entfernen. Wie kann ich einen speziellen Wert aus einer Liste löschen, wenn ich nicht weiß an welcher Steller der Liste der Wert steht?Ich hoffe ich konnte ca. beschreiben was ich vorhabe. Anbei das Blockly ohne Liste.
-
Hi @siggi85 ,
zunächst: Coole Funktion. Mein Blockly sieht so ziemlich gleich aus nur, dass ich das Xiaomi Gateway ansteuere und Alexa mir nen Text drück wenn ich zu Hause bin
Die Konfig mit den Icons ließe sich lösen, allerdings hat das Skript evtl. ein andres Problem. Die Timeouts für die versch. Fenster sind immer die gleichen oder? Wenn du zwei Fenster öffnest dann sind das die gleichen Timer.
Oder wird das durch javascript schon abgefangen?
grüße
-
@madjack84 sagte in [Frage] Blockly - Liste nutzen um Werte hinzuzufügen und zu prüfen:
Hi @siggi85 ,
zunächst: Coole Funktion. Mein Blockly sieht so ziemlich gleich aus nur, dass ich das Xiaomi Gateway ansteuere und Alexa mir nen Text drück wenn ich zu Hause bin
Die Konfig mit den Icons ließe sich lösen, allerdings hat das Skript evtl. ein andres Problem. Die Timeouts für die versch. Fenster sind immer die gleichen oder? Wenn du zwei Fenster öffnest dann sind das die gleichen Timer.
Oder wird das durch javascript schon abgefangen?
grüße
Mh... da hast du Recht. Um weiterhin einen Trigger zu nutzen müsste man den Namen des Fensters in dem Timoutnamen nutzen um für jedes Fenster einen eigenen Timeout zu haben. Allerdings ist das mit Blockly meines Wissens nach nicht möglich.
Vielleicht müsste ich doch für jedes Fenster einen eigene Trigger mit eigenem Timeout bauen. Dann wäre da jedoch immernoch das Problem mit dem Icon auf der Lametric...Kann man prüfen ob ein bestimmter Timeout gerade aktiv ist? Ich stoppe ihn ja bei jedem Schließen des Fensters, aber kann ich prüfen ob einer besteht? Falls ja hätte ich eine Idee für ein Kontrollattribut, welches immer um eins hochzählt wenn der Alarmfall eintritt und um eins gesenkt wird, wenn der Alarmfall beendet wird. Dafür müsste jedoch geprüft werden ob gerade ein Timeout aktiv ist. (Ich würde gerne vermeiden für jedes Fenster ein "Alarm_active" Kontrollattribut zu bauen)
-
@siggi85
schau mal da rein, ich glaube das könnte Dir helfen.https://forum.iobroker.net/topic/20845/wunschliste-blockly-elemente
-
@dslraser sagte in [Frage] Blockly - Liste nutzen um Werte hinzuzufügen und zu prüfen:
@siggi85
schau mal da rein, ich glaube das könnte Dir helfen.https://forum.iobroker.net/topic/20845/wunschliste-blockly-elemente
Ja in dem Thread bin ich auch aktiv. Aber mit dem was ich daraus kenne, kann ich maximal meine Trigger vereinfachen. Die Timeouts bleiben doch trotzdem die gleichen (da der Timeout einen festen Namen hat und nicht für jede getriggerte Instanz ein separater Timeout generiert wird). Somit würde ein "Stop Timeout" ausgelöst durch Fenster 2 den laufenden Timeout von "Fenster 1" stoppen. Oder gibt es hierfür bereits eine Lösung bis auf einzelne Trigger mit einzelnen Timeouts für jedes Fenster zu erstellen?
Und wie ich eine Liste mit Namen befülle und bei Bedarf nur einen bestimmten Namen aus der Liste entferne weiß ich leider immer noch nicht.
-
@siggi85 sagte:
Vielleicht müsste ich doch für jedes Fenster einen eigene Trigger mit eigenem Timeout bauen.
Das ist wohl die vernünftigste Lösung.
Dann wäre da jedoch immernoch das Problem mit dem Icon auf der Lametric...
Was hindert Dich daran, in einer gemeinsamen Funktion alle Timeout-Variablen zu prüfen ?