NEWS
bshb - Rollladensteuerung mit yhka Homekit
-
@sascho Ja Du siehst ja habe damals beide Wege ausprobiert - also einer von beiden müsste klappen. Du hast es allerdings nicht exakt übernommen - damit es richtig funktioniert und auch die Bestätigung kommt musst Du bei CurrentPosition only ACk nehmen.
dann kann man nämlich den gleichen Datenpunkt nehmen und wartet bis der Adapter ihn bestätigt hat.
Und ja so wie Du es unten hast, hatte ich es ja zuerst (wenn Du den Thread runter blätterst). Bei Homematic ist das wohl wieder umgekehrt - macht wohl jeder Hersteller, wie es ihm passt.
-
@mickym Okay, ich habe das jetzt mal testweise auf ACk umgestellt, aber keinen Unterschied gemerkt. Beim Öffnen und Schließen kommt sofort die Rückmeldung geöffnet/geschlossen. Für mich wäre das auch okay.
Bzgl. der Beleuchtungen bin ich leider noch nicht weitergekommen.
Bei Homematic ist der Status "Off" und "On". Ist er beim Homekit 0 und 1?
Was müsste ich Scriptseitig eingeben um die Werte zu konvertieren?
-
@sascho Dann nimmst Du am besten ein mapping.
In meinen Augen müsste es aber nicht 0 und 1 im Homekit sein, sondern true und false:
Du siehst das Format ist "bool"
Kannst es aber auch mit 1 und 0 versuchen - in jedem Fall würde ich es hier mit einem Mapping versuchen. (ggf. noch das simple Value ankreuzen - bin mir aber nicht sicher)
-
@mickym said in bshb - Rollladensteuerung mit yhka Homekit:
Mit True/False klappt es gar nicht:
Mit 1 und 0 klappt das ein und ausschalten mit Apple Home perfekt. Allerdings wenn ich Einschalte, springt der Status in Apple Home sofort wieder auf Aus.
-
@sascho Na dann würde ich es trotzdem mit dem mapping machen und halt On = 1 und Off = 0
Bei mir werden die ganzen Datenpunkte halt über Aliase bereits aufbereitet und da sind diel Lampen für den Homekit true und false.
-
@mickym
Die Variante mit dem Mapping klappt auch:
Allerdings gleiches Verhalten wie mit dem Script beim Einschalten - der Status in der Home App springt kurz auf Ein und dann sofort wieder auf aus. Wenn ich dann noch mal auf draufklicke bleibt der Status auf ein.
-
@sascho Dann probier mal iobroker.Defered oder iobroker.OnlyACK. Wenn das auch nicht klappt - dann mach es mit Alias.
-
@mickym
Hat leider auch nicht geklappt . Wie funktioniert das grundsätzlich mit den Alias? -
@sascho Inzwischen gibts einen guten Aliasadapter - den installieren.
Damit hat Du generell auch den Vorteil, dass wenn später mal eine Hardware ausgetauscht werden muss, dass nicht alle Logikscripte umgestellt werden müssen.
Im Homekit kannst Du dann mit true und false arbeiten - wie es Homekit versteht
Das heißt im Homekit machst Du dann einfach ein passthrough des iobroker States.
Die Umsetzung von on auf false oder true ist bei mir bei Lesen des Orginaldatenpunktes in dem Fall eine Shelly-Steckdose. Die versteht nämlich auch nur on oder off.
-
@mickym
Das ist also der Shelly Adapter? Ich habe den gerade mal installiert. Wie lege ich denn für meine Lichtsteuerung einen Alias an? -
@sascho Nein das ist ein eigener Alias Adapter - und hat mit Shelly nichts zu tun. Die Steckdose ist ein Shelly -
aber soweit ich verstanden habe, hast Du ja Homematic Geräte.
Falls Du den Alias Manager Adapter nicht findest - musst Du mal kurzfristig Dein Verwahrort von stable auf latest umstellen.
Dann sofort wieder zurückstellen.
Den Shelly Adapter kannst Du getrost wieder löschen - der hat damit nichts zu tun. Sorry wenn mein Beispiel Screenshot Dich verwirrt hat. Das war nicht meine Absicht. Hätte auch ein anderes Gerät nehmen können.
Hast Du den Adapter installiert, dann legst Du für Deine Lampe einen neuen Alias an:
Ich habe den mal Saschos Lampe genannt:
Dann fügst Du einen leeren Datenpunkt hinzu - vorgeschalgen wird Dir SET - das kannst DU übernehmen, das ist Dein Datenpunkt Alias mit dem Du Deine Homematic Lampe schaltest:
Dort führst Du dann folgende Änderungen durch - markiere ich Dir:
Links unten muss Dein Orginaldatenpunkt rein, mit dem Du Deine Homematic Lampe mit ON oder OFF steuerst.
Wenn Du alles abgespeichert hast, dann hast Du im iobroker einen neuen Datenpunkt,
Nun solltest Du hier über true und false Dein Licht schalten können.
Wenn das klappt kannst diesen Datenpunkt einfach über passthrough im YAHAKA Adapter angeben.
Falls notwendig kannst noch das write schreiben. Ich musste es nicht, weil irgendwie der Shelly das selber umsetzte.
Aber so wie Du bei Read:
val === 'on' ? true : false
eingetragen hast kannst Du unter write dann
val ? 'on' : 'off'
Wenn Du Dir dann die Definition des Datenpunktes anschaust, dann siehst Du dass die Übersetzungen im Alias definiert sind:
-
@mickym said in bshb - Rollladensteuerung mit yhka Homekit:
val ? 'on' : 'off'
Also ich bin Deiner Anleitung soweit wie möglich gefolgt. Das Ein- und Ausschalten funktioniert. Aber wie bei dem Mappingansatz springt der Status nach dem Einschalten sofort wieder auf Aus zurück... Man sieht das übrigens auch im Alias Wertfeld False>True>False
P.S. Muss man eigentlich die Homematic IDs im Internet unkenntlich machen, wie Fahrgestellnummern ;-)?
-
@sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:
P.S. Muss man eigentlich die Homematic IDs im Internet unkenntlich machen, wie Fahrgestellnummern ;-)?
Machs einfach - keine Ahnung ob man wirklich was damit anfangen kann.
Geht denn das schalten, wenn Du direkt true oder fals in das Objekt einträgst?
Und Du hast den ON Punkt auch so definiert:
und Service Type:
wenn das alles vergleichbar ist - dann bin ich ehrlich mit meiner Weisheit am Ende - dann hoffe ich, dass Dir sonst noch jemand hier aus der Community helfen kann.
Du könntest beim Alias Datenpunkt - mal das Alias Write Feld (ganz rechts unten) löschen - bei mir geht das Ohne - dachte das liegt aber an den Shellies, dass die das übersetzen können.
-
@mickym
Also Lightbulb ist das Gerät schon die ganze Zeit konfiguriert :-(:
Wenn ich hinter das Alias Objekt ein .On in yahka hänge, wird die Kachel als Fehler in Apple Home angezeigt:
Das war es doch wo ich anpassen sollte oder?Vielleicht wäre noch eine Lösung, das Status Update um eine Sekunde zu verzögern? Ich habe beobachtet, dass der Status False nur ganz kurz steht und in diesem Moment von yahka abgefragt wird. Wenn Yahka den Status erst eine Sekunde nach Button Betätigung den Status abfragen würde, kommt sicher der richtige True Status. Der korrekte "Ein" Status kommt übrigens auch wenn man den Button 2x drückt.
-
@sascho Nein dss meinte ich nicht mit dem On sondern in dem Alias objekt das write val ? ‚on‘:‘off‘ rauslöschen.
Was Du in jedem Fall machen kannst. Lege einen boolean Datenpunkt unter 0_userdata-0 ab. Mit yahaka sollte dieser Datenpunkt mit true und false ohne Probleme zu schalten sein. Auch wenn du den Datenpunkt im ioBroker manuell änderst sollte diese im HomeKit sichtbar sein. Die Lampe effektiv schaltest du dann über deine Logikmaschine (blockly, node-red oder js)
-
Du meinst so einen Datenpunkt?
Mit yahka kann ich drauf schalten.
Allerdings habe ich keine Erfahrung im Coding, wie ich diesen Datenpunkt zwischen yahka und der Bosch API verknüpfen kann - sowohl für das Schalten als auch die Statusrückmeldung -
Aber genau das meinte ich mit einen Datenpunkt erstellen - das passt schon gut. Bei der Conversion im YAHAKA musst Du denke ich passthrough einstellen.
Wichtig ist erst mal, dass das funktioniert.
Sprich Du kannst im Apple HomeKit aus und einschalten und kannst umgekehrt, wenn Du den Punkt unter userdata true oder false schaltest sich das im HomeKit auch so darstellt.Allerdings habe ich keine Erfahrung im Coding, wie ich diesen Datenpunkt zwischen yahka und der Bosch API verknüpfen kann - sowohl für das Schalten als auch die Statusrückmeldung
Na da kann ich Dir mit Node Red aushelfen. Das ist nicht kompliziert.
Wenn das klappt - wie gesagt den Datenpunkt zwischen dem Homematic Bosch Datenpunkt und der userdata.0.Test Datenpunkt ist easy.
Wenn das klappt - dann können wir nämlich einfach die beiden Punkte verbinden (hin und rück) und dabei übersetzten. Wenn man dann noch ein delay oder was braucht, dann bauen wir das halt dann ein.
In diesen translate nodes wird dann einfach true und false gegen on und off getauscht - wie bis jetzt ja auch:
Ist das eigentlich dieser Adapter den Du benutzt?
oder ist das HomeMatic ??? - irgendwie blicke ich das noch nicht.
Hier wurde für den Switch mit YAHAKA das Script beschrieben, dass Du aber genau so schon benutzt hattest. Im Prinzip haben wir das ja alles schon ausprobiert.
https://github.com/holomekc/ioBroker.bshb/wiki/Yahka-Switch
Mal unabhängig von der NodeRed Lösung - wäre es ggf. wenn das HomematicIP ist, macht es dann eigentlich nicht mehr Sinn diesen Adapter zu nutzen?
-
Also ich habe mich mal in Node Red eingearbeitet - super, sieht wirklich benutzerfreundlich aus.
So sieht mein Mapping aus:
Translate_1:
Translate_2:
Das Umschalten des Userdata Status True/False funktionierte ja schon über die Homekit App, allerdings empfängt die Bosch API kein Update:
Muss ich den Node Red Flow noch irgendwie aktivieren? Ich habe nur Übernehmen geklickt.
Bzgl. BSHB:
Die Lichtsteuerungen und Rollladensteuerungen sind Homematic Hardware. Andere Komponenten wie die Bewegungsmelder, Rauchmelder usw. sind Bosch-Entwicklungen.
Ich kann den Bosch eignen Adapter für die Lichtsteuerungen einsetzen. Allerdings kann dieser Adapter noch nicht alles - z.B. werden die Temperaturwerte (Soll/Ist) von den Raumthermostaten nicht in die Homekit App übernommen. Teilweise werden Sensorwerte konsolidiert, die ich gerne separat zeigen möchten. Deswegen würde ich gerne nach und nach komplett auf Yahka umstellen :-). -
@sascho Huch - Du überraschst mich ja immer wieder - was Du dann so plötzlich alles treibst.
Zu einen geh erst mal in die Adaptereinstellungen von Node-Red und nimm bitte den Haken raus, das alles in Strings konvertiert wird.
Also diese Option:
darf NICHT aktiv sein.
Dann darfst Du nicht die Get Nodes verwenden, sondern die iobroker-IN Nodes.
Die schauen so aus:
Haben also keinen Eingang und nur einen Ausgang.
Umgekehrt nimmst Du für die out-Nodes nur diese:
die haben nur einen Eingang und keinen Ausgang:
Nun aber Vorsicht, dass Du keine Endlosschleifen produzierst und Dein System lahm legst. In den iobroker-In Nodes, trägst Du deshalb zur Sicherheit erst mal ein, dass nur bei geänderten Werten eine Nachricht gesendet werden soll.
Dann machst Du hinter Deinen beiden translate Nodes bitte noch jeweils eine Debug Node und schaust Dir an, ob im Debugfenster das richtige rauskommt:
Wenn Du nicht zurecht kommst, dann kann ich den Flow auch für Dich machen und Du importierst ihn noch. Wichtig sind aber erst mal die Adaptereinstellungen und dann versuchs halt erst mal.
Und jede Änderung wird erst durch Übernehmen aktiv. Wir schauen erst mal, dass Du das hinbekommst. Wenn Du dann noch Lust hast, Dich weiter in NodeRed einzuarbeiten, dann habe ich ein paar Links und Videos für Dich.
Getriggert werden die Flows dann übrigens automatisch durch Aktualisierung - deswegen ist es so wichtig, dass Du erst mal nur Änderungen durchlässt.
Im Prinzip funktionieren Dein Flow (mit den richtigen in und out Nodes dann so).
- Im Homekit änderst Du 0_userdata.0.Test zu true oder false - damit triggerst Du den oberen Flow.
- In translate1 wird dann true bzw. false in on oder off übersetzt und in den bshb.0. .... Punkt geschrieben. Da sich dieser nun auch ändert, wird automatisch der
- untere Flow getriggert, der nun falls geändert über translate 2 den 0_userdata.0.Test wieder true bzw. false schreibt,
- Damit wird der obere Teil wieder getriggert - der weiterlaufen würde (Endlosschleife), wenn Du da nicht reinschreibst, dass nur geänderte Werte weitergereicht werden. Deswegen ist das so wichtig - sonst legst Du wie gesagt Dein System lahm - aber ich denke das ist nun mit der BEschreibung leicht zu begreifen.
Ach und noch was - wenn Du den bshb.0 Node mit der iobroker out Node beschreibst, dann nimmst Du bitte den Typ command:
wenn Du den 0_userdata.0.Test beschreibst den Typ value:
Das hat was mit dem ACK Flag zu tun, was unter 0_userdata.0 sonst nie gesetzt wird, bei anderen Datenpunkten aber durch den entsprechenden Adapter.
-
Ja, ich taste mich Schritt für Schritt an das Machbare heran. Später würde ich gerne auch noch den Wechselrichter mit der Wallbox verknüpfen. Ursprünglich wollte ich über Relais gehen, aber wenn das alles per Software machbar ist, um so besser :-).
Also, gestern hat es geklappt mit der oben beschriebenen Lösung: Datenpunkt and yahka anbinden, mit Node Red an den Bosch Adapter heranzugehen. Ich musste auch kein Delay einbauen, der Status wurde sauber angezeigt.
Jetzt wollte ich heute mal ein paar Lampen anschließen und habe neue Datenpunkte angelegt und den Testdatenpunkt gelöscht, aber Node Red erkennt neu angelegte Datenpunkte nicht sondern hat nur den bereits gelöschten Datenpunkt als Topicauswahl. Muss man Node Red neu einlesen?