Stimmt schon, aber ich habe zb. das Problem das unter npm 6.9 keine Push. von der Home App kommt, aber mit npm 6.7 schon.
Wie gut, dass ich das nicht verstehen muss ![]()
Stimmt schon, aber ich habe zb. das Problem das unter npm 6.9 keine Push. von der Home App kommt, aber mit npm 6.7 schon.
Wie gut, dass ich das nicht verstehen muss ![]()
1. Benötige ich in Homebridge noch dieses Plugin?
homebridge-hue-utils
Nein.
2. Wird bei Abfrage der Hue-Bridge User ID über den „Clip API Debugger“ und dem Drücken auf den Hue Bridge Button möglicherweise jedesmal eine neue User ID ausgegeben?
Ja.
3. Mit dem Befehl ph -H <IP.HueBridge> -u <USER-ID> outlet -V
Kommt folgende Info raus. ph outlet: /resourcelinks/34879: 1 outlets
Was stelle ich mit der der Info an?
Das weiß ich nicht. Ich habe die Shell-Befehle nie benutzt.
4. Die Nr. 34879. Was ist das? Die ID eines HUE-Divice?
Das weiß ich auch nicht, aber die Hue-Device-Id sind normalerweise sehr klein und fangen bei 1 an.
5. Bisher habe ich meine „config.json“ noch nicht für die HUE Bridge erweitert. Muss ich das noch? Deswegen blöd gefragt, weil ja alle HUE-Lampen bei mir in HomeKit auftauchen und natürlich somit bedienbar sind – bis auf die Osram Smart+ Steckdose.
Du musst homebridge-hue installieren und konfigurieren. Bei mir hat das Folgende gereicht:
{
"platform": "Hue",
"host": "192.168.1.23",
"lights": true,
"users": {
"001788XXXX216401": "woDE2lQYLP1mfUGji674vergiss-es8UK0mbuqWs"
}
},
lights:true unterdrückt, dass die Hue-Lichts erneut und damit doppelt angezeigt würden. Ich habe übrigens nur zwei Fremdlampen in Betrieb und keine Steckdose.
Den Usernamen erhält man beim ersten Start von homebridge-hue, indem man homebridge neu startet und sich das Log anzeigen lässt:
sudo systemctl homebridge restart; sudo journalctl -fau homebridge
Finger bereit halten zum Knopf drücken.
Stefan
Ich habe mal gelesen, dass man nach Versionsänderungen von npm die Plugins neu kompilieren muss. Oder habe ich das mit dem Update von node verwechselt?
Ich glaube schon. Ein Update von npm sollte die Plugins nicht stören.
Hmm. Bei mir hat das alle Probleme vom Tisch gefegt. Dann versuch mal
sudo npm install -g [email protected]
Stefan
Der Shell-Befehl lautet bei mir für mein externes Trackpad:
ioreg -c BNBTrackpadDevice | grep '"BatteryPercent" =' | sed "s/[^0-9]//g"
und für die Tastatur:
ioreg -c AppleBluetoothHIDKeyboard | grep '"BatteryPercent" =' | sed "s/[^0-9]//g"
und für die Maus:
ich habe keine.
Dabei kommt dann einfach eine Zahl heraus, die die Batteriekapazität angibt. Aber wie geht's weiter? Der Ansatz von Gerrit, einen Apache-Webserver dafür laufen zu lassen, war mir persönlich zu fett für die eine kleine Aufgabe. Ich habe erst mit dem Gedanken gespielt, mir einen eigenen Server in Javascript zu programmieren, aber habe dann Node Red verwendet.
Node Red ist ein Tool, das sehr leicht zu installieren ist (sowohl auf einem Mac als auch auf einem Raspi) und das es einem erlaubt, auf grafische Art und Weise zu programmieren. Meine Javascript-Kenntnisse sind sehr, sehr mager, aber ich bin in der Lage, mir was zurecht zu fummeln. Und es ist sehr einfach, die eigenen Ergüsse mit anderen Node Red-Benutzern zu teilen. Es ist tatsächlich fast ein Klacks, einen Webserver in Javascript zu programmieren (ich glaube, das sind nur drei oder vier Zeilen Code, die man aus dem Internet kopiert), aber noch viel einfacher ist es, Node Red zu verwenden.
Programmiert wird im Browser. Das einzig Ärgerliche ist, das mit der letzten Version auf einmal alles in deutscher Sprache angezeigt wird, was nicht so schlimm wäre, wenn die Übersetzung aus dem Englischen nicht so schauerlich wäre. Daher nehme ich als Browser Chrome, den ich so eingestellt habe, dass er alles in Englisch macht. Ich bin das so gewöhnt, ich kann auch keine deutsche Shell im Terminal ertragen.
So sieht das bei mir aus, ich hab mal einen Screenshot gemacht und mit Sprechblasen kommentiert. So etwas nennt man in Node Red-Sprache einen Flow, und den kann man mit anderen teilen. Hier ist er:
[{"id":"883badb.f65bc5","type":"exec","z":"369d80e.2abcb","command":"ssh [email protected] /usr/sbin/ioreg -c AppleBluetoothHIDKeyboard | grep '\"BatteryPercent\" =' | sed \"s/[^0-9]//g\"","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"Get keyboard battery value","x":780,"y":1640,"wires":[["bc29640b.85a9c8"],[],[]]},{"id":"b9c4c636.4773b8","type":"inject","z":"369d80e.2abcb","name":"Every hour","topic":"","payload":"","payloadType":"date","repeat":"3600","crontab":"","once":false,"onceDelay":0.1,"x":530,"y":1640,"wires":[["883badb.f65bc5"]]},{"id":"4d1763.1418e89c","type":"homekit-service","z":"369d80e.2abcb","bridge":"7524e8b8.7da908","name":"Keyboard","serviceName":"HumiditySensor","manufacturer":"Stefan Schustereit","model":"Node-Red","serialNo":"1","characteristicProperties":"{}","x":1240,"y":1640,"wires":[[]]},{"id":"bc29640b.85a9c8","type":"function","z":"369d80e.2abcb","name":"Prepare value","func":"msg.payload = { \"CurrentRelativeHumidity\": msg.payload.trim() };\nreturn msg;","outputs":1,"noerr":0,"x":1040,"y":1640,"wires":[["4d1763.1418e89c"]]},{"id":"62188cbb.f4c9d4","type":"exec","z":"369d80e.2abcb","command":"ssh [email protected] /usr/sbin/ioreg -c BNBTrackpadDevice | grep '\"BatteryPercent\" =' | sed \"s/[^0-9]//g\"","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"Get trackpad battery value","x":780,"y":1700,"wires":[["acb4e69d.be23f8"],[],[]]},{"id":"980f76f3.820a58","type":"inject","z":"369d80e.2abcb","name":"Every hour","topic":"","payload":"","payloadType":"date","repeat":"3600","crontab":"","once":false,"onceDelay":0.1,"x":530,"y":1700,"wires":[["62188cbb.f4c9d4"]]},{"id":"7a0e8d00.b80634","type":"homekit-service","z":"369d80e.2abcb","bridge":"7524e8b8.7da908","name":"Trackpad","serviceName":"HumiditySensor","manufacturer":"Stefan Schustereit","model":"Node-Red","serialNo":"1","characteristicProperties":"{}","x":1240,"y":1700,"wires":[[]]},{"id":"acb4e69d.be23f8","type":"function","z":"369d80e.2abcb","name":"Prepare value","func":"msg.payload = { \"CurrentRelativeHumidity\": msg.payload.trim() };\nreturn msg;","outputs":1,"noerr":0,"x":1040,"y":1700,"wires":[["7a0e8d00.b80634"]]},{"id":"7524e8b8.7da908","type":"homekit-bridge","z":"","bridgeName":"Node-RED","pinCode":"030-45-111","port":"","manufacturer":"Stefan Schustereit","model":"Node-RED","serialNo":"1.0"}]
Sieht hässlich aus, aber egal. Das kopiert man einfach und fügt es in Node Red wieder ein, macht noch ein paar Anpassungen für das eigene Netz und das war's dann auch schon. In diesem Fall muss Node Red vorher durch HomeKit-Fähigkeiten erweitert werden, indem man über das Menü über Manage Palette - Install das Modul @plasma2450/node-red-contrib-homekit-bridged nachinstalliert. Ist so wie Homebridge-Plugins zu installieren.
Gerrit, ich weiß genau, dass dir Node Red eine Menge Spaß machen würde. Es verbraucht auch nicht mehr Power als ein Apache Webserver, wahrscheinlich sogar weniger.
Stefan
So, ich habs. Bei mir lautet der Befehl:
ioreg -r -l -n BNBTrackpadDevice | grep BatteryPercent
ioreg -r -l -n AppleBluetoothHIDKeyboard | grep BatteryPercent
Damit bastele ich mir jetzt auch was Feines. Danke für den Hinweis darauf ![]()
Zitat von DUKEAlles anzeigensudo shutdown -h now
Connection to 192.168.178.nn closed by remote host.
Connection to 192.168.178.nn closed.
ph -H 192.168.178.nn -u xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx outlet -v
-bash: ph: command not found
Anmerkung: nn – da steht natürlich die notwendige Nr.
Sieht so aus, als hättest du erst deinen Raspi ausgeschaltet und dann den Befehl ph -H auf einem anderen Rechner eingegeben.
Ich weiß nicht, wie du deinen Raspi installiert hast, aber wenn du die Forenanleitung genutzt hast, dann steht da drin, dass man die Homebridge mit sudo systemctl stop homebridge anhält und mit sudo systemctl start homebridge wieder startet.
Stefan
Try: sudo npm install -g npm@next
Dann geht's auch wieder.
Stefan
Die einzige Meldung, die ich finde, zeigt eine Installation von homebridge-hue und nicht homebridge-lib.
Stefan
Naja, wenn schon ioreg -r -l -n AppleHSBluetoothDevice nichts ergibt, dann wird auch der Rest nichts hervorzaubern. Das Ergebnis ist dann auch wie erwartet:
BATTLVL=
Ich hab hier einen iMac 27" 5K mit einem Bluetooth-Trackpad und einer Bluetooth-Tastatur.
Stefan
/usr/sbin/ioreg -r -l -n AppleHSBluetoothDevice
ergibt bei mir schon mal überhaupt keine Ausgabe. Da werd ich wohl mal suchen müssen.
Ich habe jetzt auch nach mehrmaligen Lesen nicht verstanden, was wer wo mit welchem Ergebnis eingibt. Auf einem Raspi ohne Docker:
sudo npm install -g --unsafe-perm homebridge-lib
So wie bei allen Plugins.
Stefan
Ich bin sicher, dass du damit deutlich weiter kommst: https://smartapfel.de/homebridge/
Sieht wild aus, kann jeder.
Stefan
weiß man wodurch das genau getriggered wird? Also wo genau der bug vom Plugin mit der Anleitung zusammen liegt?
Ja. Der Programmierer von homebridge-config-ui-x startet den Prozess sudo -n journalctl -o cat -n 500 -f -u homebridge -u homebridge-config-ui-x, um die Ausgabe davon im Webinterface anzuzeigen. Klickt man dann auf einen anderen Bereich im Webinterface wie zum Beispiel den Config-Editor oder die Status-Seite, dann wird der Prozess journalctl mit sudo -n kill -9 wieder gestoppt.
Die Konfiguration der Forenanleitung lässt aber den Befehl kill mit root-Rechten (also per sudo) nicht zu. Er wird zwar ausgeführt, aber er schlägt fehl, was das System verschweigt, weil sudo mit dem Parameter -n aufgerufen wurde. Der Parameter steht für "keine Ausgabe, auch wenn etwas schief geht". Man bekommt also nicht mit, dass journalctl nicht beendet werden konnte.
So läuft journalctl also weiter, und wenn man wieder auf die Loganzeige klickt, wird ein weiteres Mal journalctl gestartet. Das passiert jedes Mal, und so nach ungefähr 125 Mal ist dann Feierabend: journalctl beschwert sich über fehlende file descriptors und anstatt des Logs wird eine Fehlermeldung angezeigt:
Loading logs using "systemd" method...
CMD: sudo -n journalctl -o cat -n 500 -f -u homebridge
Failed to get journal fd: Too many files open
The log tail command "-n journalctl -o cat -n 500 -f -u homebridge" exited with code 1.
Please check the command in your config.json is correct.
Wenn man dann die Prozessliste aufruft, sieht man die Bescherung:
pi@homePi:~ $ ps aux | grep journalctl
root 3169 0.0 0.3 8840 3280 pts/3 Ss+ 08:44 0:00 sudo -n journalctl -o cat -n 500 -f -u homebridge
root 3174 0.1 0.4 21940 4612 pts/3 S+ 08:44 0:00 journalctl -o cat -n 500 -f -u homebridge
root 3183 0.0 0.3 8840 3456 pts/4 Ss+ 08:44 0:00 sudo -n journalctl -o cat -n 500 -f -u homebridge
root 3188 0.1 0.4 21940 4572 pts/4 S+ 08:44 0:00 journalctl -o cat -n 500 -f -u homebridge
root 3211 0.0 0.3 8840 3384 pts/5 Ss+ 08:45 0:00 sudo -n journalctl -o cat -n 500 -f -u homebridge
root 3216 0.3 0.4 21940 4612 pts/5 S+ 08:45 0:00 journalctl -o cat -n 500 -f -u homebridge
root 3227 0.0 0.3 8840 3268 pts/6 Ss+ 08:45 0:00 sudo -n journalctl -o cat -n 500 -f -u homebridge
root 3232 0.1 0.4 21940 4544 pts/6 S+ 08:45 0:00 journalctl -o cat -n 500 -f -u homebridge
pi 3256 0.0 0.0 5992 556 pts/0 S+ 08:45 0:00 grep --color=auto journalctl
root 10766 0.0 0.3 8840 3436 pts/1 Ss+ Jun12 0:00 sudo -n journalctl -o cat -n 500 -f -u homebridge
root 10771 0.0 0.5 21944 5344 pts/1 S+ Jun12 0:00 journalctl -o cat -n 500 -f -u homebridge
root 10844 0.0 0.3 8840 3356 pts/2 Ss+ Jun12 0:00 sudo -n journalctl -o cat -n 500 -f -u homebridge
root 10849 0.0 0.5 21944 5360 pts/2 S+ Jun12 0:00 journalctl -o cat -n 500 -f -u homebridge
Alles anzeigen
Ein Neustart von homebridge-config-ui-x beendet alle Prozesse und das Spiel beginnt von vorn.
Hier kannst du die ganze Diskussion nachlesen:
https://github.com/oznu/homebridge-config-ui-x/issues/321
Stefan
Gelobe Besserung
Ach komm. Was gibt es Adrenalin fördernderes als eine kaputte homebridge-Instanz. Da spürt man sich endlich mal wieder!
Nein, es würde keinen Sinn machen, das in die Anleitung aufzunehmen. Weil:
Homebridge-lib ist ein Plugin von Erik Baauw, der auch homebridge-hue und homebridge-zp programmiert hat. Das Plugin war zunächst ein Bestandteil der letztgenannten, aber Erik hat das da herausgenommen und verteilt es nun einzeln. Homebridge-lib beinhaltet Funktionen, die beim Programmieren von Homebridge-Plugins immer wieder verwendet werden. Zur Zeit wird es nur für den Betrieb von Eriks Plugins benötigt, aber ich schätze, dass bald mehrere Programmierer das auch nutzen werden, weil es Funktionen bietet, die sie sonst selber coden müssten.
Die Foren-Anleitung kümmert sich eher um die Installation von Homebridge und nicht um die spezifischen Probleme bei der Installation diverser Plugins. Natürlich könnte man, sobald viele Programmierer homebridge-lib nutzen, es in die Anleitung aufnehmen. Zum jetzigen Zeitpunkt halte ich das noch für verfrüht.
Neue homebridge-hue-Anwender werden das aufgetretene Problem eh nicht haben, weil die Installationsanleitung von homebridge-hue nun so lautet:
sudo npm -g i homebridge-lib homebridge-hue
Diejenigen, die ihre Plugins mit homebridge-config-ui-x updaten (ich) und dabei die dargebotenen Informationen lesen (ich), haben gesehen, dass sie homebridge-lib nachinstallieren müssen, weil's da stand, und haben entsprechend gehandelt. Bleibt nur noch der Rest, der mal wieder nix mitbekommen hat: nun ja, das werden wohl die meisten sein
. Macht nix, dafür haben wir ja das Forum.
Gruß
So, ich habe jetzt Lösungen für homebridge-config-ui-x (Webinterface für Homebridge) (nach einer Weile kann homebridge-config-ui-x die Logs nicht mehr anzeigen).
Ich weiß nicht, ob mir diese Lösung gefällt. Unsinn: ich weiß, dass mir diese Lösung nicht gefällt. Das Problem wird erzeugt durch das Zusammenspiel von homebridge-config-ui-x und der Forenanleitung zur Installation von homebridge.
Die Lösungen sind:
sudo visudo -f /etc/sudoers/homebridge
Ganz hinten anhängen: , /bin/kill
So dass das Ganze so aussieht:
homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node, /bin/kill
Das macht mich sehr unglücklich. Ich bin mir noch nicht sicher, ob ich dass in die Forenleitung einbauen werde. Ich glaube nicht.
Ok, diesen Schnellschuss streiche ich wieder grußlos, aber nicht ohne Ersatz. Auf der Shell eingeben:
sudo usermod -a -G systemd-journal homebridge
Dann muss die config.json bearbeitet werden. In der Konfiguration für homebridge-config-ui-x muss der Teil, der sich um das Log kümmert, verändert werden. Jetzt steht dort:
"log": {
"method": "systemd",
"service": "homebridge"
},
Das wird ersetzt durch:
"log": {
"method": "custom",
"command": "journalctl -o cat -n 500 -f -u homebridge -u homebridge-config-ui-x"
},
Dann homebridge neu starten. Ich werde die Anleitung entsprechend anpassen.
Stefan
Ich mache das mit homebridge und dem Plugin homebridge-delay-switch. Wenn ich hier weggehe ("Hey Siri, ich verlasse das Haus"), dann wird in meinem Flur eine Lampe eingeschaltet und gleichzeitig mein "Flurtimer".
Nach drei Minuten schaltet sich der "Flurtimer" automatisch wieder aus. Eine Automation überwacht das, und wenn der Timer ausgeht, wird auch die Lampe im Flur wieder ausgeschaltet.
Stefan
muss da auch irgendetwas in der config geändert werden?
Nein.
Ich werde das weiter beobachten. Mal sehen, ob das erneut passiert.
Es passiert. Immer, wenn das Log über homebridge-config-ui-x aufgerufen wird, wird der Prozess gestartet, der das Log liest (journalctl -o cat -n 500 -f -u homebridge) und nicht wieder beendet. Irgendwann laufen dann soviel Prozesse, dass sie die obige Fehlermeldung auslösen.
Der Neustart von homebridge-config-ui-x beendet die Prozesse wieder.
Ich werd mal den Entwickler fragen.
Stefan