Apple Homekit: die Hoffnung stirbt zuletzt

Begonnen von eldrik, 23 Januar 2015, 13:57:07

Vorheriges Thema - Nächstes Thema

flurin

#960
@dev0: sicher bin ich nicht, ich hatte am Anfang einige Probleme. Gut möglich, dass Nick Farina diesbezüglich homebridge verbessert hat.

@Marie Siehtst Du "HAP" in Discovery?
Edit: Wenn Du OS X verwendest, dann ist es für Dich ja kein Problem, die IP-Adressen zu scannen  ;)

Marie

Die iP's werden mir ja schön ordentlich von meiner Fritz.Box aufgelistet.....


:-)
Banana Pi & FHEM2FHEM Raspberry,RS485 Modbus Stromzähler UMG96, diverse Schaltsteckdosen 433 MHz, 868 MHz, MYSENSORS Temperatursensoren , Smartvisu, Homekit & Siri, Geofency, Zwave Rauchmelder & Steckdosen & Garagensteuerung, TabletUi mit BananaPi M2Ultra im Wohnmobil, Homebridge usw.usw.

Chris84

Yeeeees, es läuft :). Mit der neuen FHEM.js von andre lässt sich Harmony bei mir auch mit node 4.1.1 problemlos einbinden. Einen Test mit Eve werde ich dann am Wochenende starten.
Vielen vielen Dank für eure Mühe!!!

Viele Grüße

Chris

Marie

Zitat von: flurin am 08 Oktober 2015, 10:00:19

@Marie Siehtst Du "HAP" in Discovery?



Hallo,


wenn ich den Server per Console "npm run start" starte dann sehe ich im Listening auf der console nicht den HAPServer, der meldet sich ja, zumindest nach den alten Logs immer mal zu Anfang....


Banana Pi & FHEM2FHEM Raspberry,RS485 Modbus Stromzähler UMG96, diverse Schaltsteckdosen 433 MHz, 868 MHz, MYSENSORS Temperatursensoren , Smartvisu, Homekit & Siri, Geofency, Zwave Rauchmelder & Steckdosen & Garagensteuerung, TabletUi mit BananaPi M2Ultra im Wohnmobil, Homebridge usw.usw.

BerndDA

Hallo Andre,

nochmal vielen Dank für deine Mühen. Ich habe auf Grundlage deines Scriptes angefangen eine eigene Implementierung der FHEM.js zu schreiben. Das hatte vornehmlich den Grund, dass ich es als Entwickler einfach nicht lassen kann  :)
Mein Modul hat noch bei weitem nicht so viele Funktionen wie deines, denn ich habe natürlich erstmal die Geräte abgebildet, die ich auch einsetze (Switch, Lightbulb, MotionSensor, ContactSensor).
An einigen Stellen habe ich einen anderen Ansatz gewählt:
- statt Longpoll verwende ich z.B. ein Notify, das das Event zurück "pushed"
- Die unterschiedlichen Typen werden durch Vererbung abgebildet
- STATE wird über jsonlist2 abgefragt
- ...
Deshalb hier einfach mal mein Script angehängt (wie gesagt, noch nicht an allen Stellen komplett). Sozusagen zum Ideenaustausch.

Viele Grüße!
Bernd

(PS: das ist in TypeScript, wollte mal probieren, ob mir das leicher fällt als pures JS)

justme1968

hallo bernd,

gleich ein paar kommentare/ideen :)

einzelne accessory klassen voneinander erben lassen habe/hatte ich auch noch vor. ich bin aber nicht sicher ob der ansatz wirklich richtig ist. auf homekit seite gibt es keine wirkliche Hierarchie auf die man sich stützen kann. am besten geht das noch bei lampen aber bei sensoren hört es sehr schnell auf. vor allem da z.b. temperatur, feuchte und helligkeit optional sind und in beliebigen Kombinationen auch bei anderen devices vorkommen können. bei den lampen kann ich mir allerdings vorstellen das man hier vor allem die unterschiedlichen farbmodelle sehr gut über eine vererbung abbilden kan.

ich glaube was die erweiterbarkeit angeht ist es besser wie weiter oben beschrieben die zuordnung von reading/service so frei konffigurierbar zu machen das normalerweise keine code änderungen mehr nötig sind um ein neues device zu unterstützen. vielleicht kannst du dich ja damit anfreunden.


aus welchem grund ist dir ein notify lieber als longpoll? gerade was die ausbaufähigkeit angeht ist longpoll glaube ich sehr viel besser. hier bekommst du alle änderungen mit. das ist z.b. wichtig wenn du auf die kombination von reading reagieren willst wie in zukunft geplant neu angelegte devices auch automatisch in homebridge auftauchen. longtpoll geht auch 'out of the box' und muss nicht erst angelegt werden. auch auf die änderung von attributen kann man reagieren.


eine jsonlist2 abfrage auf ein internal bekomme ich bei mir gar nicht hin. auch wenn ich das per telnet probiere bekomme ich nur eine leere antwort. ein normales get ist auch etwas schneller als jsonlist. wenn man die werte aus longpoll chached ist eine direkte anfrage auch überhaupt nicht nötig. das hilft der performance sehr. wenn du 30 geräte mit mehreren characteristics hast und in eve in einem raum oder sogar die gesamt übersicht gehst ist der unterschied ob hombridge jedes mal bei fhem nachfragen oder einfach nur gecachete werte zurück liefert sehr sehr deutlich zu sehen. von der last auf fhem seite ganz abgesehen.

unabhängig davon ist STATE nicht wirklich gut. es ist ein internal und z.b. von stateFormat beeinflusst. es zeigt nicht unbedingt den aktuellen device zustand der für homekit interessant ist. für sensoren bei denen die interessanten dinge nicht direkt in STATE stehen funktioniert das überhaupt nicht.

ich glaube wenn du anfängst eine grössere anzahl an geräten und device typen einzubinden merkst du das dein ansatz nicht so flexibel ist.

ansonsten: immer her mit neuen ideen...

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

felix.steinbeis

Hallo Andre,

macht so ein Attribut Sinn oder was meinst Du?

Ich muss mir eine Lösung überlegen, wie ich meine Geräte an die Homebridge anbinde.

Viele Grüße
Felix


Zitat von: felix.steinbeis am 08 Oktober 2015, 01:37:47
Hallo Andre,

ich kann keine Geräte pairen, wenn s.Attributes.alias und s.Internals.NAME zu viele Zeichen haben. Nach Eingabe der PIN kommt ein "unpair"-Fehler im Log.

In createDeviceService setzt Du var name = this.alias + ' (' + this.name + ')'; und verwendest "name" dann z.B. hier return new Service.Lightbulb(name);

Meine Namenskonvention sieht z.B. so aus:
Name: 3.dg.schlafzimmer.deckenleuchte
Alias: 3.DG.Schlafzimmer - Deckenleuchte

Daraus wird dann "3.DG.Schlafzimmer - Deckenleuchte (3.dg.schlafzimmer.deckenleuchte)" was in HomeKit nicht funktioniert und scheinbar zu lang ist. In Eve seht noch, dass die Namen aussprechbar sein sollen und keine Sonderzeichen enthalten dürfen.

Was hälst Du denn von einem zusätzlichem Attribut z.B. "homeKitAlias", was - wenn es gesetzt wird - anstelle von Alias+Name verwendet wird? Hast Du noch andere Ideen für das Namensproblem?

Danke und Gruß
Felix

kennymc.c

Ich hab heute plötzlich feststellen müssen, dass meine Devices nicht mehr in den Räumen auftauchen bzw. diese leer sind. Die EVE App hat auch das Paring vergessen und Insteon+ zeigt nur leere Räume an. Ein Neustart von Homebridge hat auch nicht geholfen.

@Marie Das Problem hatte ich auch. Homebridge tauchte auch im Discovery Browser auf. Nach knapp 40 Minuten, sind dann komischerweise alle Kommandos ausgeführt wurden. Die Fhem App hat übrigens alles direkt ausgeführt ohne Verzögerung. Ist aber mit der neuen FHEM.js bisher nicht mehr aufgetreten.

justme1968

ich bin mit der benennung noch nicht ganz zufrieden. wenn deine devices eindeutige alias haben dann kannst du erst mal die zeile var name = this.alias + ' (' + this.name + ')'; ändern und nur var name = this.alias; oder  var name = this.name; verwenden. ich vermute dann sollte das pairen schon mal gehen.

eigentlich sollten aber 255 zeichen erlaubt sein. da bist du noch lange nicht drüber. bist du sicher das es die länge ist oder vielleicht nur ein nicht erlaubtes zeichen?

ein extra siriName attribut hatte ich auch schon überlegt. aber irgendwie gefällt es mir nicht so viele attribute zu vergeben. vor allem fehlt mir hier noch die rückmeldung von homekit. d.h. wenn auf homekit seite der name geändert wird möchte ich eigentlich auch das fhem attribut ändern. das geht aber noch nicht bzw. vermutlich nicht ohne echte app auf dem iOS device.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

bezüglich der verschwunden devices gibt es bei homebridge bzw HAP ein paar threads. das ist nicht FHEM.js spezifisch und es noch nicht klar woran es liegt. wenn nach einer weile plötzlich alte kommandos ausgeführt werden und die devices wieder da sind deutet das auf irgend einen timeout hin. könnten es auch 60 minuten gewesen sein ?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Marie

Zitat von: justme1968 am 08 Oktober 2015, 17:46:19
bezüglich der verschwunden devices gibt es bei homebridge bzw HAP ein paar threads. das ist nicht FHEM.js spezifisch und es noch nicht klar woran es liegt. wenn nach einer weile plötzlich alte kommandos ausgeführt werden und die devices wieder da sind deutet das auf irgend einen timeout hin. könnten es auch 60 minuten gewesen sein ?

gruss
  andre


Also bei mir sind die Devices nicht wieder aufgetaucht....ich befürchte fast wenn ich die Konfiguration lösche und wieder neu starte, klappt es...aber ehrlich gesagt: das wäre dann vermutlich das 40.ste Mal.....


Grüße Marie
Banana Pi & FHEM2FHEM Raspberry,RS485 Modbus Stromzähler UMG96, diverse Schaltsteckdosen 433 MHz, 868 MHz, MYSENSORS Temperatursensoren , Smartvisu, Homekit & Siri, Geofency, Zwave Rauchmelder & Steckdosen & Garagensteuerung, TabletUi mit BananaPi M2Ultra im Wohnmobil, Homebridge usw.usw.

felix.steinbeis

#971
Zitat von: justme1968 am 08 Oktober 2015, 17:44:07
eigentlich sollten aber 255 zeichen erlaubt sein. da bist du noch lange nicht drüber. bist du sicher das es die länge ist oder vielleicht nur ein nicht erlaubtes zeichen?

255 Zeichen habe ich nicht. Es reichte aber beim Alias im Beispiel aus, nur das "leuchte" zu entfernen. Sonderzeichen können es somit nicht sein. Die max. Zeichenlänge aus Alias und Name habe ich nicht ermittelt. Aber nachdem ich "leuchte" wieder ergänzt habe, ging es nicht mehr. Anderes Gerät mit langem Namen, gleiches Problem.

Grüße
Felix

ChrisKoh

Hallo Zusammen,

Wahnsinn was sie hier getan hat! Danke an alle beteiligten!

Ich wollte das ganze auf einen Raspi 2 umziehen und neu aufsetzen. Leider bekomme ich nach der Anleitung im Wiki nun beim npm install folgende Fehler:


make: *** [Release/obj.target/dns_sd_bindings/src/dns_sd.o] Error 1
make: Leaving directory '/home/pi/homebridge/node_modules/mdns/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.1.6-v7+
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/homebridge/node_modules/mdns
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok


make: Leaving directory '/home/pi/homebridge/node_modules/HAP-NodeJS/node_modules/curve25519/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.1.6-v7+
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/homebridge/node_modules/HAP-NodeJS/node_modules/curve25519
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok



make: Leaving directory '/home/pi/homebridge/node_modules/HAP-NodeJS/node_modules/srp/node_modules/bignum/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.1.6-v7+
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "build"
gyp ERR! cwd /home/pi/homebridge/node_modules/HAP-NodeJS/node_modules/srp/node_modules/bignum
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok



make: Leaving directory '/home/pi/homebridge/node_modules/HAP-NodeJS/node_modules/ed25519/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.1.6-v7+
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/homebridge/node_modules/HAP-NodeJS/node_modules/ed25519
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok
npm ERR! Linux 4.1.6-v7+
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v4.0.0
npm ERR! npm  v2.14.2
npm ERR! code ELIFECYCLE

npm ERR! mdns@2.2.10 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the mdns@2.2.10 install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the mdns package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls mdns
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/pi/homebridge/npm-debug.log



pi@raspberrypi ~/homebridge $ node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@3.0.3
gyp info using node@4.0.0 | linux | arm
gyp info spawn python2
gyp info spawn args [ '/usr/local/lib/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/pi/homebridge/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/local/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/pi/.node-gyp/4.0.0/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/pi/.node-gyp/4.0.0',
gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/pi/homebridge',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp: binding.gyp not found (cwd: /home/pi/homebridge) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/node-gyp/lib/configure.js:355:16)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.1.6-v7+
gyp ERR! command "/usr/local/bin/node" "/usr/local/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/pi/homebridge
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok


weiß leider nicht mehr weiter :(
ODROID H2 + Docker: Portainer; FHEM; HomeBridge; Node-RED; Nextcloud; PiHole; MQTT.
FS20; HM; ZigBee; Z-Wave

Bennemannc

Hallo,

also ich habe das nach dieser https://github.com/cflurin/homebridge-shims/wiki/Minimalist-Homebridge-on-a-Raspberry-Pi anleitung gemacht. Allerdings habe ich vor dem ersten "npm install" noch node auf 4.1.1 upgedatet. Wie das geht steht unten auf der Seite.
Dann die fhem.js von Andre - etwas weiter oben in Thread und gut.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

flurin

Das Wiki wurde aktualisiert. Jetzt wird die neuste node Version 4.1.2 installiert.
Bemerkung: Homebridge erst starten, wenn die Installation ohne Fehler ausgeführt wurde.

Gruss
flurin