Beiträge von sschuste

    Ja, das finde ich auch ganz hervorragende Idee. Ein Punkt müsste weiter ausgeführt werden: "wie postet man man ein Log?" und "Wie kommt man an das Log heran?"


    Ich wäre bereit, dazu eine weitere Anleitung zu schreiben. Es kommt häufig vor, dass ich selber googeln muss, um eine Antwort zu finden, oder dass ich eine config.json bei jsonlint checke, und da ist ein Screenshot oder ein Foto der Fehlermeldung oder der Konfiguration außerordentlich lästig.


    Bei Fehlern mit Plugins wäre es auch hilfreich zu wissen, welches Plugin überhaupt installiert wurde. So mancher vergisst das nämlich in seiner Verzweiflung hier anzugeben.


    Stefan

    Ich habe jetzt ein bisschen herum probiert und meine Raspi-Armada hat dabei geholfen. Es liegt offensichtlich an Raspbian Buster. Ich habe drei Konfigurationen getestet:


    Raspi 4 mit Raspbian Buster: Plugin funktioniert nicht.

    Raspi 3 mit Raspbian Buster: Plugin funktioniert nicht.

    Raspi 3 mit Raspbian Stretch: Plugin funktioniert.


    Ich glaube nicht, dass es an der Hardware liegt, sondern am verwendeten Betriebssystem. Da muss der Plugin-Entwickler wohl etwas nacharbeiten. Ich habe ihn bereits mit meinen Ergebnissen versorgt.

    Bau dir selber einen Button. Die Befehle zum Löschen der Verzeichnisse lauten:


    rm -rf /var/homebridge/persist/* und

    rm -rf /var/homebridge/accessories/*


    Mit dem Plugin homebridge-cmdtrigger kann man sich dann einen Button auf das iPhone legen:

    Das ist natürlich nix für dicke Finger! Da kommt auch keine Nachfrage wie etwa "Bist du sicher, dass du dir deine Homebridge ruinieren willst?" Ich weiß auch gar nicht, warum ich dass hier überhaupt poste - ich würd's mir jedenfalls nicht auf das iPhone legen, oder wenn, dann nur in einen Extra-Raum namens "Danger".


    Stefan

    Also deine Konfiguration ist formal schon mal richtig. Gut gemacht :thumbup:.


    Die Anleitung sagt, dass hinter "host": die IP-Adresse des Gateways eingeben werden soll. Jetzt mal scharf überlegen: ist damit das Brennenstuhl-Gateway oder der Fritzbox-Router gemeint? Na? Was meinst du? (Tipp: ich würd's mal mit der Brennenstuhl-IP-Adresse versuchen).


    Sonst kann ich nix beitragen, ich verwende keine Brennenstuhl-Hardware noch wusste ich bis vor 10 Minuten, dass sie überhaupt existiert. Viel Erfolg!


    Stefan

    Kann man da auch speziell einstellen, dass er nur einen Neustart machen soll, wenn die Homebridge stehen geblieben ist?

    Mit dem Watchdog geht das nicht. Man müsste also selber etwas basteln, was einerseits ganz einfach, andererseits aber nicht ganz trivial ist.


    Wenn man seine Homebridge mit dem systemd kontrolliert (was man daran erkennt, dass der Befehl systemctl verwendet wird), dann wird die Homebridge immer dann automatisch neu gestartet, wenn sie abgestürzt ist. Das ist schon mal ziemlich praktisch. Sie wird aber nicht automatisch neu gestartet, wenn sie absichtlich angehalten wurde.


    Absturz und Anhalten sind zwei grundverschiedene Dinge. Absturz ist das, was man nicht will, während Anhalten meist ein manueller Prozess ist, der mit dem Befehl sudo systemctl stop homebridge ausgelöst wird. Was beide gemein haben ist die Tatsache, dass danach die Homebridge nicht mehr läuft. Und während nach dem Crash die Homebridge neugestartet wird (das will man so), wird sie nicht neugestartet, wenn man sie vorsätzlich angehalten hat (das will man auch so).


    Leider kommt es vor, dass die Homebridge von einem Plugin angehalten wird. Das Plugin fährt aus irgendwelchen Gründen an die Wand und kann nicht weiter ausgeführt werden, aber die Homebridge schmiert dabei nicht ab, sondern wird von dem Plugin angehalten. Das wird erzeugt durch gute Programmierung und ein gutes sogenanntes error handling. Das Plugin homebridge-zp zur Steuerung von Sonos-Geräten macht das beispielsweise so, weil es sich im Fehlerfalle unbedingt noch von der Sonos-Anlage abmelden will. Wenn es das nicht täte, würde nach einer Weile keine neue Anmeldung mehr möglich sein. Es gibt sicherlich auch andere Plugins, die sich ähnlich verhalten. Nur ist genau das richtig blöd für uns .


    Da die Homebridge vom Plugin angehalten wurde, wird sie vom systemd nicht neu gestartet. Der hat nämlich ein Signal bekommen, dass alles so seine Richtigkeit hat und die Homebridge nicht laufen soll. Das ist natürlich ziemlich uncool, wenn man sich gerade weit entfernt von seinem Setup befindet, beispielsweise in Timbuktu oder in Hammerfest, und man keine Möglichkeit hat, das Ding wieder zu starten.


    Da könnte jetzt ein kleines Skript helfen, das prüft ob die Homebridge läuft und das korrigierend eingreift, falls das nicht der Fall sein sollte. Diese Skript könne den Zustand beispielsweise einmal pro Minute abfragen und dann irgendwas tun (Neustart des Raspi oder Neustart der Homebridge). Was unweigerlich dazu führt, dass man seine Homebridge selber nicht mehr anhalten kann. Ein manuell eingegebenes sudo systemctl stop homebridge würde immer dazu führen, dass kurz darauf der Raspi neu gestartet wird. Und wenn dann die Homebridge aus irgendwelchen Gründen tatsächlich nicht startet, die Schüssel in einen wunderschönen Boot-Loop verfällt, der einem den ganzen Monat versauen kann, vor allem dann, wenn der vierwöchige Urlaub in Hammerfest gerade begonnen hat.


    Selbst wenn man nur die Homebridge neu starten will und nicht gleich den ganzen Raspi, kann einen ein Neustart der Homebridge nerven. Du hältst die Homebridge absichtlich an, dein Rechner startet sie neu. Lästig.


    Wie dem auch sei, ein Aufpasser-Skript könnte so aussehen:


    sudo nano /usr/local/bin/homebridge-watcher.sh

    Bash
    #!/bin/bash
    
    /usr/bin/curl http://localhost:51826
    if [ $? != 0 ]; then
        sudo systemctl restart homebridge
    fi

    chmod +x sudo nano /usr/local/bin/homebridge-watcher.sh


    Dann einen cron job erstellen, der das Skript alle 5 Minuten aufruft:

    sudo nano /etc/crontab


    und unter die letzte Zeile einfügen:

    Code
    */5 * * * * root /usr/local/bin/homebridge-watcher.sh >/dev/null 2>&1


    Testen mit:

    sudo systemctl stop homebridge und warten. Das Skript wird alle fünf Minuten aufgerufen, also beispielsweise 11:00 Uhr, dann um 11:05 Uhr, dann um 11:10 Uhr und so weiter und so fort. Wenn man den cron job allerdings erst um 11:04 Uhr installiert, läuft das Skript zum ersten Mal um 11:10 Uhr. Abwarten.


    Stefan

    Ich habe immer Probleme gehabt mit Automationen, die zwischen Sonnenuntergang und Sonnenaufgang liegen. Möglicherweise ist die Cloud ab Mitternacht der Meinung, das es nicht mehr nach Sonnenuntergang ist, sondern inzwischen vor Sonnenuntergang. Keine Ahnung.

    Du brauchst keine Homebridge, um deinen Wunsch zu erfüllen. Du brauchst ein Programm, das HomeKit abfragt. Wir alle kennen solche Programme: EVE, HomeApp für iPhone, HomeApp für MacOS, Controller, Home+, whatever.


    Alle diese Programme fragen HomeKit ab und stellen die Ergebnisse mehr oder weniger unterschiedlich dar. Was du jetzt willst, ist ein Web-Server, der dir Webseiten liefert, die diese Ergebnisse enthalten. Beispielsweise könnte auf dem Raspi eine Software laufen, die HomeKit-Daten sammelt und Veränderungen an deinen Browser pusht.


    Hat nur noch keiner programmiert. Zumindest kenne ich nichts Entsprechendes.


    Stefan

    Der trigger ist aber von morgens noch ausgelöst. Die Automation greift wohl erst, wenn sich der Trigger während dem Zeifenster aktiviert.

    Nein, Automationen greifen immer dann, wenn etwas getriggert wird und nicht wenn etwas getriggert ist. Automationen reagieren grundsätzlich auf Veränderungen und nicht Zustände.


    Kann man den Trigger ggfs. alle 5 Minuten neu auslösen lassen?

    Verlasse einfach alle fünf Minuten das Haus. Das people-Plugin hat nur eine Aufgabe: festzustellen, ob ein Gerät per ping erreichbar ist order nicht.


    Um 12:59 Uhr schaltet die Pumpe sich wieder ein und um 13:00 Uhr habe ich eine Automation: wenn niemand da, Pumpe aus!

    Warum nicht: schalte die Pumpe um 13:00 ein, wenn jemand da ist?

    Kann ich in den log ordner eigendlich alle gz Dateien löschen?

    Ja, aber nicht den Ordner selbst. Aber welchen Grund kann es dazu geben?


    [ ] Langeweile

    [ ] Prokrastination

    [ ] Putzfimmel

    [ ] SD-Card voll

    [ ] Die Stimmen befehlen es


    Falls du das System schmaler halten willst und dich die alten Logs nicht interessieren, dann solltest du dich mit dem bereits installierten und auch laufenden logrotate beschäftigen, wie oben von Krocko bereits erwähnt. Dieses Tool hilft dabei, die Logs zu verwalten. Die laufenden Zahlen hinter den Lognamen zeugen davon, dass logrotate genau das bereits tut.


    Logrotate komprimiert und archiviert Logs, wenn ein bestimmter Trigger anschlägt. Dieser Trigger kann zeitbasiert sein ("komprimiere jeden Montag" oder "komprimiere am 13. jeden Monats") oder er kann größenbasiert sein ("komprimiere, wenn das Log > 2GB ist"). Dabei entsteht dann eine Datei mit einem Namen wie syslog.gz.1. Gleichzeitig hebt logrotate diese Dateien eine Weile auf. Beispielsweise könnte logrotate so konfiguriert sein, dass ein tägliches Komprimieren eines Logs passieren soll, und das eine Woche lang. Dabei entstehen dann täglich neue, komprimierte und durchlaufend nummerierte Dateien wie meinlog.gz.1, meinlog.gz.2, meinlog.gz.3, meinlog.gz.4, meinlog.gz.5, meinlog.gz.6 und meinlog.gz.7, wobei die Datei mit der höchsten Nummer die älteste ist.


    Ein meinlog.gz.8 wird es nie geben, denn das älteste der Logs wird von logrotate gelöscht.


    Die Konfigurationsdateien von logrotate befinden sich in /etc/logrotate.d.


    Stefan