Beiträge von sschuste
-
-
Da kann ich auch gleich ein Shellscript schreiben:
Code
Alles anzeigencd sudo apt-get install libavahi-compat-libdnssd-dev sudo apt-get install git wget https://nodejs.org/dist/latest-v10.x/node-v10.15.3-linux-armv7l.tar.gz tar xf node-v10.15.3-linux-armv7l.tar.gz sudo cp -R node-v10.15.3-linux-armv7l/* /usr/local/ sudo npm install -g n sudo n lts sudo useradd -m -c "Homebridge Service" -s /bin/bash -G audio,bluetooth,dialout,gpio,video homebridge sudo echo "homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node" > /etc/sudoers.d/homebridge sudo chmod 640 /etc/sudoers.d/homebridge sudo npm install -g --unsafe-perm homebridge sudo npm install -g --unsafe-perm homebridge-config-ui-x sudo mkdir -p /var/homebridge cat > config.json <<EOF { "bridge": { "name": "Homebridge", "username": "CC:22:3D:E3:CE:31", "port": 51826, "pin": "031-45-154" }, "description": "Home Smart Home", "platforms": [ { "platform": "config", "name": "Config", "port": 8080, "auth": "form", "theme": "red", "restart": "sudo -n systemctl restart homebridge", "temp": "/sys/class/thermal/thermal_zone0/temp", "sudo": true, "log": { "method": "systemd", "service": "homebridge" } } ], "accessories": [] } EOF sudo mv config.json /var/homebridge sudo chown -R homebridge:homebridge /var/homebridge cat > homebridge.service << EOF [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 [Install] WantedBy=multi-user.target EOF sudo mv homebridge.service /etc/systemd/system/homebridge.service cat > homebridge << EOF # Defaults / Configuration options for homebridge # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others) HOMEBRIDGE_OPTS=-I -U /var/homebridge # If you uncomment the following line, homebridge will log more # You can display this via systemd's journalctl: journalctl -f -u homebridge # DEBUG=* EOF sudo mv homebridge /etc/default/homebridge sudo systemctl daemon-reload sudo systemctl enable homebridge sudo systemctl start homebridge echo "Fertig."Das ganze Ding copy & paste in die Shell, im Aufstehen die Entertaste drücken, Bier holen, anfangen. DISCLAIMER: bis auf die Sache mit dem Bier ist das alles völlig ungetestet.
Mein Ansatz ist aber nicht irgendeine Automation, sondern der Umgang mit einem Linux-System. Die meisten Homebridger haben damit nämlich überhaupt keine Erfahrung und im Netz werden Tipps zur Fehlerbehebung gegeben, die teilweise haarsträubend sind. Die Anleitung soll die Angst vor dem fremden Linux nehmen und am Ende ein Erfolgserlebnis mit leichtem Lerneffekt bringen. Klar, das ist letztendlich alles nur ein einfaches Abschreiben, aber es ist Basteln nach Anleitung. So wie ein Lego-Modell: alles wird nach Anleitung nachgemacht, bis da am Ende ein Millennium Falcon steht und man tierisch stolz drauf ist, es hinbekommen zu haben.
Da die Installation von Homebridge kein ständig wiederkehrendes Ereignis ist, sehe ich keinen Grund, das zu automatisieren. Man setzt sich mal eine Stunde hin und das war es dann auch schon. Natürlich liegt es auch daran, dass ich keinen blassen Schimmer von ScreenScraping habe (den Begriff habe ich eh zum ersten Mal von dir gehört), sondern nur ein Linux-Hacker bin

Stefan
-
Die Namen werden in /var/homebridge/accessories/uiAccessoriesLayout.json gespeichert. Mit sudo nano /var/homebridge/accessories/uiAccessoriesLayout.json kannst du die Datei bearbeiten. Sieht wild aus.
Stefan
-
Ich habe das nie ausprobiert und ich benutze auch das Plugin nicht, aber mein erster Versuch wäre:
"statusPattern": "t:swr s:250 e:0 ok:1 ro:0 pos:c fix:1 a:-98 fw:3.4.1-15-g3d0f mem:21824 up:45516206 ip:1001564xxx cid:Hendriks Fenster rssi:-61 time:1556438939 wm:1 wp:3 wst:3 id:600194xxxx"
Was allerdings voraussetzt, dass die Antwort der API immer so aussieht. Ändern sich die Werte (beispielsweise mem: 21824 zu mem: irgendwas_anderes), dann muss man mit regex arbeiten, und darin bin ich ganz, ganz, ganz schlecht.
Könnte dann vielleicht so aussehen:
"statusPattern": "t:swr s:250 e:0 ok:1 ro:0 pos:c fix:1 a:-98 fw:3.4.1-15-g3d0f mem:[0-9]+ up:[0-9]+ ip:1001564xxx cid:Hendriks Fenster rssi:-61 time:[0-9]+ wm:1 wp:3 wst:3 id:600194xxxx"
Aber wie gesagt: alles nur geraten.
Stefan
-
Zur Ergänzung: Seit dem Update komme ich bei den Instanzen auch nicht mehr mit 192.168.1.x:808x zum Login sondern muss nun 192.168.1.x:808x/login verwenden.
Kann ich nicht bestätigen. Bei mir läuft das wie gewünscht.
-
Ich hab die Anleitung inzwischen so umgebaut, dass die LTS-Version von node verwendet wird (derzeit 10.15.3).
Stefan
-
-
Nur temporär, der Bug wird schließlich behoben werden und dann hoffen wir, dass er sich nicht nochmal einschleicht.

Ich will die node-Installation eh schon die ganze Zeit einfacher machen. Mir schwebt die Installation einer ganz bestimmten node-Version >10.0 vor, danach die Installation von n und dann ein sudo n lts. Ich denke, die LTS-Version sollte die richtige sein für alle, die mit Homebridge anfangen. Außerdem ist es die Version, die ich selber verwende, und da kann ich dann auf Probleme besser reagieren.
Stefan
-
-
Das kriegen wir schon hin.
-
-
-
-
Bei mir ist es immer so gewesen, dass diese Automationen irgendwo anders festgelegt waren. Ein bisschen mit IFTTT herumgespielt und danach prompt vergessen, ein bisschen mit Huelabs herumgespielt und danach prompt vergessen...
Stefan
-
Fast. Jede .service-Datei enthält den Code für genau einen Service. Einer ist normalerweise homebridge. Nun kann man das Plugin homebridge-config-ui-x auch standalone als Service laufen lassen. Also brauchst du tatsächlich zwei .service-Dateien.
Stefan
-
Sorry, ich wollte dich nicht verwirren. Wenn du genauso vorgehst wie ganz oben beschrieben, dann klappt das auch problemfrei bei dir. Der einzige Unterschied zur obigen Anleitung ist ja nur, dass du pi als User verwendest, was aber kein Showstopper ist.
Stefan
-
Du kannst in homebridge.service nicht zweimal ExecStart angeben. Aber du kannst mit ExecStartPre oder ExecStartPost arbeiten. Das würde dann so aussehen:
ExecStartPre=/usr/local/bin/homebridge-config-ui-x $HOMEBRIDGE_OPTS
ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
Damit würde dann die GUI gestartet werden und - wenn das klappt - danach die Homebridge. Oder anders herum, erst die Homebridge und dann die GUI:
ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
ExecStartPost=/usr/local/bin/homebridge-config-ui-x $HOMEBRIDGE_OPTS
Da du Restart=on-failure gesetzt hast, würden bei einem Absturz der Homebridge beide Bestandteile automatisch wieder gestartet werden - also GUI und Homebridge. Das wird eine Fehlermeldung auslösen, nämlich EADDRINUSE, weil ja homebridge-config-ui-x noch läuft und nun nochmal gestartet werden soll. Beim Start wird dann festgestellt, dass die Adresse und der Port schon belegt sind und zwar vom noch laufenden homebridge-config-ui-x. Ich habe keine Ahnung, was das für Auswirkungen hat. Ich würde annehmen, das bei ExecStartPre auch homebridge nicht mehr gestartet wird, aber um ehrlich zu sein: ich habe keine Ahnung.
Das du pi als User benutzt, sollte keine Auswirkungen haben.
Stefan
-
Gute Frage. Das geht wohl augenblicklich nur über die Shell mit sudo systemctl restart homebridge-config-ui-x.
Stefan
-
Das tut beim ersten Mal ein bisschen weh!
Wird dann aber immer angenehmer und auf Dauer auch entspannter.
-
Die Anleitung sagt, dass du den Token anfordern kannst, indem du auf der Shell das hier eingibst:
curl -X "POST" "https://home.nest.com/session" -H 'User-Agent: iPhone iPhone OS 11.0 Dropcam/5.14.0 com.nestlabs.jasper.release Darwin' -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' --data-urlencode "email=DEINE_NEST_EMAIL" --data-urlencode "password=DEIN_NEST_PASSWORD"
Ich habe den Befehl aus der Anleitung umgewandelt. In der Anleitung steht er in mehreren Zeilen da, und ein \ am Ende jeder Zeile sagt, dass der Befehl in der nächsten Zeile weitergeht. Ich habe ihn nun in eine Zeile geschrieben und da werden die \ nicht mehr gebraucht.
Wenn du eine Zweifaktorauthentifizierung nutzt, dann kommt als Antwort nicht der gewünschte Token zurück, sondern erstmal ein 2fa_token. Den musst du dann nehmen und einen zweiten Befehl damit versehen:
curl -X "POST" "https://home.nest.com/api/0.1/2fa/verify_pin" -H 'User-Agent: iPhone iPhone OS 11.0 Dropcam/5.14.0 com.nestlabs.jasper.release Darwin' -H 'Content-Type: application/json; charset=utf-8' -d $'{"pin": "CODE_AUS_DER_SMS","2fa_token": "TOKEN_VOM_VORHERGEHENDEN_REQUEST"}'
Ich nutze kein Nest-Zeugs und kenne mich damit nicht aus.
Stefan