Reboot schlägt fehl

  • Hallo,


    ich habe Dank der Infos hier aus dem Forum einen "Cronjob" eingerichtet. Der Raspberry soll jeden Morgen um 03:00 Uhr neu starten (sudo reboot). Cronjob wird ausgeführt und der Raspberry startet neu. Aber leider läuft die Homebridge nicht beim 1. Mal an?!?


    Am nächsten Morgen ist die Homebridge "tot". Ich habe jetzt den reboot mal manuell ausgeführt und direkt danach das Log geprüft


    Versteht das einer? Ich verstehe leider noch nicht mal ob das Problem vom Hue oder blink Plug-in ausgelöst wird. Oder sonst etwas...


    Noch merkwürdiger (für mich) ist, wenn ich nach dem reboot vom Raspberry (und dem Fehlstart der Homebridge) die Homebridge manuell mit

    "sudo systemctl restart homebridge" neu starte, diese sauber durchläuft.


    Ich habe jetzt erstmal den cronjob wieder rausgenommen. Würde mich aber interessieren, warum die Homebridge nach einem reboot nicht anläuft? Hat jemand bitte eine Idee oder kann mir helfen das Problem einzugrenzen?


    Gruß

  • Ich kann leider nicht helfen. Ich starte meinen Raspi nämlich so gut wie nie neu geschweige denn automatisch.


    Ich kann sehen, dass der Fehler beim Starten von homebridge-blinkcameras auftritt, weil da ja steht:

    [6/16/2020, 18:33:43] TypeError: Cannot read property 'message' of undefined
    at Request._callback (/usr/local/lib/node_modules/homebridge-blinkcameras/node_modules/node-blink-security/lib/blink.js:399:90)

    Ich hab mir ein bisschen den Sourcecode angesehen und das Problem tritt offenbar auf, wenn sich das Plugin wo auch immer authentifizieren will. Von Blink Cams weiß ich nur, dass man Blink mit fünf Buchstaben schreibt (ich weiß auch sonst nix von Cams). Was das also für eine Authentifizierung ist, weiß ich also auch nicht. Du wirst es wissen.


    Also rate ich mal ein bisschen: der Raspi kann zum Zeitpunkt des Homebridge-Starts nicht (oder irgendwie nicht richtig) das Internet erreichen. Denn homebridge-hue hat vorher auch schon ein bisschen gemault, dass es die Adresse von registry.npmjs.org nicht findet::

    [6/16/2020, 18:33:43] [Hue] npm registry: registry.npmjs.org: cannot getaddrinfo: EAI_AGAIN

    Wie hast du denn deine Homebridge installiert und wie startest du sie normalerweise manuell? Welcher Teil deines Netzwerkes ist dein DNS? Dein Router oder vielleicht pihole?

  • Also rate ich mal ein bisschen: der Raspi kann zum Zeitpunkt des Homebridge-Starts nicht (oder irgendwie nicht richtig) das Internet erreichen. Denn homebridge-hue hat vorher auch schon ein bisschen gemault, dass es die Adresse von registry.npmjs.org nicht findet::

    Wie hast du denn deine Homebridge installiert und wie startest du sie normalerweise manuell? Welcher Teil deines Netzwerkes ist dein DNS? Dein Router oder vielleicht pihole?

    Guten Morgen sschuste ,


    erstmal vielen Dank für Deine Mühe. Hilft mir ungemein überhaupt etwas zu verstehen.


    In der Tat habe ich auf dem gleichen Raspberry den pihole laufen. Dieser ist als DNS Server eingetragen. Alternativ (2. DNS) aber auch mein Router.


    Mit der tollen Starthilfe von Dir phantasiere ich mir jetzt zusammen, das warum auch immer der 2. DNS Eintrag nicht 100% funktioniert. Das gucke ich mir mal separat an. Damit hat sich aber für mich ein großes Geheimnis gelüftet ;)


    Beim reboot und 1. Start der Homebridge ist wahrscheinlich der pihole nicht sofort verfügbar. Daher laufen teilweise Abfragen der Homebridge ins Leere und die Homebridge fährt leider wieder runter.


    Beim 2. Start (manuelle) Neustart der Homebridge läuft der pihole und daher startet die Homebridge problemlos durch.


    Ich glaube jetzt zu verstehen, das das Problem weniger die Homebridge / plug-ins sind, sondern mein pihole bzw. das setup bzgl. der DNS Abfrage. Ich hätte an der völlig falschen Stelle rumgebastet! Danke!


    Ich werde den pihole bzw. den DNS Eintrag zum Test mal wieder auf den Router stellen. Wenn es dann klappt, habe ich Gewissheit und versuche danach den pihole korrekt einzustellen.


    Gruß

  • Ich hatte mit meinem Setup dieses Problem auch, bei mir läuft ebenfalls Pihole zusammen mit der Homebridge auf dem Pi. Nach einigen Recherchen bin ich zum selben Schluß gekommen wie du: Wenn der Pi bootet und der Homebridge.service startet, ist das Netzwerk noch nicht so weit dass Internetadressen aufgelöst werden.


    Ich habe mir folgendermaßen geholfen:


    Die Homebridge.service Datei habe ich folgendermaßen angepasst.



    Die Zeile "ExecStartPre=" führt dazu dass, bevor der Hombridge Dienst gestartet wird, dieser Befehl ausgeführt wird.


    Unter: /home/pi/.homebridge/ habe ich die Datei meinSkript.sh mit diesem Inhalt angelegt:



    Dieses Skript prüft wiederholt ob die Internetadresse "http://google.com" erreichbar ist und beendet sich danach.

    Wenn du die Datei gespeichert hast, musst du sie mit:


    Code
    sudo chmod +x /home/pi/.homebridge/meinSkript.sh


    ausführbar machen.


    Zum Schluß muss die geänderte Unit Datei des Homebridge.service noch dem System bekannt gemacht werden:


    Code
    sudo systemctl daemon-reload


    Ab jetzt Wird beim Boot des Raspi zuerst das "meinSkript.sh" ausgeführt und wenn das erfolgreich war, startet die Homebridge durch. In Zukunft dauert der Neustart einen Moment länger.

    Wenn deine Internetverbindung down ist, dürfte deine Homebridge allerdings gar nicht mehr starten, das habe ich aber noch nicht ausprobiert.


    Bei mir läuft es mit dieser Änderung seit Monaten stabil, bei jedem Neustart der Homebridge und bei jedem Reboot.

  • Die Homebridge.service Datei habe ich folgendermaßen angepasst.

    Meine bevorzugte Lösung wäre es, pihole anders zu starten. Zur Zeit wird pihole-FTL per init-Skript gestartet. Das liegt in /etc/init.d/pihole-FTL. Gestartet wird pihole also mit /etc/init.d/pihole start und angehalten wird es mit /etc/init.d/pihole stop.


    So machte man das halt früher. Ich bevorzuge aber heute den Start mit systemctl und das pihole-init-Skript ist dazu nicht kompatibel. Könnte man pihole so wie die Homebridge per systemctl starten, dann könnte man in homebridge.service nämlich angeben:


    [Unit]

    Description=Node.js HomeKit Server

    After=syslog.target network-online.target pihole.service


    Dann würde die Homebridge nämlich nicht vor pihole gestartet werden. Zumindest nehme ich das an. Wahrscheinlich laufe ich in das gleiche Problem rein, weil auch bei mir läuft pihole mit der Homebridge zusammen. Ich hab pihole erst neulich vom einem älteren Raspi auf meinen 4er portiert, diesen aber nach der Installation nie rebootet.


    Ich werde mal versuchen, pihole dahingehend umzubauen.

    Einmal editiert, zuletzt von sschuste ()

  • Vielen Dank für die hilfreiche Rückmeldungen.


    Ich habe jetzt erstmal den pihole deaktiviert, bzw. verwende als DNS Server wieder die regulären vom Netzanbieter (im Router eingetragen). Trotzdem ist das Problem geblieben.


    In der Konsole "sudo reboot"



    Wenn ich dann die Homebridge nochmal neu starte, läuft alles wieder korrekt.


    Fand die Idee mit den pihole sehr gut, aber wenn im Router wieder der Standard DNS Server eingetrage ist, dürfte es das ja nicht sein.


    P.S: Der Raspberry ist per LAN mit dem Netzwerk (direkt am Router) verbunden.

  • Bei mir finde ich mit


    systemctl list-units


    einen pihole-FTL.service der läuft.


    Ich hab jetzt nicht den großen Plan, aber bedeutet das nicht dass das schon als Service läuft und eben nicht als init Skript gestartet wird?


    Kann man den nicht in die “After=“ Deklaration einschließen? Vielleicht reicht das schon?

  • Kann man den nicht in die “After=“ Deklaration einschließen? Vielleicht reicht das schon?

    Probier's aus. Ich weiß es nicht.

  • Klappt!


    so sieht mein homebridge.service aus:



    Nach dem reboot läuft alles ohne Eingriff. Mein PreExec Skript wird nicht mehr benötigt.

  • Klappt!

    Sehr geil. Wieder eine Lösung mehr.

  • Klappt!


    so sieht mein homebridge.service aus:

    Nach dem reboot läuft alles ohne Eingriff. Mein PreExec Skript wird nicht mehr benötigt.

    Braucht man nur den Inhalt von der homebridge.service zu kopieren? Ich hatte sschuste Beitrag so verstanden, das der pihole mit einem "alten" Verfahren startet. Muss man diese erst deaktiveren oder kann man einfach die Lösung von Dir übernehmen?

  • Du editierst DEINE homebridge.service Datei. In der Zeile die mit „AFTER=„ beginnt, fügst du am Ende pihole-FTL.service ein.

    Dann abspeichern, 1x daemon-reload und beim nächsten Neustart klappt es.


    Bei Pihole selbst musst du nichts ändern.

  • Bei Pihole selbst musst du nichts ändern.

    Ach was. Ist ja der Hammer. Ich hab's extra geändert :D


    Gut zu wissen. Danke.

  • wie hast du es gemacht?

    Naja, ich habe eine pihole-FTL.service-Datei nach /etc/systemd/system gelegt und die alte /etc/init.d/pihole-FTL aus den Runleveln genommen, so dass sie beim Boot nicht mehr ausgeführt wird.

  • Hi

    Mein pi startet und startet kurz bevor der pi offline geht. Weis wer wie ich von der SD Card alle installierten Pakete auslesen kann also nicht nur die von node.js sonder Python/pip und apt ?


    Danke

  • Mein pi startet und startet kurz bevor der pi offline geht.

    Wie darf ich diesen Komma-befreiten Satz verstehen?


    Als:

    Mein pi startet und startet kurz, bevor der pi offline geht.


    Oder als:

    Mein pi startet und startet, kurz bevor der pi offline geht.


    Was aber kaum eine Rolle spielt, denn ich verstehe weder die eine noch die andere Aussage. Installierte Pakete werden mit apt list --installed angezeigt, installierter Python-Kram mit pip list und pip3 list.