NEWS
Node-red iobroker Objekte in homekit einbinden
-
@mickym Das Rädchen dreht sich allerdings nicht, welches symbolisiert dass der Rolladen sich noch bewegt.
-
@minta79 Nun in dem Fall ist es halt dann doch so, dass weil der DP des Shelly Adapters der gleiche ist, Du noch einen anderen Datenpunkt brauchst, der signalisiert ob sich der Rolladen noch bewegt oder nicht. Das heißt dieser DP - weiss nicht wie dieser im Shelly Adapter heisst triggert den Flow und sobald der Rolladen stillsteht holst Du mit einer get Node den CurrentState.
Jetzt dreht es sich deshalb nicht - was ich zu Anfang gesagt habe, weil quasi zeitgleich TargetState= Current State. Vorher hat sich das Rädchen dauernd gedreht, weil Du den Current State nie auf Target State gesetzt hast.
-
@mickym Es gibt beim Shelly folgenden DP:
Wenn er auf "open" oder "close" steht bewegt sich der Rolladen, bei "stop" steht er still. Nur wo muss ich den wie in meinen Flow einbinden? Sorry, dass ich mich so schwer tue. -
@minta79 Nun das ist doch kein Problem, Du musst es ja verstehen.
Also die gelben Homekit Node sind das gleiche was der YAHKA Adapter macht. Du steuerst diese mit der Apple HomeApp und dann steuerst Du damit Deine im iobroker angebundenen Geräte.
So wie Du es zum Schluß gepostet hast funktioniert es ja nun super, weil sich das Rädchen nicht mehr dreht.
Über die HomeApp stellst Du die TargetPosition ein, die Dir die Homekit Node ausspukt und die Du in den Positionsdatenpunkt schreibst.
Da dieser gleichzeitig triggert und Du die CurrentPosition sofort den gleichen Wert wie die TargetPosition aufweist, dreht sich nichts und Du bekommst sofort den Zielwert angezeigt. Soweit der jetzige Status und ich hoffe Du verstehst warum das so ist.Nun wollen wir aber, dass die Zielposition erst dann erreicht wird, wenn der Rollladen sich nicht mehr bewegt und das zeigt uns anscheinend nur dieser state Datenpunkt und er der Rollladen steht erst dann still, wenn da stop drin steht. Und erst dann schicken wir folglich die CurrentPosition.
- Wir lassen also den State Datenpunkt triggern und starten deshalb mit einer iobroker In Node.
- Dann interessiert uns aber nur wann der Rolladen still steht. Also interessiert uns nur der Trigger aus dem state Datenpunkt, wenn dieser Stop ist. Das Filtern wir mit der Switch NOde aus
- Dann lesen wir mit der iobroker get Node die Position aus, die der Rollladen erreichen soll (wurde ja am anderen Ende des Flows über die Targetposition gesetzt).
- Schließlich bewegen wir die payload in die Eigenschaft payload.CurrentPosition und füttern damit die Homekit Node und informieren diese über den aktuellen Zustand des Rollladens.
-
@mickym Vielen vielen Dank noch mal für deine Hilfe! Ich habe es jetzt so umgesetzt wie beschrieben. Allerdings kommt in der get-Node die "CurrentPosition" nicht an. Im Debug Node wird auch nichts angezeigt. Im in-Node wird sie angezeigt. Im ersten DP wird auch ein stop übergeben laut Debug Node.
-
@minta79 Na wenn in der DebugStop eine Nachricht rauskommt, dann muss auch aus der getNode was rauskommen, wenn das Topic richtig gesetzt is. Aus der getNode kommt ja nur der Wert der in dem Position Datenpunkt steht und da steht ja was drin.
Also nochmal topic in der position getNode überprüfen bzw. das Topic halt richtig auswählen.
Wenn in der DebugStop Node nichts rauskommt, aus der Debugstate aber schon, dann halt mal alle states im Debugfenster der Debugstate anschauen und schauen, ob eine stop richtig ist eventuell poste den output der Debugstate.
-
@mickym Aus der DebugStop Node kommt keine Meldung. Hier die Ausgaben:
![Bildschirmfoto 2022-01-01 um 21.55.21.png]
Im Topic steht der DP "Position". Den hatte ich auch vorher in dem in-Node drin. -
@minta79 Dann stimmt was an der switch Node nicht. Die stop Nachricht muss durchgelassen werden. Überprüf die switch Node nochmal. Vielleicht irgendwelche Leerzeichen dahinter oder vor dem stop - Groß und Kleinschreibung.
-
@mickym Hier noch mal die get Node
und die Switch Node
-
@minta79 sagte in Node-red iobroker Objekte in homekit einbinden:
@mickym Hier noch mal die get Node
und die Switch Node
@minta79 Da steht stiop
in der Switch NOde.
-
@mickym Oh nein, wie peinlich
Ich glaube es funktioniert jetzt.
Eine Frage noch. Immer wenn ich den Flow speichere/deploye dann steht der Schalter in HomeKIt immer auf geschlossen, egal wie der aktuelle Status ist. Ich muss dann erst den Rolladen kurz "bewegen", damit der richtige Status wieder angezeigt wird. Kann man das irgendwie triggern, dass der Homekit Schalter sich den aktuellen Status holt?
-
@minta79 Nun normalerweise passiert das nur, wenn Du NodeRed neu startest oder Du bei Deploy immer den ganzen Flow neu deployest und nicht nur die geänderten Nodes. Wenn es nach dem Neustart von NodeRed Probleme macht kannst Du in der iobroker IN Node spezifizieren, dass der Status zu Beginn ausgelesen wird.
-
@mickym Ah super. Danke für den Tipp.
Noch eine Frage bitte. Bei einer Steckdose habe ich das Problem , dass ich sie zwar mit dem Homekit Schalter an und aus bekommen, wenn ich aber den Status von anderweitig setze, z.B. über Jarvis, bekommt der Schalter den neuen Status nicht mit. Muss ich da dann auch mit einer get-Node arbeiten oder mit einem trigger o.ä.?
-
@minta79 Das Prinzip ist immer das Gleiche. Wenn Du anderweitig schaltest ändern sich ja die Datenpunkte des Gerätes und diese Änderungen sollten dann triggern um die homekit Nodes zu aktualisieren. Also mit In-Nodes. Wir haben nur bei dem Rolladen zusätzlich den Status des Rollladens auslesen müssen, getriggert hatte der state.
Sprich es ist Deine Aufgabe, dass die HomeKit Nodes den richtigen Status haben. Die HomeKit Nodes wiederum geben das aus, was Du in der Home App veränderst.
Du musst halt aufpassen, dass Du Dir keine Endlosschleifen einfängst. Sprich Du steuerst über einen Datenpunkt der gleichzeitig das gleiche Gerät triggert. Falls da so ist, dann musst Du eigene Marker ggf. einsetzen oder mit dem ACK Flag arbeiten, um zu unterscheiden, ob der Datenpunkt durch Bedienung der HomeApp oder durch Aktualisierung gesetzt wurde.
-
@mickym said in Node-red iobroker Objekte in homekit einbinden:
Du musst halt aufpassen, dass Du Dir keine Endlosschleifen einfängst. Sprich Du steuerst über einen Datenpunkt der gleichzeitig das gleiche Gerät triggert. Falls da so ist, dann musst Du eigene Marker ggf. einsetzen oder mit dem ACK Flag arbeiten, um zu unterscheiden, ob der Datenpunkt durch Bedienung der HomeApp oder durch Aktualisierung gesetzt wurde.
Genau das ist gerade mein Problem
-
@minta79 Gut dann musst Du mit dem ACK Flag arbeiten.
Unterbrich mal die Verbindung von der iobroker In Node und der HomeKit Node. Mache eine Debug Node an die iobroker In Node und analsiere das komplete Nachrichtenobjekt in der Debug Node.
Ein Debug Node mit dem kompletten Nachrichtenobjekte machst Du an die Homekit Node.
Die Nachricht die aus der Homekit Node rauskommt, sollte kein gesetztes ACK Flag haben. (Wenn Du die Steckdose über die APP bedienst)Die Nachricht aus der iobroker IN Node sollte ein ACK Flag gleich true haben. (Wenn Du die Steckdose anderweitig steuerst Jarvis etc.)
STOP:
Vielleicht geht das Ganze auch einfacher:
Schau mal wenn Du hier einfach in Deiner Bridge Konfiguration den Passthrough Haken rausmachst:
Dann sollte es auch keine Endlosschleifen geben. Wenn das nicht funktioniert, dann müssen wir die erste Methode anwenden.
Zusätzlich setzt Du in Deinen Iobroker In-Nodes noch
dann sollten die Nachrichten nicht doppelt kommen, insbesondere sollten dann die Nachrichten, die Du über jarvis oder andere Visualisierungen schreibst ausfilterst.
-
@mickym wenn ich den Haken rausnheme, geht die Steckdose kurz an und nach 2-3 Sekunden wieder aus
-
- Welchen Haken - Hast Du den Haken in Deiner HomeKit KonfigNode rausgenommen?
Das ist Prio 1.
- Den Haken in der Iobroker IN Node "Send only on then ack === true" den reinmachen und nicht rausmachen.
-
- den Haken bei "Allow Message Passthrough" habe ich rausgenomme
- den haken habe ich gerade gesetzt - trotzdem geht der Schalter nach ein paar Sekunden wieder aus - das muss doch an dem ACK Flag liegen, denn wenn ich den Status im iobroker Objekt setze passiert das gleiche wenn ich nicht "bestätige"
-
@minta79 sagte in Node-red iobroker Objekte in homekit einbinden:
@mickym ja den Haken bei "Allow Message Passthrough"
Wie gesagt und den Haken in der iobroker IN rein machen.
Die erste Nachricht dürfte gar nicht mehr rein kommen:
ACK = false.
Die Payload sollte dann auch nur noch false durchlassen - sprich Lampe ist ausgeschaltet.