FettesB: Error: listen EADDRINUSE bedeutet nur, dass bereits ein homebridge-config-ui-x läuft: einmal homebridge restarten.
Beiträge von sschuste
-
-
Ich benutze nur eine Instanz für alles. Die braucht zwar fast eine Minute zum Starten, aber ich restarte sie nur bei Updates, und meinen Raspi reboote ich auch nur sehr selten. Das letze Mal vor 42 Tagen, meint uptime.
Die Standalone-Version von homebridge-config-ui-x liest config.json. Das EnvironmentFile wird von systemd gelesen, und da die Parameter für homebridge-config-ui-x die gleichen sind, habe ich kein neues angelegt.
Stefan
-
Anstatt der vielen Instanzen sollte man lieber Docker-Container nehmen.
-
Die neue Version 4 von homebridge-config-ui-x macht es möglich, das Plugin auch ohne Homebridge zu betreiben. Das bedeutet, dass die Weboberfläche immer noch gesteuert werden kann, auch wenn homebridge gecrasht oder gestoppt ist. Bislang riss das auch homebridge-config-ui-x in die Tiefe.
So geht man vor:
sudo nano /var/homebridge/config.json
In der Konfiguration für homebridge-config-ui-x tragt ihr einen neuen Parameter ein, und zwar "standalone": true.
Code
Alles anzeigen{ "platform": "config", "name": "Config", "port": 8080, "auth": "form", "theme": "dark-mode", "restart": "sudo -n systemctl restart homebridge", "temp": "/sys/class/thermal/thermal_zone0/temp", "tempUnits": "c", "sudo": true, "standalone": true, "log": { "method": "systemd", "service": "homebridge" } },Abspeichern und homebridge neu starten. Ab jetzt wird homebridge das Plugin nicht mehr laden.
Jetzt brauch ihr ein Startskript für den systemd, um das Plugin außerhalb der Homebridge zu starten. Dazu könnt ihr das vorhandene Skript für die Homebridge kopieren und dann einige Änderungen vornehmen:
sudo cp /etc/systemd/system/homebridge.service /etc/systemd/system/homebridge-config-ui-x.service
Dann:
sudo nano /etc/systemd/system/homebridge-config-ui-x.service
Hier verändert ihr nur zwei Zeilen, und zwar ExecStart und RestartSec:
Code
Alles anzeigen[Unit] Description=Node.js HomeKit Server After=syslog.target network-online.target [Service] Type=simple User=homebridge EnvironmentFile=/etc/default/homebridge ExecStart=/usr/local/bin/homebridge-config-ui-x $HOMEBRIDGE_OPTS Restart=on-failure RestartSec=3 KillMode=process [Install] WantedBy=multi-user.targetAbspeichern. Dann:
sudo systemctl daemon-reload
sudo systemctl enable homebridge-config-ui-x
sudo systemctl start homebridge-config-ui-x
Das wars, ab jetzt läuft homebridge-config-ui-x losgelöst von der Homebridge und ihr könnt auch bei einer gescrashten oder gestoppten Homebridge Plugins deinstallieren oder konfigurieren, ohne die Shell aufrufen zu müssen.
Stefan
-
Ähm, ich meine, da gab's mal einen Backup-Button, aber offenbar ist der inzwischen weg. Eine Sicherung über ssh bietet sich an mit dem Kommando auf einem Mac:
scp [email protected]:/var/homebridge/config.json .
Immer wenn du in homebridge-config-ui-x deine config.json sicherst, wird die alte Version nicht überschrieben, sondern kann wiederhergestellt werden. Die alten config.json-Dateien liegen in /var/homebridge mit Namen wie config.json.1554755442899.
Ich habe heute das Update einfach eingespielt. Diesmal ist es ein großes mit vielen Änderungen unter der Haube. Allerdings achte ich immer darauf, welche Versionsnummer die aktuell laufen Version hat und merke mir die, damit ich im Zweifel ein Rollback machen kann. Ich mache alle Updates immer sofort, aber das liegt auch daran, dass ich hier im Forum gelegentlich ein paar Fragen beantworten muss, und da sollte ich halbwegs wissen, worüber ich rede. Im Allgemeinen sind die Updates nicht immer sofort nötig.
Stefan
-
Moin Stefan
das "einige" ging dann mal vermutlich an meine Adresse?!

Vielleicht aber ist das Funktionieren der App auch nur dadurch begründet, dass ich Gitarrero bin und kein Bassist?!


Ja, die dicken, klobigen Bassistenfinger haben natürlich Nachteile auf der filigranen Oberfläche der App.
Fazit:
Ruhig bleiben. Ganz ruhig.
Stefan
-
Na, das ist doch wunderbar. Weißt du noch, was das für eine Rechteproblem war?
-
Vielen Dank für eure Rückmeldungen. Ich antworte auf alle Nachrichten hoffentlich heute Abend, muss noch was prüfen und bin im Urlaub.
Na dann ruh dich mal aus. Falls du Fragen zur Foreninstallation hast, kannst du sie bei mir loswerden.
Stefan
-
Meine Fragen:
1. Schätze ich (Laie) das richtig ein, dass es an Node liegt?
Falls ja:
2. Ich habe die armv6l.tar.gz Version installiert, wäre womöglich die tar.xz Datei die richtige gewesen?
3. Kann ich die andere Datei einfach drüber installieren und es dann neu versuchen, oder müsste dann jeder weitere Schritt der Anleitung neu ausgeführt werden?
Hier kann ich nur spekulieren, da ich nie einen Raspi 1 hatte.
- Mir kommt es so vor, als läge es an node. Kannst du node allein aufrufen, etwa mit node -v?
- Die Wahl von armv6l kommt mir richtig vor. Die gz-Version sollte das gleiche enthalten wie die xz-Version. Ich habe keine Ahnung, warum beide bereitgestellt werden, sie unterscheiden sich nur in der Art der Kompression.
- Du kannst das einfach drüberbügeln, aber falls die Versionen sich unterscheiden, wirst du möglicherweise die nachfolgenden Schritte wiederholen müssen.
Der Tipp von Marco Schmidt ist auch nicht zu verachten, allerdings ist ihm bei der Angabe der Pfade der Finger abgerutscht

sudo mkdir -p /var/homebridge; sudo chown -R homebridge:homebridge /var/homebridge
Das kann eine zu vernachlässigende Fehlermeldung auslösen, wenn das Verzeichnis /var/homebridge schon existiert.
Stefan
-
Das ist normal beim Stoppen von homebridge und kann unterdrückt werden, indem du die Zeile SuccessExitStatus=143 in /etc/systemd/system/homebridge.service einfügst, so das sie danach so aussieht:
sudo nano /etc/systemd/system/homebridge.service
Code
Alles anzeigen[Unit] Description=Node.js HomeKit Server After=syslog.target network-online.target [Service] Type=simple User=homebridge EnvironmentFile=/etc/default/homebridge ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS Restart=on-failure RestartSec=10 KillMode=process SuccessExitStatus=143 [Install] WantedBy=multi-user.targetFür die Funktion von homebridge spielt das aber keine Rolle.
Stefan
-
meine Sorgenkinder, die Flower Cares
Die sind Bluetooth-basiert, oder? Das würde mich ebenfalls interessieren, weil ich homebridge nie mit Bluetooth zusammengebracht habe und gar nicht weiß, ob die Forenanleitung Bluetooth am Ende richtig unterstützt. Daher wäre ich über eine Rückmeldung ziemlich dankbar.
ein Abend essen und trinken geht auf mich!
Ein Bierchen reicht völlig
. Ich bin leider sehr selten in Ulm (und das ist noch geprahlt).Stefan
-
Weiß ich nicht. Du kannst die Datei löschen oder umbenennen. Danach gilt wieder der Username admin mit dem Passwort admin.
Löschen:
sudo rm /var/homebridge/auth.json
Umbenennen:
sudo mv /var/homebridge/auth.json /var/homebridge/auth.json.bak
Homebridge muss nicht neu gestartet werden.
Stefan
-
Ich nehme an, dass du mit "Webinterface" homebridge-config-ui-x meinst.
Ja, die Datei heißt auth.json und liegt in dem Verzeichnis, in dem auch config.json liegt. Wenn du die Forenanleitung genutzt hast, um die Homebridge zu installieren, dann ist das /var/homebridge/auth.json.
Da wirst du wahrscheinlich die Namen der User finden und dahinter das jeweilige Passwort in verschlüsselter Form.
Stefan
-
Unglaublich. Es geht weiter.
-
Ok, es liegt eindeutig an config.json. Krass. Die sieht nämlich richtig aus. Mir bleibt jetzt nur noch eine letzte Möglichkeit: auch wenn die config.json richtig aussieht, ist da irgendwas drin, was nicht drin sein soll und nicht sichtbar ist. Du siehst, ab jetzt wird es magisch und spekulativ. Hatten wir aber auch schon.
Also werden wir jetzt die config.json löschen und dann neu erstellen. Dazu musst du als User pi arbeiten. Falls du noch als User homebridge eingeloggt bist, musst das erst mit exit beenden
homebridge@raspberrypi:~ exit
Als User pi:
sudo rm /var/homebridge/config.json
sudo nano /var/homebridge/config.json
Und dort fügst du den folgenden Inhalt ein, den du von hier kopierst:
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"description": "Home Smart Home",
"platforms": [],
"accessories": []
Dann speichern und noch mal versuchen.
Stefan
-
Nein, es heißt:
sudo journalctl -fau homebridge

-
Das es toll aussieht. Auch richtig.
Sagen soll es dir, dass homebridge beim Starten das Verzeichnis /var/homebridge verwenden soll, und darin nach einer config.json zu suchen. Wir haben ja bereits festgestellt, dass das Verzeichnis /var/homebridge tatsächlich existiert und dass darin eine config.json liegt. Und dass die Dateirechte zulassen, dass diese config.json gelesen werden darf. Das sieht alles richtig aus und sollte auch so gehen.
Deine Fehlermeldung lautet ja:
Mar 31 20:22:37 raspberrypi homebridge[17888]: [3/31/2019, 8:22:37 PM] There was a problem reading your config.json file.
Ich habe keine Ahnung, was das für ein Problem sein soll
.Wäre ich an deiner Stelle, würde ich versuchen, die Homebridge mal testhalber "manuell" zu starten. Das ist nicht toll für den laufenden Betrieb, aber vielleicht gut, um den Fehler zu finden:
sudo su - homebridge
homebridge -I -U /var/homebridge
Diese beiden Befehle würden normalerweise vom Betriebssystem ausgeführt werden, aber nun machst du es mal von Hand. Was passiert denn dann?
Sorry für das Gebastel hier auf einem Raspi.
Stefan
-
Die App bietet (oberflächlich gesehen) einen gewissen Komfort und für die Kommandozeile bin ich zu alt.
Löllchen. Ich werd im Mai 58 und krieg das auch hin. Die Forenanleitung hat einen gewissen Iterationsprozess hinter sich. Eine Menge Leute hier Forum haben geholfen, sie zu erstellen, indem sie sie getestet und getestet und getestet haben. Ich hab letztendlich nur aufgeschrieben, was man eingeben muss, damit die Installation auf Anhieb funktioniert. Ich sage: das Forum hat gute Arbeit geleistet und es wird dir leicht fallen, die Installation nachzuvollziehen. Die Anleitung ist nicht für Profis gemacht, sondern "for the rest of us".
Auch ich habe mich anfangs sehr schwer getan mit der Installation von Homebridge. Bah, was hab ich's gehasst. Irgendwann habe ich dann halt auch die App eingesetzt. Ich hatte das unverschämte Glück, dass die Installation mit der App überhaupt nicht funktionierte, so blieb mir der Frust erspart, dass es erst geht und dann auf einmal nicht mehr. Es ging nie. Aber wenn auch viele Forenmitglieder Probleme mit der App gehabt haben, gibt es auch einige, die sie problemfrei erfolgreich einsetzen. Behaupten sie zumindest
. Das müssen Menschen sein, die magische Hände haben. Alle anderen sollten auf die App verzichten.Du bekommst mit der Forenanleitung deinen Komfort zurück, und ich würde sogar behaupten: einen höheren Komfort als die App ihn dir bieten kann. Nach der Installation kannst du nämlich alles bequem im Browser erledigen. Und ich würde zusätzlich behaupten: hier im Forum haben wir noch jede Installation irgendwie zum Laufen bekommen. Einfach hier fragen.
Stefan
-
Perfekt. Ich kann da lesen, dass das Verzeichnis /var/homebridge dem User homebridge gehört:
drwxr-xr-x 4 homebridge homebridge 4096 Mar 31 20:19 /var/homebridge
und dass er es öffnen darf und darin schreiben und lesen:
drwxr-xr-x 4 homebridge homebridge 4096 Mar 31 20:19 /var/homebridge
(r=read; w=write; x=execute, in diesem Fall Verzeichnis öffnen)
Das ist schon mal richtig so.
Dann sehe ich, das die Datei /var/homebridge/config.json auch dem User homebridge gehört:
-rw-r--r-- 1 homebridge homebridge 207 Mar 31 20:14 /var/homebridge/config.json
und dass er sie bearbeiten darf
-rw-r--r-- 1 homebridge homebridge 207 Mar 31 20:14 /var/homebridge/config.json
(r=read; w=write; -= kein Recht zum Ausführen, und dieses Recht wird auch nicht benötigt, weil eine Datei kann man nicht ausführen (im Gegensatz zu einem Programm oder einem Verzeichnis))
Das ist auch richtig so.
Eigentlich sieht alles gut aus. Marco Schmidt hat es weiter oben erwähnt: wie sieht /etc/default/homebridge aus? Bitte mal ein
cat /etc/default/homebridge
ins Terminal klatschen und das Ergebnis hier zeigen. Merci.
Stefan
-
Habe herausgefunden, dass das Plugin unter /home/pi/node_modules liegt, die anderen unter /usr/local/lib/node_modules
Diese Plugin wurde anders installiert als die anderen Plugins. Plugins landen immer in /home/pi/node_modules wenn du sie nicht global installierst.
Globale Installation: npm install -g
Nicht-globale Installation: npm install
Eigentlich sollte es egal sein, wo sie liegen. Funktionieren sollte es in jedem Fall. Es ist aber halt ziemlich unschön, wenn die Plugins mal hier und mal dort landen. In meinen Augen sollten sie für einen Server im Produktionsmodus immer in /usr/local/lib/node_modules liegen (auf manchen System langen sie in /usr/lib/node_modules, das ist auch ok). Produktionsmodus heißt: der Server arbeitet funktionsfähig in einer Umgebung, an der nix gebastelt oder herumgespielt wird.
Eine lokale Installation bietet sich an, wenn man Plugins entwickelt.
Wer es ernst meint und auf jede Störung seiner Hausautomatik verzichten will, bräuchte einen zweiten Raspi, auf dem er alle Neuerungen und Änderung vorher testet, bevor er sie auf den "Haupt-Raspi" loslässt. Das müsste dann soweit gehen, dass man sogar alle smarten Geräte doppelt hat (oder einen Teil davon) und am besten macht man das noch in einem eigenen Netzwerk. Das ist natürlich völlig albern in unseren Setups. Daher heißt es für uns immer: operieren am offenen Herzen und das mit ungewissem Ausgang.
Das bedeutet, dass man peinlich genau aufpassen muss, was man macht. Nur: Fehler macht jeder. Hier mal ein kleines -g vergessen und schon braucht der Patient eine Beatmungsmaschine. Und der Lebenspartner ebenfalls.
Fehler kann man gut vermeiden, indem man vieles automatisiert und den Computer machen lässt. Der ist glücklicherweise zu doof, um Fehler zu machen (mir graust schon vor KI, die dann schlau genug ist, um Fehler zu machen). Ich nutze zur Installation immer homebridge-config-ui-x. Das Plugin macht nichts anderes als man selber, aber das halt immer gleich.
Du kannst das Plugin entfernen, indem du es mit npm uninstall pluginname entfernst und mit npm install -g pluginname erneut und dann global installierst. Da du global installieren willst und dafür Schreibrechte in /usr/local/lib/node_modules brauchst, muss die Installation zwingend als root vorgenommen werden. Das bedeutet, du loggst dich entweder als root ein oder als User pi, der dann ein dem Installationsbefehl ein sudo voranstellen muss.
Ich würde auch immer den Parameter --unsafe-perm dazu geben, also letztendlich sudo npm install -g --unsafe-perm pluginname.
Also: sudo ist wichtig und -g ist wichtig.
Stefan