test: modul zu integration von homebridge geräten in fhem

Begonnen von justme1968, 12 März 2021, 22:45:59

Vorheriges Thema - Nächstes Thema

justme1968

anbei eine erste version von modulen um devices aus homebridge ((noch) nicht homekit!) in fhem einzubinden.

das ganze ist dazu gedacht geräte in fhem einzubinden für die es keine nativen module gibt für die aber homebridge plugins existieren.

konkretes beispiel: über homebridge-unifi-protect lassen sich so die protect kameras als bewegungsmelder in fhem einbinden. über fhem lassen sich die melder und kameras dann z.b. anwesenheitsbasiert aktivieren.

man kann damit zwar auch dinge machen wie fhem -> homebridge-fhem -> homebridge -> fhem2, so etwas ist aber nicht sinnvoll.


  • voraussetzungen:

    • homebridge wird mit -I im insecure mode gestartet
    • homebridge-config-ui-x ist auf homebridge seite installiert
    • wenn man einen eigenen user für fhem in homebridge-config-ui-x anlegen möchte,  muß dieser admin sein um auch steuern zu können. zum nur lesen reicht ein nicht admin user.
    • die beiden angehängten files sind ins .../FHEM verzeichnis kopiert
    • autocreate in FHEM muss aktiv sein
    • fhem muß aktuell (d.h. HttpUtils.pm von heute) sein

  • devices in fhem anlegen:

    • define <homebridge> homebridge <homebridge server ip:port>
    • das neue device eventuell in einen eigenen raum schieben
    • attr <homebridge> user <user>
    • attr <homebridge> password <password>

  • was schon geht:

    • verbindung zu homebridge sollte automatisch aufgebaut und gehalten werden
    • auslesen der devices aus homebridge
    • autocreate
    • anzeigen von readings
    • steuern aus FHEM

  • was noch nicht geht:

    • nur bestimmte devices aus homebridge in fhem anlegen
    • es gibt nur für einige device typen mappigns auf fhem default reading namen und werten
      d.h. alle anderen namen und werte behalten die namen auf homekit seite
    • nur bestimmte (gefilterte) devices aus homebridge in fhem anlegen
    • es gibt scheinbar einen bug in homebridge-config-ui-x der verhindert das die helligkeit einer lampe. gesteuert werden kann, das ein- und ausschalten sowie steuern von Hue und Saturation gehen problemlos
    • ich habe versucht einige der für fhem unsinnigen devices auszublenden. das ist aber noch nicht vollständig

update 2021-03-14: tippfehler in 39_homebridge.pm behoben
update 2021-09-13: bug fix
update 2021-09-14: neues attribut homebridge-fhem
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

andasquared

habe bis jetzt noch keine Erfahrung mit Homebridge oder HomeKit, aber hab das mal versucht zu installieren.


https://wiki.fhem.de/wiki/Homebridge_einrichten
https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Debian-or-Ubuntu-Linux

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential libssl-dev
sudo apt-get install python g++ libavahi-compat-libdnssd-dev

node -v
v15.11.0

sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x
sudo npm install -g homebridge-fhem
sudo npm install -g --unsafe-perm homebridge-unifi-protect
sudo hb-service install --user homebridge

http://fhem:8581


cp 39_homekitDevice.pm /opt/fhem/FHEM/
cp 39_homebridge.pm /opt/fhem/FHEM/

sudo chown fhem /opt/fhem/FHEM/39_homekitDevice.pm
sudo chgrp dialout /opt/fhem/FHEM/39_homekitDevice.pm
sudo chmod 755 /opt/fhem/FHEM/39_homekitDevice.pm
sudo chown fhem /opt/fhem/FHEM/39_homebridge.pm
sudo chgrp dialout /opt/fhem/FHEM/39_homebridge.pm
sudo chmod 755 /opt/fhem/FHEM/39_homebridge.pm

sudo reboot

defmod HomeBridge homebridge 127.0.0.1
attr HomeBridge user fhem
attr HomeBridge password XXXXXX
attr homebridge room HomeBridge


Komme auf das Webinterface drauf und kann dort auch das UniFi Protect Plugin konfigurieren.
Wenn ich allerdings das homebridge Device in Fhem anlegen will, bekomme ich diese Meldung im Log:


2021.03.14 14:45:32 1 : reload: Error:Modul 39_homebridge deactivated: Can't locate DevIO.pm in @INC (you may need to install the DevIO module) (@INC contains: ./FHEM/lib ./lib ./FHEM . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at ./FHEM/39_homebridge.pm line 14. BEGIN failed--compilation aborted at ./FHEM/39_homebridge.pm line 14.
2021.03.14 14:45:32 0 : Can't locate DevIO.pm in @INC (you may need to install the DevIO module) (@INC contains: ./FHEM/lib ./lib ./FHEM . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at ./FHEM/39_homebridge.pm line 14. BEGIN failed--compilation aborted at ./FHEM/39_homebridge.pm line 14.



Cannot load module homebridge steht unter der Befehlszeile in Fhem.

muss ich noch was machen?

lg

andasquared

fhem ist soweit aktuell - also die Fhem Updates habe ich vorher installiert.
habe jetzt gerade nur die HttpUtils.pm gecheckt - die hat ein älteres Datum:


-rwxrwxrwx  1 fhem dialout   30792 Oct 17 14:42 HttpUtils.pm


meine Version stimmt aber mit der hier überein:
https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/HttpUtils.pm


justme1968

sorry. da war noch ein tippfehler in 39_homebridge.pm. bitte noch mal runter laden.

und HttpUtils.pm muss mindestens vom 12. sein. also bitte auch noch updaten.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

sorry. da war noch ein tippfehler in 39_homebridge.pm. bitte noch mal runter laden.

und HttpUtils.pm muss mindestens vom 12. sein. also bitte auch noch updaten.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

andasquared

cool - klappt mit der neuen Version.

beim define hab ich noch die Portnummer angeben müssen, damit die Verbindung aufgebaut werden kann:

define HomeBridge homebridge 127.0.0.1:8581 USERNAME PASSWORD

spiele mich ein bisschen damit und gebe dir nochmal Rückmeldung.
Danke inzwischen,
LG

andasquared

klappt bis jetzt ganz gut.
einzig - es dauert doch recht lang, bis ein Motion event in Fhem ankommt.
ich denke aber, dass das nicht an deinem Modul liegt.
es dauert in dem HomeBridge Plugin recht lang, bis es anschlägt - und an Fhem die Info weiter gibt.

unterschiedlich, aber so zwischen 3-7 Sekunden hätte ich gesagt.
ich muss schauen, ob ich das auf HomeBridge Seite noch schneller hinbekommen kann, damit ich das wirklich gut verwenden kann.

dein Modul ist aber top!

Danke!
lg

justme1968

versuch mal rauszufinden woran die verzögerung liegt. bei mir geht das innerhalb einer sekunde.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

Genial, auf das warte ich schon lange!

Bis jetzt liefen erste Test sehr positiv. Konnte keine direkten Probleme feststellen.
Natürlich ist jetzt vieles doppelt in FHEM, aber das hast du ja auf der Liste.

Soll ich etwas bestimmtest testen?
FHEM im Proxmox Container

Thyraz

Mal wieder eine unglaublich geniale Idee.
Danke Andre. :)
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

justme1968

einfach mal sammeln welche devices funktionieren, welche eventuell noch passende defaults und mappings brauchen, welche ausgeblendet werden sollten weil sie nicht sinnvoll sind.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

Hier mal ein Logauszug.
Die Meldung kommt immer mal wieder (unregelmässig) und von verschiedenen Geräten.

2021.03.15 14:28:37 1: Error: >homekitDevice_8555c6000fc4bc6e25e14279962e0aba42222539510bb3e13f< has no TYPE, but following keys: >Helper<
2021.03.15 14:28:36 0: Strange call for nonexistent homekitDevice_8555c6000fc4bc6e25e14279962e0aba42222539510bb3e13f: DbLog_splitFn
FHEM im Proxmox Container

justme1968

#12
zeig mal bitte die ausgabe von {Dumper $defs{<name aus der meldung>}}
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

Irgendwie geht das nicht, wirft mir immer einen Fehler aus: Global symbol "%def" requires explicit package name
FHEM im Proxmox Container

justme1968

sorry. da hatte die autokorrektur zugeschlagen. es muss defs heißen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968