Apple HomeKit über Websockets

Hallo zusammen,

erst ein Mal geht ein ganz dickes danke an Nall Chan, ohne ihn wäre ich noch nicht so weit, wie ich es nun bin. Viel Dank, Michael.

Dieses Modul basiert auf der Homebridge von nfarina (GitHub - nfarina/homebridge: HomeKit support for the impatient) und dem Homebridge Plugin von cflurin (GitHub - cflurin/homebridge-websocket: Homebridge Plugin).

Damit das Homebridge Modul von cflurin mit meinem PHP Modul für IP-Symcon arbeiten kann, musste ich ein paar kleine Änderungen vornehmen.
Deshalb gibt es einen Fork für dieses Plugin und die Änderungen können an dieser Stelle eingesehen werden: Commits homebridge-websocket GitHub

So kommen wir zum Modul.

Mit dem Modul ist es möglich über die Homebridge IP-Symcon mit dem Apple HomeKit zu verknüpfen und somit IP-Symcon über Siri zu steuern.

Beispiel: „Siri, schalte das Deckenlicht im Wohnzimmer ein!“

Zur Zeit sind folgende Geräte bedienbar:

[ul]
[li]Luftfeuchte[/li][li]Licht inkl. Dimmer[/li][li]Rauchmelder[/li][li]Schalter[/li][li]Temperatursensor[/li][li]Thermostat[/li][li]Fenstermotoren und Rollos[/li][li]Lautsprecher[/li][/ul]

Weitere werden nach und nach folgen. :slight_smile:

Voraussetzungen:

[ul]
[li]IP-Symcon 4.1[/li][li]Websocket Modul von Nall Chan[/li][li]Homebridge von nfarina[/li][li]Homebridge Plugin von cflurin, mit meinen Veränderungen[/li][/ul]

Dies ist eine Beta Version!

Installation für IP-Symcon:
Websocket Modul von Nall Chan:

https://github.com/Nall-chan/IPSNetwork.git

IPS-Homebridge Modul von mir:

https://github.com/Schnittcher/IPS-Homebridge.git

Homebridge Installation, falls noch nicht vorhanden:

sudo npm install -g homebridge

Plugin Installation für die Homebridge:

sudo npm install -g https://github.com/Schnittcher/homebridge-websocket.git

Konfiguration der Homebridge:
Folgende Zeilen in der config.json einfügen unter platform hinzufügen:

{
  "platform" : "websocket",
  "name" : "websocket",
  "port": 4050
}

Einrichtung des IPS Moduls

Anlegen einer neuen Instanz zum Beispiel IPS_HomebridgeLightbulb.
Es wird ein IPs_HomebridgeSplitter und ein WebsocketClient mitangelegt, die Konfigruation bitte den Screenshots entnehmen:

Instanz hinzufügen.png

Weiter geht es mit der Konfiguration der eigentlichen Instanz, dort gebt ihr den Namen für Siri an, unter Status die Variable, in dem der Status hinterlegt ist und wenn die Lampe dimmbar ist, dann den haken für dimmbar setzen und die Variable für die Brightness hinterlegen, also die Variable, in der IPS die Intensität der Lampe speichert.

Und sonst probiert einfach mal ein wenig mit den anderen Modulen, sollte es Fragen geben stellt sie ruhig.
Das Modul für einen Thermostaten funktioniert noch nicht und kann nicht verwendet werden!

Ich hoffe ich habe jetzt nichts vergessen.

Grüße,
Kai

Hallo,

ich habe mal eben die Installation gemacht. Im Log des Websockets als auch des Homebridgesplitters stehen auch viele Daten. Ich habe einen „Switch“ erstellt (probiert mit einem echten Gerät und einer erstellten Booleanvariable), aber leider schaltet er (in beiden Fällen) die Variable nicht :confused:

Würde gerne mehr Infos geben, aber welche? :slight_smile:

Gruß
Adam

Hallo Adam,

zeig mir mal ein Screenshot von der Switch Instanz und von dem WebsocketClient.
Dann wären die Meldungen aus dem Splitter interessant, welche im JSON ein Switch als Service besitzen.

Du kannst mir auch ein Dump vom Splitter geben, wenn du die Variable geschaltet hast.
In dem Debug Fenster einfach „Speichern als“ anklicken, wäre schön wenn du vorher ein Mal das Fenster leerst, das nur noch die Daten vorhanden sind die durch das schalten zustande gekommen sind.

Die Booleanvariable kann noch nicht funktionieren, dafür werde ich wahrscheinlich noch ein eigenes Modul bauen.

Was sagt denn die Homebridge? Sieht da alles gut aus?

Grüße,
Kai

Hallo Kai,

Komando zurück! :banghead:
Es funktioniert! :smiley:
(Ich hatte einen Homematic-aktor genommen, der schon im Homebridge-homematic plugin in Benutzung war).

Was genial wäre: Eine eigene Variable zu schalten, da ich dann jedes x-beliebige Script ausführen könnte.

Danke für deine tolle Arbeit!

Gruß
Adam

Hallo Adam,

kommt vielleicht heute Abend noch. Ich schau mal.

Ich brauch es ja selbst auch. :smiley:

Grüße,
Kai

Hallo Adam,

führ doch mal ein update durch, dann findest du im Switch Modul einen Haken für: „Soll eine eigene Variable geschaltet werden?“

Dort einfach den Haken auf ja setzen, wenn es eine Variable ist, die du selbst angelegt hast und schon solltest du deine eigene Variable dort schalten können. Bei Gerät dann einfach gar nichts angeben. :slight_smile:

Grüße,
Kai

ich habe gerade die Homebridge auf einer Synology DS415+ (aktuellste FW DSM 6.0.2-8451 Update 9) mit deinem Plugin zum laufen gebracht (nach dieser Anleitung -> Docker Hub ) und auch die Symbox mag jetzt alles ohne offensichtliche Fehler connecten (WebsocketClient ist verbunden). Dafür ein dickes DANKE, auch an Nall Chan!
Testen kann ich erst heute abend, wenn ich dann im Wlan bin.

:loveips:

Hallo,
habe auch die beta schon ausprobiert und die ersten Erfolge erzielt.
Besten Dank für Deine gute Arbeit.

Ein Problem ist aufgetreten:
Beim Auslesen von Aussentemperatursensoren (Netatmo) gibt es eine Fehlermeldung von Homebridge, da von dort negative Werte kommen:
Accessory.parse Temperatur CurrentTemperature value ‚-1.9‘ outside range.
[2/8/2017, 5:16:42 PM] [websocket] onMessage value ‚-1.9‘ outside range

Vielleicht liegt es auch an mir, aber Du kannst ja mal drüber nachdenken.

Viele Grüße
Thilo

Hallo,

ich habe es bis heute auch noch nicht mit negativen Zahlen getestet muss ich gestehen, ich schau es mir an und gebe dir eine Rückmeldung.

Grüße,
Kai

Super Sache!! - Installiert und rennt.
Nur bei den Homematic Dimmer passt was mit der Umrechnung nicht… siehe Bild - hatte am iPhone auf 72% gesetzt. :smiley:
Aber 7200% packt meine Glühbirne leider nicht… :stuck_out_tongue:


Wenn ich was für Homematic testen kann, einfach melden.

PS: Hab mal meinen Aussenfühler ins Gefrierfach gesteckt. :rolleyes:
PPS: Geht auch hier nicht mehr bei -0,5°C :cool:

Ok,negative Werte hat Kai nicht nicht gesehen, baue jetzt den Aussensensor ein.
Sorry auch mein Fehler, nicht alle Dinge zu testen (Ist bei uns der gleiche Pi.:D) im Haus…

Fehler erkannt:
Accessory.parse Temperatur Außen CurrentTemperature value ‚-2‘ outside range.

Wollt noch mal bezüglich der Ansteuerung eines Scripts nachfragen. Hab Jetzt eine Boolean Variable erstellt und schalte den mit einem Switch der Homebridge. Funktioniert auch alles super. Jetzt Habe ich unter dem Boolean noch ein Ereignis welches diese Boolean wieder Inaktiv setzt, da man für ein Script nur einen Taster braucht.
Jetzt die Frage… :smiley:
Könnte man nicht auf dem Switch, unterhalb von „eigene Variable“ eine Auswahlbox für ein Script machen und das „Spielchen“ was ich mit dem Boolean und dem Ereignis treibe direkt im Modul abhandeln?
Dann könnte man sich ja bei jedem mal 2 Variablen „sparen“… :smiley:

Dies aber nur als eine Idee? …kann ja auch sein das ich das auf der Seite 1 falsch verstanden habe. :rolleyes:

edit:
Jetzt hab ich grad festgestellt das ich auch Scripte Starten möchte, indem ich z.B. sage „Alle Radios >aus<“ hier setze ich mir nach dem Befehl „runscript“ die Variable immer wieder Ein… …ich hoffe man versteht mich… :D:D

Zu negativen Temperaturen, kommt später noch ein Update spätestens morgen.

Zu allen Geräten, wieso keine Szene in HomeKit erstellen?

Bei dem anderem müssen wir mal zusammen schauen. Hab ich gerade nicht so vor Augen, bin noch unterwegs.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Hallo Kai,

vielen Dank für Deine Arbeit und das Teilen!

Sag mal: Wo kommt die config.json mit dem von Dir beschrieben Inhalt hin? Ich bin mir unsicher…

Joachim

Hallo Joachim,
kann jetzt nur für Pi sprechen…
im user Verzeichniss in „.homebridge“ muss die config.json rein.

Hallo,

seid mir nicht böse, aber das mit den negativen Temperaturen braucht noch etwas, ich muss einiges mehr anpassen als gedacht.
Ich denke morgen wird es was mit dem Update dafür. :slight_smile:

Edit: Also, um die negativen Werte darzustellen muss das Gerät in der Homebridge etwas anders angelegt werden. Heißt also, ich muss Geräte löschen einbauen, damit ihr das aktuelle Gerät löschen könnt und ich muss das Gerät anders hinzufügen. Per Hand konnte ich das hier schon mal zusammenstellen, nun muss ich das noch in das Modul einbauen.

Grüße,
Kai

Hey!

Vielen Dank für die neue Version! :slight_smile:

Ich habe zwei Probleme:

Das kleinere:
Ich hatte mich im Namensfeld bei einem Gerät verschrieben. Nachdem ich den Tippfehler korrigiert hatte, wurde das Gerät in iOS leider als weiteres neues Gerät angezeigt. Wie werde ich das alte mit dem Tippfehler wieder los? :slight_smile:

Das größere:
Das ganze funktioniert für mich etwa 2 Minuten lang, danach sind alle Geräte entweder nicht mehr erreichbar oder stehen dauerhaft auf „Aktualisieren“. Die Homebridge läuft aber weiterhin und auch in IPS wird alles als verbunden angezeigt.
Nachdem ich ja erst vorgestern die alte Version installiert hatte, habe ich mich gefragt, ob es irgendwas noch damit zu tun hatte. Was ich heute an Steps gemacht habe, war:

  • Dein Modul aktualisiert
  • Das Websocket Modul in IPS installiert
  • Websocket Plugin für Homebridge installiert
  • In der config.json alle Geräte rausgeschmissen und stattdessen die Platform eingetragen

Wenn ich in IPS ein neues Gerät anlege, erscheint dieses auch unmittelbar in IPS, jedoch mit dem Status „Aktualisieren“.

Falls es hilfreich ist, hier ein Auszug aus dem Debug vom Splitter und vom Websocket.

splitter.txt (27.6 KB)

websocket.txt (42.7 KB)

Hallo Sketch,

zu deinem 1. Problem, wird noch gelöst, ich habe die Funktion noch nicht eingebaut. Werde ich schnellstmöglich hinzufügen.

Dein 2. Problem, kann ich leider nicht nachvollziehen, aber es gibt noch einen User, der dieses Problem anscheinend hat.
Ich vermute zur Zeit, dass es daran liegt, das du evtl. Geräte in der Bridge hast, die in IPS nicht vorhanden sind.

Wenn du etwas probieren möchtest, dann gehe in den Homebridge Ordner und lösche mal den Ordner „persist“ und den Ordner „accessories“ vorher aber die Homebridge schließen.
Dann sind alle Geräte erstmal wieder entfernt und du musst dich mit der Homebridge erneut verbinden.

Oder versuch als erstes in dem WebsocketClient Splitter den Haken rauszunehmen, danach wieder setzen und übernehmen drücken, dann schau mal ob du wieder eine Verbindung bekommst.

Grüße,
Kai

Hmm, nur den Websocket neu verbinden hatte ich auch schon probiert, hilft leider nicht. Verbindung zwischen IPS und Homebridge scheint auch bestehen zu bleiben. Außer wenn ich von Hand eingreife zeigt er mir bei der Homebridge auch keinen connect oder disconnect an.

Ich habe mal die beiden Ordner gelöscht, Homebridge in der Home App gelöscht und anschließend alles neu angelegt.
Dann hat für knapp 5 Minuten alles wunderbar funktioniert, dann ging der Status bei allen wieder auf „Aktualisieren“ ohne dass sich irgendwas schalten ließ und nun zeigt er bei allen wieder „Keine Antwort“. :frowning:

Alle 5 Minuten alle Geräten löschen und neu hinzufügen ist irgendwie doof … :smiley:

Hallo,
das ist merkwürdig. Wo hast du die Homebridge installiert? Auf einem Pi?
Du sagst die Homebridge bleibt an? Hast du noch andere Module in der Homebridge?

Was sagt das Log der Homebridge?

Grüße,
Kai

Gesendet von iPhone mit Tapatalk