Community

Erstellung eines Homebridge Plugins für HomeKit


#41

Bevor ich mit den Webhooks rumexperimentiert habe, konnte ich die Homebridge bereits in der iOS App einrichten. Nach Zurücksetzen der App wird jetzt nichts mehr gefunden. Es kommt der Fehler:

[2016-12-29 18:52:27] Loaded plugin: homebridge-http-webhooks
[2016-12-29 18:52:27] Registering platform 'homebridge-http-webhooks.HttpWebHooks'
[2016-12-29 18:52:27] Registering accessory 'homebridge-http-webhooks.HttpWebHookSensor'
[2016-12-29 18:52:27] Registering accessory 'homebridge-http-webhooks.HttpWebHookSwitch'
[2016-12-29 18:52:27] ---
[2016-12-29 18:52:27] Loaded config.json with 0 accessories and 1 platforms.
[2016-12-29 18:52:27] ---
[2016-12-29 18:52:27] Loading 1 platforms...
[2016-12-29 18:52:27] Initializing HttpWebHooks platform...
[2016-12-29 18:52:27] Initializing platform accessory 'Alle Lichter'...
[2016-12-29 18:52:27] Started server for webhooks on port '51827'.
[2016-12-29 18:52:27] Loading 0 accessories...
Scan this code with your HomeKit App on your iOS device to pair with Homebridge:

┌────────────┐
│ 031-45-154 │
└────────────┘

events.js:141
  throw er; // Unhandled 'error' event
  ^

Error: listen EADDRINUSE :::51827
at Object.exports._errnoException (util.js:907:11)
at exports._exceptionWithHostPort (util.js:930:20)
at Server._listen2 (net.js:1250:14)
at listen (net.js:1286:10)
at Server.listen (net.js:1382:5)
at Object.HttpWebHooksPlatform.accessories (/usr/local/lib/node_modules/homebridge-   
http-webhooks/index.js:102:24)
at Server._loadPlatformAccessories (/usr/local/lib/node_modules/homebridge/lib/server.js:354:20)
at Server._loadPlatforms (/usr/local/lib/node_modules/homebridge/lib/server.js:298:16)
at Server.run (/usr/local/lib/node_modules/homebridge/lib/server.js:80:36)
at module.exports (/usr/local/lib/node_modules/homebridge/lib/cli.js:40:10)

Jemand ne Ahnung woran es liegen könnte?


#42

Hi,

die URL aus dem JSON muss im Browser auch funktionieren.

http://Homee:7681/api/v2/webhook_trigger?webhooks_key=THEKEY&event=Alle_Lichter_an einfach im Browser testen. Dann sollten alle Lichter an gehen, die andere schaltet alles wieder aus.

Geht das?

Edit: Der Fehler oben bedeutet, dass der Port wohl noch belegt ist an der die Bridge hören soll. Raspberry? Dann einen Neustart… danach sollte es gehen, wenn nicht wäre auch ein Rechteproblem möglich

Grüße


#43

Nein. Aber was ist hier falsch?
Auch das Ersetzen von “Homee” durch die IP funktioniert nicht. Liegt es am Port? Wie sieht das bei Dir aus?

Der WebHook sieht so aus:
https://HomeeID.hom.ee/api/v2/webhook_trigger?webhooks_key=KEY&event=Alle_Lichter_an

Wenn ich den auslöse, kommt OK und die Lichter gehen an.


#44

Neben der IP muss uach der Webhook Key eingetragen werden, der Webhook muss “Alle_Lichter_an” heißen. Den Key findest du im Homegramm… ist ein recht langer String der aus Großbuchstaben besteht.

Edit:
Den Key (wenn es deiner ist, solltest du entfernen).
Wenn sie an und aus gehen, passt es schon, jetzt nur den Raspberry neu starten, dann sollte der Port wieder frei sein. Ich vermute da läuft noch eine Bridge

Grüße


#45

Also Links funktionieren jetzt. Danke hierfür schon einmal.
Neustart hat leider nichts bewirkt. Fehler siehe vorheriger Post. :disappointed_relieved:

Auch in der Home App wird nichts gefunden. Vor dem WebHook Plugin wurde die Homebridge sofort gefunden…


#46

Oben, in deinem Script, hast du einmal Port 51826 und danach Port 51827 verwendet… Ist das korrekt so?


#47

OK. Fehler ist gefunden. Lag an einem Skript zum automatischen Starten der Homebridge. Habe ich gelöscht und neu gebootet.

Neues Problem: Homebridge wird dennoch nicht in der Home App gefunden.


#48

Müssten schon 2 unterschiedliche Ports sein…

Kommt bei “ps -ef | grep -i homebridge” raus?

Edit: Hatte ich vermutet, dass es im Autostart steht, nun gut…
Das mit der Home App hat schon mal funktioniert?
Dann ggf. aus dem “username”: “XXXX”, die letzte Stelle ändern… aus der 30 einfach eine 31 machen und einen Restart… dann sollte die Homebridge als neues Gerät gefunden werden…


#49

Hallo Jens, nochmals herzlichen Dank für Deine Geduld. Deine Hilfe ist nicht selbstverständlich.

Wie gesagt, ich habe nicht viel Ahnung von der Materie. Aber ich google mir meine Bestes zusammen. Und dann eben noch Deine/Eure Unterstützung.

Also wenn ich Deinen Befehl einfüge, kommt

ps -ef | grep -i homebridge
pi        1078   990  0 19:52 pts/0    00:00:00 grep --color=auto -i homebridge

Dann mal noch eine andere Anfängerfrage zum Verständnis: Wenn ich als Befehl “homebridge” eingebe, dann wird doch die Homebridge aufgerufen und initialisiert. Wie komme die dann wieder zurück in die Kommandozeile um Befehle einzugeben? Bisher habe ich das über Strg-Z gemacht, was sicherlich falsch ist. Wenn ich dann nämlich “homebridge” nochmals eingebe und bestätige, wird sie ein zweites mal initialisiert.

Home App: Was meinst Du damit? Username und XXXX? Wo soll das stehen. Habe alles zurückgesetzt. Aktuell kann ich nur nach neuen Geräten suchen.


#50

Hi,

im Json müsste das drin sein:

"bridge": {
	"name": "Homebridge",
	"username": "CC:22:3D:E3:CE:30",
	"port": 57575,
	"pin": "031-45-154"
}

Der “Username” ist die Kennung der Bridge gegenüber Homekit und Siri. Wenn Siri sich schon den alten Namen gemerkt hat, kann ein Wechsel helfen.

Wenn du hinter Homebridge ein " &" setzt wird der Prozess im Hintergrund ausgeführt, solang die Shell offen ist…dann kannst du weitere Befehle eingeben… Das mit dem Autostart ist aber schon richitg, du willst die Bridge ja nicht immer per Hand starten… Mit Strg-Z killst du den Prozess bzw. es wird ein Terminate-Signal an ihn gesendet und runter gefahren (killen ist was anders)

Wenn du am Autostart nichts geändert hast, wundert mich die Ausgabe ein wenig…
ps -ef | grep -i homebridge sollte den laufenden Prozess und dessen PID ausgeben.

Zu:

hattest du oben geschrieben:

Daher meine Frage:

Also du hast die Homebridge in der iOS App gesehen?

Grüße

Grüße


#51

Es tut. Ich werd verückt :slight_smile: Tausend Dank! Die Änderung der letzten Ziffer hat geholfen.

Anschließend noch zwei Fragen:

  1. Wie hast du das mit dem Autostart gelöst? Hatte mich bisher an diese Anleitung gehalten. Scheint aber nicht wirklich zu funktionieren, da mehrfach die Homebridge lief: Homebridge automatisch starten
  2. Ist zwar Off-Topic: Wenn ich über SSH als Kommado “homebridge” eingebe, dann kommt am Ende der Output mit der Pairing Zahlenkombi und eine neue leere Zeile. Wie komme ich von da aus wieder zurück in die Kommando-Ebene?

Vielen, vielen Dank nochmals für Deine Hilfe.

Grüße
Sebastian


#52

Zu 2. wenn du homebridge mit einem & hintendran startest kannst du weiter die shell nutzen.
Aber wenn du dich abmeldest ist der prozess weg. Also sicherer ist homebridge per cron oder rc zu starten… steht auch in der readme von homebridge drin…


#53

Hi,

Gerne…

Äh… aktuell gar nicht. Hab hier einen ARM v5 (also kein Pi) als Server. Der kann leider kein aktuellens Node.js und daher auch keine Homebridge. Das mit Homebridge war nur ein POC nachdem es glaube von Markus_Krueger und fisch schon kurz angerissen wurde. Hab dann meinen Pi kurz hervor geholt und geschaut was man machen kann. Die Lösung HA Bridge und Alexa ist aber weitaus reizvoller, da man nicht immer das Handy in die Hand nehmen muss. Allerdings muss man damit klar kommen das immer zugehört wird (auch wenn Amazon das Gegenteil behauptet). Wenn ich mich nicht irre habe ich den Autostart über ein “Oldschool” Shellskript und über rc.local gemacht, aber nagel mich nicht fest. So wie es im Link beschrieben ist, sollte es aber gehen.

Zu 2:
Entweder “homebridge &”, dann wird es im Hintergrund ausgeführt, solang die Shell offen ist
Oder du installierst dir “screen” (ggf. auch installiert). Mit screen müsstest du dich einlesen.

Ansonsten im Hintergrund starten (mit &). Der Befehl jobs zeigt dir die Hintergundprozesse an. Wenn es mehr als einer ist kannst du mit %1, %2, usw. den jeweiligen auswählen (also fg %2 holt den 2. Prozess aus der Jobliste nach vorne).

So, jetzt hängen die Prozesse noch an der Shell und wird beim beenden der Shell auch beendet. Abhilfe schaft disown (bzw. disown %2 für den 2. Prozess der Liste - oder bei dir dann disown %1).

Dann sollte die Bridge weiter laufen.

Sorry… die Beschreibungen sind alle aus dem Kopf, da ich keinen Pi hier hab bei dem ich das vergleichen könnte.

Grüße


#54

Hallo
@jens.lange.amberg, @CaptainL, @Markus_Krueger,

hat von euch jemand die Sensoren (z.B. Tür/Fensterkontakt, Floodsensor) mit eingebunden unter der Rubrik sensors?

Was muss man da eingeben?

Kann mir jemand Hilfestellung geben?

Vielen Dank

Daniel


#55

Geht genauso wie Switches… in dieser Reihe auch einzubinden…

“sensors”: [{
“id”: “sensor1”,
“name”: “Garagentor”,
“type”: “contact”
}],

Nur die Entität des Sensors muss angegeben werden. Hier Kontakt-…


#56

wie findet Homebridge dann den Richtigen sensor? Über den Namen oder die ID?
Werden bei dir dann die Zustände angezeigt?


#57

IDu brauchst jeweils ein HG für wie im Bsp. Tor geht auf/Tor geh zu … welches einen Webhook sendet.

Bsp. bei mir:

http://192.168.1.136:51827/?accessoryId=sensor1&state=true

bzw.

http://192.168.1.136:51827/?accessoryId=sensor1&state=false

Der Name ist letztlich egal, kann in Homee und Homebridge jeweils unterschiedlich sein, ist vollkommen egal, da die Zuordnung ja über Webhook funktioniert.


#58

OK Danke, jetzt hab ich es verstanden.


#59

@medicus07
Letzte Frage die IP ist vom Pi und der Port vom Homebridge plugin, oder?


#60

IP: lokale IP des Raspberry

Port: des Webhook plugins (bei mir hat Homebridge 51826 und das Webhook-Plugin 51827

Edit: Wo wir gerade dabei waren, habe ich noch einen Sensor in Homebridge integriert, den ich schon länger geplant hatte… :wink: