Hier ist eine Verbesserte Version:
Hallo zusammen,
ich hatte ja schon einmal angedeutet an anderer Stelle das ich eine Überwachung der Homebridge bzw. der einzelnen Instanzen nicht schlecht finden würde. Bisher hatte ich leider keine vernünftige Möglichkeit gefunden das Umzusetzen. Nach langem recherchieren und ausprobieren habe ich aber einen Weg gefunden und will diesen gerne mit euch teilen.
Dazu habe ich mal wieder eine Anleitung erstellt.
Beschreibung:
Mit dieser Anleitung ist es möglich Homebridge bzw. mehrere Homebridge Instanzen oder auch OS Systemdservice zu Überwachen und sich eine Push Nachricht über Telegram zuzusenden bei bestimmten Ereignissen. Getestet habe ich es mit SSH Login und Homebridge.
Daher werde ich in dieser Anleitung aufzeigen wie es möglich ist eine bzw. mehrer Homebridge Instanzen zu Überwachen.
ACHTUNG: Funktioniert nur wenn die Homebridge als systemd Service eingerichtet ist nicht unter init.d
Anleitung Inspiriert bei https://limond.de/send-systemd…entries-to-telegram-chat/
Step.1
Telegram Account und ChatBot erstellen. Hier bitte die Anleitungen aus dem Netz verwenden da es einige dazu gibt z.B. https://core.telegram.org/bots#6-botfather
Step. 2
Wir benötigen die Software ntfy https://github.com/dschep/ntfy und Installieren diese mit:
sudo pip install ntfy[telegram]
Step. 3
Nach der Installation senden wir uns eine Test Nachricht zu um einen Passwort zu generieren. Hier wird der Token abgefragt den ihr von eurem Telegram ChatBot bekommt.
Diesen fügen an dieser Stelle ein und erhalten das Passwort. Dieses Passwort geben wir in der Telegram App in das Chatfeld von unserem ChatBot ein und senden es ab.
Anschließen erhalten wir einen Meldung im Terminal das der Vorgang erfolgreich abgeschlossen wurde. Jetzt haben wir die Schnittstelle zwischen ntfy und Telegram geschaffen.
Anmerkung:
Mit (ntfy -b telegram send XXXX) können aus dem Terminal ab sofort alle möglichen Sachen an Telegram manuell versendet werden
ntfy -b telegram send test
pi@HomeKitServer:~ $ ntfy -b telegram send test
Follow the instructions to configure the Telegram backend.
Talk with the BotFather on Telegram (https://telegram.me/BotFather), create a bot and insert the token
?
Step.4
Hier legen wir ein Skript an in dem wir der systemd Unit die unsere Homebridge bzw. unser System Überwacht sagen was bei welchem Ereignis welche Push an uns gesendet wird.
Dazu rufen wir das Verzeichnis /usr/local/bin mit cd /usr/local/binauf.
Hier erstellen wir eine Datei mit sudo touch instanzen-reporter.sh diese öffnen wir mit sudo nano instanzen-reporter.shund fügen diesen Text ein, speichern und machen es ausführbar mit sudo chmod 755 instanzen-reporter.sh
#!/bin/bash
journalctl --unit homebridge* -f --since "now" |
grep --line-buffered "exited" |
sudo -u pi xargs -L1 -I '#' ntfy -b telegram send 'Homebridge Instanz ausgefallen'
Kurze Erklärung: zum Skript:
In der zweiten Zeile sagen wir das er alle Service die mit homebridge*anfangen überwacht werden. Hier spielt es keine Rolle ob ihr eine oder mehrere Instanzen Überwachen möchtet ihr bekommt immer eine Push wenn eine Instanz ausfällt. Nachteil es ist immer die gleiche Meldung wobei mir persönlich es reicht. Nachschauen muss ich jetzt sowieso
Beachtet werden sollte aber das jeder Dienst der zusätzlich eingerichtet wird auch RAM verbraucht die bei Pi 3 mit 1 GB auch begrenzt sind je nachdem wieviele Instanzen Homebridge ihr schon aufgesetzt habt.
Was ich an dieser Stelle sagen möchte ihr könnt hier auch homebridge-Instanznameeingeben und für jede Instanz eine Push generieren lassen in dem ihr diese Anleitung für jede Instanz durchführt.
In der dritten Zeile sagen wir auf welches Wort im Überwacht werden soll "exited"
In der vierten Zeile was als Nachricht gesendet wird 'Homebridge Instanz ausgefallen'
Step.5
Jetzt legen wir unser systemd Unit an. Diese Überwacht durchgehend unsere Homebridge.
Dazu öffnen wir folgenden Pfad/etc/systemd/system mit cd /etc/systemd/system
und legen eine Datei an mit sudo touch instanzen-reporter.service und fügen folgenden Inhalt ein und speichern
[Unit]
Description=instanzen-reporter
After=network.target homebridge.service
Wants=homebridge.service
[Service]
Type=simple
ExecStart=/usr/local/bin/instanzen-reporter.sh
Restart=always
SyslogIdentifier=instanzen-reporter.service
[Install]
WantedBy=multi-user.target
Alles anzeigen
Step. 6
Jetzt müssen wir unsere systemd Unit bzw. unseren service noch Aktivieren und starten. Dafür geben wir im Terminal sudo systemctl daemon-reloadein und anschließend noch sudo systemctl enable instanzen-reporter.service sowie sudo systemctl restart instanzen-reporter.service
Jetzt sollten wir diese Antwort bekommen:
pi@HomeKitServer:~ $ sudo systemctl enable instanzen-reporter.service
Created symlink /etc/systemd/system/multi-user.target.wants/instanzen-reporter.service ? /etc/systemd/system/instanzen-reporter.service.
Kontrollieren können wir es mit sudo systemctl status instanzen-reporter.service hier sollte es jetzt so aussehen:
pi@HomeKitServer:~ $ sudo systemctl status instanzen-reporter.service
? instanzen-reporter.service - instanzen-reporter
Loaded: loaded (/etc/systemd/system/instanzen-reporter.service; enabled; vendor preset: enabled)
Active: active (running) since Datum Zeit CET; 1s ago
Main PID: 8518 (instanzen-repor)
Tasks: 5 (limit: 4915)
CGroup: /system.slice/instanzen-reporter.service
??8518 /bin/bash /usr/local/bin/instanzen-reporter.sh
??8519 journalctl --unit homebridge* -f --since now
??8520 grep --line-buffered exited
??8521 sudo -u pi xargs -L1 -I # ntfy -b telegram send Homebridge Instanz ausgefallen
??8522 xargs -L1 -I # ntfy -b telegram send Homebridge Instanz ausgefallen
Alles anzeigen
Step 6.
Testen ob es funktioniert. Dazu eine Homebridge Instanz stoppen jetzt sollte die Push über Telegram erfolgen. Bei einem Absturz der Homebridge erfolgt diese Push natürlich im 10 Sek Restart Abstand in einer Schleife bis das Problem behoben wurde oder die Homebridge manuell abgeschaltet wird.
Step 7. Enjoy It und macht euch gerne Gedanken für zusätzliche Einsatzmöglichkeiten und teilt diese hier mit uns
Gruß Nastra