rPiWoMo Watchdog BlueBattery und BLE

Wenn wir mit unserm Wohnmobil unterwegs sind, wollen wir die Zeit genießen und das System sollte ohne unser Zutun laufen. Leider gibt es im Zusammenspiel zwischen BlueBattery und BLE die Besonderheit, dass BlueBattery vor BLE gestartet sein muss!
Da dies, z.B. nach einem Reboot, nicht garantiert werden kann, muss also ein Watchdog her, der diese Arbeit für uns erledigt und wir unsere Freizeit geniessen können.
Alfred, sei wachsam!

Hintergrund:

Das Tool zur Anbindung des BlueBattery und der BLE-Adapter nutzen den selben Treiber. Ist der BLE-Adapter bereits gestartet bevor, BlueBattery startet, hat dieser keinen Zugriff auf das Bluetoothmodul des rPi. Umgekehrt funktioniert dies durchaus. Also muss eine Logik her, die überwacht, ob der BlueBattery online ist aber keine Daten im ioBroker ankommen. Ist dies der Fall, wird der BLE-Adapter für 5 Sekunden gestoppt und wieder gestartet. Wenn wir schon dabei sind… kannst du gleich prüfen ob BlueBattery überhaupt läuft und diesen ansonsten starten.

Vorbereiten des Betriebssystems:
Im Tutorial zum Installieren des BlueBattery hast du diesen als Dienst via systemd implementiert. Da systemd auf Systemebene läuft und Root-Rechte benötigt aber der ioBroker als eigenständiger User “iobroker” ohne Root-Rechte läuft (was sehr gut ist!), musst du dem User “iobroker” erlauben den BlueBattery-Dienst zu kontrollieren. Also in der Konsole via SSH mit User pi folgende Schritte abarbeiten:
sudo visudo /etc/sudoers.d/iobroker
hier unten in der Datei folgende Zeile eingeben (Kopieren/Einfügen bitte vermeiden!):
ALL ALL=NOPASSWD: /usr/bin/systemctl start bluebattery
ALL ALL=NOPASSWD: /usr/bin/systemctl stop bluebattery
ALL ALL=NOPASSWD: /usr/bin/systemctl restart bluebattery
und mit [ctrl]+[x] Speichern und Schliessen. Achtung! Diese Einstellung geht z.B. bei einem “iob fix” verloren und muss erneut gesetzte werden!
Skript mit blockly im ioBroker

Ich habe bewusst für dieses Beispiel blockly gewählt, da dies aufgrund der einfachen Handhabung für jeden der bis hierhin gekommen ist nachvollziehbar sein sollte. Natürlich kannst du es auch direkt in JS selbst schreiben…
Jetzt kannst du dir nach den folgenden Bildern dein eigenes Skript mit blockly bauen…

Folgende Punkte gilt es dabei zu beachten,

  1. du gehst rechts auf Skripte und legst oben rechts mit “+” eines neues leeres Skript an.
  2. du musst eine Variable “varLastUpdate” erstellen, wie in Pic 1. zu sehen.
  3. bei den Datenpunkten ist darauf zu achten, dass der Admin-Mode oben rechts eingeschaltet ist, da du ansonsten nicht den Ordner “System” für den Zustand des BLE-Adapter angezeigt wird.
Pic 1.
Pic 2.
Pic 3.

Alternativ habe ich dir den Export meines Skript angehängt.
Ich rate jedoch ausdrücklich dies nicht zu nutzen! Erstellst du das Skript selbst, auch wenn du es quasi nur abschreiben wirst, lernst du das System und dessen Funktionsweise! Dies wird dir bei individuellen Anwendungsfällen – meiner Erfahrung nach – immens helfen.
Solltest du es dennoch nutzen wollen, einfach ein leeres Skript erstellen und den Inhalt von BBWatchdog.txt (rechte Maustaste>Download) einfügen. Anschliessend MUSST du die Datenpunkte, die den BlueBattery und BLE betreffen, wie in Pic 3. gezeigt, neu auswählen, da diese auf mein System zugeschnitten sind und bei dir evtl. nicht passen!

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert