NEWS
Blocky+Shutter - getriggerter Wert X nach Timeout geändert?
-
Hallo Community,
ich habe seit 3 Tagen ioBroker mit einem Aeotec Z-Stick Gen 5 im Einsatz, finde mich immer besser zurecht und möchte alle meine Z-Wave Geräte (später vllt. auch ZigBee) von devolo HomeControl zu ioBroker umziehen. Die Steuerung erfolgt bei mir nur über Apple HomeKit, weshalb ich die Geräte dann noch mit ioBroker.yahka mappen muss.
Ich habe ein paar devolo Rollladensteuerung-Unterputz (Home Control Shutter FM MT2761) im Einsatz.
Ich muss euch inhaltlich kurz mitnehmen: Dieses Modul überträgt nur den aktuellen Stromverbrauch und das Level, welches aber auch zeitgleich die Steuerung ist - somit keine richtige CurrentPosition, TargetPosition und PositionState. Typisch devolo ! Wenn ich dennoch diesen Level-State als CurrentPosition und TargetPosition in HomeKit mappe, funktioniert es - aber der Status wird direkt von HomeKit übernommen und man sieht KEINE "Öffnet ..." / "Schließt ..." Animation bis das tatsächliche Level erreicht ist. Daher habe ich es mit einem zusätzlichen Objekt in Blocky gebastelt. Funktioniert auch!
Aber eine Kleinigkeit gefällt mir nicht. HomeKit hat so einen Slider, hier möchte ich ein Timeout von 1500 ms einbauen, wenn sich der Wert schon wieder geändert hat, mache nichts. Wenn der Wert noch immer gleich ist, wie getriggert, dann ...
Es geht um den oberen Block, beim "timeout2", hier möchte ich prüfen, ob der getriggerte Wert von "schmalesFenster_TargetPosition" immer noch der gleiche ist oder in der Zwischenzeit der Slider in HomeKit bewegt wurde. Habe ich in homebridge-devolo auch so ähnlich gemacht.
Frage 1: Wie mache ich das? Kann man den vor dem Timeout getriggerten Wert vom Objekt abfragen? Oder speichere ich den Wert vor dem Timeout in eine temporäre Variable?
Ein kurzes Beispiel wäre nice. DANKE
Gruß Nico
BTW
Frage 2: Ich habe 13 von diesen devolo Shuttern, muss ich das Blocky-Skript dann 13x machen? Oder kann ich es flexibel gestallten, mit einer Liste oder so, dass er dieses für alle verarbeitet - auch bei zeitgleiche Änderungen, unterschiedlicher Module.
Frage 3: Würdet ihr an meiner Stelle direkt alles in Node-RED machen? Weil neuer oder läuft das noch nicht so stabil? Oder gibt es andere Gründe?
-
@_nico
Du kannst im in den Trigger-Objekten eine Variable ins Fenster ziehen
Wenn Du dort drauf klickst kannst Du im DropDown Menu z.B. "voheriger Wert" auswählen und somit die Veränderung des Sliders mit dem aktuellen Wert vergleichen (größer/kleiner)Grundsätzloich sollte Du immer auch "timerStop" mit einbauen, ansonsten hast du bei mehrfacher Trigger/Slider-Änderung auch mehrfache timeouts am Laufen.
Du könntest mehrere Rolladen - die gleich geschaltet werden sollen - über eine Funktion gemeinsam steuern. (schau doch mal beim ähnlichen Thema hier vorbei)
-
Wenn Du dort drauf klickst kannst Du im DropDown Menu z.B. "voheriger Wert" auswählen und somit die Veränderung des Sliders mit dem aktuellen Wert vergleichen (größer/kleiner)
Ok, ist dann aber nur der "vorherige Wert", muss ja nicht der getriggerte Wert sein - man schafft es unabsichtlich, in den 1500ms, 3-5x zu ändern - ohne Kaffee vielleicht auch häufiger.
Grundsätzloich sollte Du immer auch "timerStop" mit einbauen, ansonsten hast du bei mehrfacher Trigger/Slider-Änderung auch mehrfache timeouts am Laufen.
Wo kommt der dann genau hin?
Du könntest mehrere Rolladen - die gleich geschaltet werden sollen - über eine Funktion gemeinsam steuern.
Ja, kenn ich. Beantwortet aber leider nicht die Frage 2. Ich würde jetzt für jedes Modul das Skript, wenn es fertig ist kopieren und anpassen... weiß halt nicht ob das "einfacher" geht.
-
@_nico sagte in Blocky - Hat sich der Wert X schon wieder geändert?:
Wo kommt der dann genau hin?
In deinem "Wenn-Vergeich" Du wolltest den doch abfragen?!
Ja, kenn ich. Beantwortet aber leider nicht die Frage 2. Ich würde jetzt für jedes Modul das Skript, wenn es fertig ist kopieren und anpassen... weiß halt nicht ob das "einfacher" geht.
Also ich persönlich finde es deutlich einfacher einmal eine Liste anzulegen die abgearbeitet wird, als 13 einzelne Scripte
Schau doch zudem einmal in der Forums-Suche (oder in der ioBroker Doku) nach "Aufzählungen"
Auch darüber kannst Du Gerätegruppen anlegen. -
Ich glaube, ich habe gerade einen Knoten im Kopf.
In deinem "Wenn-Vergeich" Du wolltest den doch abfragen?!
So?
Also ich persönlich finde es deutlich einfacher einmal eine Liste anzulegen die abgearbeitet wird, als 13 einzelne Scripte
Schau doch zudem einmal in der Forums-Suche (oder in der ioBroker Doku) nach "Aufzählungen"
Auch darüber kannst Du Gerätegruppen anlegen.Ah okay. Krass! Muss ich mir mal anschauen. Es geht aber nicht um eine zeitgleiche Steuerung? Die Rollläden sollen bei Bedarf, manuell, zu unterschiedlichen Zeit gesteuert werden.
-
@_nico sagte in Blocky - Hat sich der Wert X schon wieder geändert?:
Es geht aber nicht um eine zeitgleiche Steuerung? Die Rollläden sollen bei Bedarf, manuell, zu unterschiedlichen Zeit gesteuert werden.
ja wie willst Du denn das anders als mit Einzel-Scripten lösen?
-
@_nico sagte in Blocky - Hat sich der Wert X schon wieder geändert?:
So?
Ich verstehe ehrlich gesagt nich was Du da versuchst.
Du sprichst ja immer den den gleichen Datenpunkt an und weil Du ihn veränderts Triggerst Du ihn auch gleich wieder?! -
@_nico sagte:
Ein kurzes Beispiel wäre nice.
Versuche es mal so:
Wert und Ursprung findet man unter "Trigger".
-
ja wie willst Du denn das anders als mit Einzel-Scripten lösen?
Häh, du hast doch ein Post davor geschrieben:
Also ich persönlich finde es deutlich einfacher einmal eine Liste anzulegen die abgearbeitet wird, als 13 einzelne Scripte
Ich glaube wir reden aneinander vorbei. Lassen wir das Thema "gleiche Logik, nur andere Datenpunkt, für alle Rollladenmodule" hier gut sein - mache dazu einen extra Thread auf, wenn dieses Problem gelöst ist.
@BBTown sagte in Blocky - Hat sich der Wert X schon wieder geändert?:
Ich verstehe ehrlich gesagt nich was Du da versuchst.
Du sprichst ja immer den den gleichen Datenpunkt an und weil Du ihn veränderts Triggerst Du ihn auch gleich wieder?!Hmm? Wollte nur wissen, ob der "stop timeout", was du mir empfohlen hast, an der richtigen Stelle ist.
@paul53 sagte in Blocky - Hat sich der Wert X schon wieder geändert?:
@_nico sagte:
Ein kurzes Beispiel wäre nice.
Versuche es mal so:
Wert und Ursprung findet man unter "Trigger".
Danke. Werde es versuchen und melde mich.
-
@_nico
Ich sagteDu könntest mehrere Rolladen - die gleich geschaltet werden sollen - über eine Funktion gemeinsam steuern
-
Hallo Community, danke für eure Hilfe.
So habe ich es jetzt in Blocky umgesetzt inkl. HomeKit Slider Werte-Shizzle-Fix:
Für jeden Rollladen ein Skript und eine zusätzliche Variable für die TargetPosition. Sollte auch für Rollladensteuerungen / Shutter von Qubino und Fibaro funktionieren.
Viele Grüße
-
@BBTown sagte in Blocky+Shutter - getriggerter Wert X nach Timeout geändert?:
@_nico
Ich sagteDu könntest mehrere Rolladen - die gleich geschaltet werden sollen - über eine Funktion gemeinsam steuern
@BBTown sagte in Blocky+Shutter - getriggerter Wert X nach Timeout geändert?:
@_nico sagte in Blocky - Hat sich der Wert X schon wieder geändert?:
Es geht aber nicht um eine zeitgleiche Steuerung? Die Rollläden sollen bei Bedarf, manuell, zu unterschiedlichen Zeit gesteuert werden.
ja wie willst Du denn das anders als mit Einzel-Scripten lösen?
Zur Info für alle und an @BBTown
Ich habe es jetzt über ein Blockly-Skript für alle 13 Shutter-Module umgesetzt - auch wenn sich die Steuerung überschneidet - wird alles ordentlich ausgeführt. Hier habe ich dazu etwas geschrieben.