Beiträge von sschuste

    Da kann ich auch gleich ein Shellscript schreiben:



    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 8o


    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

    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

    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

    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