HOMEASSISTANT MIT RASPBERRY ZERO UND BLUEBATTERY.PY TEIL 2

– von Hannes Schleeh –

AUSLESEN BLUEBATTERY SMART-SHUNT IN HOMEASSISTANT MIT RASPBERRY ZERO UND BLUEBATTERY.PY TEIL 2 DIE GROSSE LÖSUN

 

Raspberry Pi Zero WH im smarten Wohnmobil

Wie in Folge 1 versprochen, kommt jetzt die Nerd-Variante, seinen Bluebattery via Homeassistant fernauslesen zu können. Nachdem ich fast alle Geräte und Sensoren auch aus der Ferne auslesen oder steuern kann, will ich das natürlich auch mit den Daten zu den Stromflüssen machen können. Die kommen aus dem Bluebattery aber leider nur per Bluetooth raus. Nun gibt es schon seit dem 5. Mai 2021 eine Lösung auf Github von Dr. Daniel Fett, es wird Zeit sich daran zu wagen.

Raspberry Pi Zero WH im Smartwomo

 

Voraussetzungen

Zur Umsetzung dieser Lösung brauchen wir:


AUFRUF: Unterstützt die Entwickler von Open Source

Wer Open Source einsetzt, der zahlt für die Software gar nichts, oder schickt wie ich den Entwicklern dahinter bei einer gelungenen Umsetzung ein Danke Schön per Paypal oder Github. Dann können die auch wieder was Neues entwickeln. In meinem Fall habe ich auch Unterstützung von den Jungs über deren Telegram Kanal erhalten. Meine Anleitungen sollen es neuen Usern mit meinem Kenntnisstand ermöglichen das auch selbst umsetzen zu können und zudem die Entwickler entlasten.

Mich unterstützt Ihr, indem Ihr die Geräte über die Affiliate-Links kauft oder mir per Paypal einen ausgebt! 😉

Danke schon mal dafür!


Hardware die wir brauchen

Für die Umsetzung von Dr. Daniel Fett’s bluebattery.py brauchen wir als Hardware einen Raspberry Pi. Leider macht es wenig Sinn, es auf dem vorhandenen Pi, auf welchem bei mir Homeassistant läuft, zu installieren. Klar, wir brauchen noch einmal zusätzliche Hardware und die braucht Strom und kostet Geld. Aber die Vorteile, gerade für nicht so versierte Menschen wie mich, liegen auf der Hand. Homeassistant läuft als direktes Betriebssystem-Derivat auf dem Raspberry Pi. Um jetzt noch zusätzliche Anwendungen auszuführen, braucht man spezielle Zugangsrechte. Damit kann man aber als Nicht Wissender mehr kaputt machen. Simon hat dazu ein Video gemacht. Wenn Ihr Euch das zutraut, dann wäre das der Weg.

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Wer es will und kann, der könnte bluebattery.py auch mit den im Video gezeigten ROOT-Rechten auf seinem Raspberry Pi mit der Homeassistant Installation einrichten. Mir war das zu heiß!

ANGEBOT
Raspberry Pi Zero WH
Raspberry Pi Zero WH
  • Extrem kompaktes Raspberry Mainboard mit ARM11 Broadcom BCM2835 Single Core 1 GHz RAM 51.
GeeekPi für Raspberry Pi Zero 2 W/Zero W Gehäuse, 7 in 1 Basic Starter Kit, 20-poliger GPIO-Header, OTG Kabel, Switch Kabel, HDMI Adapter, Kühlkörper und Schraubendreher (klar)
GeeekPi für Raspberry Pi Zero 2 W/Zero W Gehäuse, 7 in 1 Basic Starter Kit, 20-poliger GPIO-Header, OTG Kabel, Switch Kabel, HDMI Adapter, Kühlkörper und Schraubendreher (klar)
  • Kompatibel mit Raspberry Pi Zero,Zero 2 w und Raspberry Pi Zero W,Zero W 2 (Raspberry Pi Zero Board ist nicht enthalten), Gehäuse-Kit mit 4-Port-USB-Hub und Netzteil, siehe ASIN B09Q7VTDPV
  • Der Kühlkörper sorgt für eine bessere Wärmeableitung und der GPIO-Header erleichtert das Anschließen der GPIO-Ports.
  • Acrylgehäuse mit 2 Abdeckungen und Schrauben zum Installieren.
  • Zugang zu allen Ports des Raspberry Pi Zero Board.
  • Das Paket beinhaltet einen Koffer, einen Kühlkörper, ein Switch-Kabel, ein OTG-Kabel, einen HDMI-Adapter, einen GPIO-Header und einen Schraubendreher.
ANGEBOT
SanDisk Ultra 32 GB microSDHC Memory Card + SD Adapter with A1 App Performance Up to 98 MB/s, Class 10, U1
SanDisk Ultra 32 GB microSDHC Memory Card + SD Adapter with A1 App Performance Up to 98 MB/s, Class 10, U1
  • Die microSD Speicherkarte ist der ideale Begleiter für Ihr Android-Smartphone und -Tablet, sowie für Ihre MIL-Kamera
  • Die microSDHC Speicherkarte bietet bis zu 98 MB/s Übertragungsgeschwindigkeit für weniger Wartezeit bei der Übertragung
  • Mit der A1 App Performance erfüllt die SanDisk microSD Speicherkarte den Leistungsstandard für flüssigere App-Leistung
  • Dank U1 und Class 10 nehmen Sie mit der microSD Karte Full-HD-Videos auf und geben diese ohne Probleme wieder
  • Lieferumfang: SanDisk Ultra microSDHC UHS-I Speicherkarte 32 GB + Adapter (Für Smartphones und Tablets, A1, Class 10, U1, Full HD-Videos, bis zu 98 MB/s Lesegeschwindigkeit) 10 Jahre Garantie

Die ersten Schritte

Wir installieren Raspberry Pi OS in der lite version (ohne Desktop) auf der Micro-SD Karte.

Raspberry Pi OS lite 32 Bit ohne Desktop (Headless) installieren

Bevor wir dann das Betriebssystem auf die SD-Karte schreiben, stellen wir vorher noch ein paar wichtige Werte ein. Dazu klicken wir das Zahnradsymbol unten rechts an.

In den Einstellungen stellen wir vier wichtige Parameter ein, die uns hinterher den Zugang zum Raspberry Pi erleichtern.
1. SSH aktivieren
2. Benutzername und Passwort Bitte als Benutzername unbedingt “pi” (ohne die Anführungszeichen) wählen und Passwort merken oder notieren!
3. Angabe des WLAN’s in Euerem Wohnmobil (SSID) und das dazu gehörige Passwort
4. Sprache und Tastatur-Layout auf DE setzen
Siehe Screenshot
Jetzt starten wir den Schreibvorgang.

Wir setzen die fertige SD-Karte in den Pi Zero WH ein und starten diesen.

Mit unserem Mac oder PC loggen wir uns per SSH auf den Raspberry Pi ein.

Zunächst ermöglichen wir die Installation via Github auf dem Pi Zero:

sudo apt install git

Eingeloggt installieren wir die bluebattery.py von Dr. Daniel Fett aus seinem Repositorium (Repo) auf Github mit:

sudo apt-get install python3-pip

Wenn alles installiert ist, starten wir den Pi neu mit:

sudo reboot

Wenn der Pi neu gestartet wurde, geben wir den folgende Befehl ein:

pip3 install git+https://github.com/danielfett/bluebattery.py.git

Sobald die Installation fertig ist, können wir mit dem nachfolgenden Befehl testen, ob wir erfolgreich waren:

bb_cli log

Nun müssen wir noch eine Datei einrichten, die bei einem Neustart des Raspberry Pi automatisch die Werte des Bluebattery ausliest und per MQTT an unseren MQTT-Broker sendet. Dazu brauchen wir Benutzername und Passwort des MQTT-user in Homeassistant aus unserem System.

Anpassung Bluetooth auf dem Pi Zero

Jetzt müssen wir noch eine Anpassung der Bluetooth Nutzung machen:

sudo nano /etc/dbus-1/system.d/bluetooth.conf

Damit wird die Datei geöffnet. Wir fügen nun diesen Code direkt vor dem letzten Schließ-Tag “</busconfig>” ein:

  <policy user="pi">    <allow send_destination="org.bluez"/>    <allow send_interface="org.bluez.Agent1"/>    <allow send_interface="org.bluez.GattCharacteristic1"/>    <allow send_interface="org.bluez.GattDescriptor1"/>    <allow send_interface="org.freedesktop.DBus.ObjectManager"/>    <allow send_interface="org.freedesktop.DBus.Properties"/>  </policy>

Damit ermöglichen wir es dem User “pi” ohne Root-Rechte auf die notwendige Bluetooth-Schnittstelle zuzugreifen.

Exkurs Installation und Einrichtung des MQTT-Addon in Homeassistant

Um die Daten des Bluebattery in Homeassistant empfangen zu können, benötigen wir ein installiertes MQTT_Addon sowie einen MQTT-User in Homeassistant. Wie Ihr das Add-on installiert und den User für den MQTT-Broker anlegt, erklärt Euch dieses Video:

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Nun geht es weiter mit der Einrichtung der Datei, die sicherstellt, das die Daten gesendet werden. Wir laden uns die ZIP-File von Github herunter:

Paket bluebattery.py herunterladen um an die bb.service Datei zu kommen

Wir entpacken das ZIP-File auf unserem Computer und öffnen die Datei bb.service im Ordner assets mit dem Programm Visual Studio Code.

Datei bb.service im Ordner assets öffnen

In Visual Studio Code ergänzen wir die bb.service mit den Daten, die es für die Übertragung der MQTT-Befehle an das MQTT-Addon in Homeassistant braucht:

Ergänzung der Angaben in der Datei bb.service in Visual Code Studio

Speichern nicht vergessen! Die fertige Datei fügen wir nun in das Verzeichnis /etc/systemd/system/ auf dem PI Zero ein. Wie, das seht Ihr in diesem Video für Windows und unter diesem Link für Apple Mac:

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Alternativ kann man das auch mit einem FTP-Programm erledigen.

Nun brauchen wir noch drei Befehle um das Ganze einzurichten:

sudo systemctl daemon-reloadsudo systemctl enable bb.servicesudo systemctl start bb.service

Test mit dem MQTT-Explorer ob Daten vom Bluebattery übertragen werden

Mit dem Programm MQTT-Explorer testen wir nun, ob wir Daten aus dem Pi Zero vom Bluebattery erhalten. Dazu müssen wir im WLAN des Wohnmobil-Routers eingeloggt sein und die Zugangsdaten dort eingeben (das sind dieselben wie in der Datei bb.service)

Welche Werte Ihr hier sehen könnt, ist natürlich davon abhängig, welche Geräte an den Bluebattery angeschlossen sind. bei mir ist das ein Victron MPPT Solarladeregler 100 | 50 sowie ein Votronic Ladebooster VCC 12-12 50.


Screenshot MQTT-Explorer mit Daten vom Bluebattery für Homeassistant

Anlegen der Entitäten in Homeassistant

In Homeassistant müssen wir noch die Entitäten per Hand anlegen. Das ist nicht weiter schwer und ich habe Euch meine Datei hier zum Herunterladen eingestellt. Als erstes öffnen wir die Datei configuration.yaml in Homeassistant. Dazu gehen wir im Hauptmenü auf File Editor und fügen in der configuration.yaml diese Zeile ein:

mqtt: !include mqtt.yaml

Damit ist Homeassistant angewiesen, das es nach einer Datei namens mqtt.yaml suchen muss. die müssen wir nun auch noch anlegen und in das Grundverzeichnis hochladen.

Eintrag in configuratio punkt yaml für mqtt punkt yaml

Nun brauchen wir noch die dazu passende mqtt.yaml Hier ist meine zum kopieren und Anpassen:

sensor:    - name: Batterie Ladung      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_1/battery_charge_Ah"      unit_of_measurement: "Ah"      unique_id: "battery_charge_Ah"    - name: SOC      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_1/state_of_charge_percent"      unit_of_measurement: "%"      unique_id: "state_of_charge_percent"    - name: hoechster Ladestrom/Tag      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_1/max_battery_current_day_A"      unit_of_measurement: "A"      unique_id: "max_battery_current_day_A"    - name: niedrigster Ladestrom/Tag      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_1/min_battery_current_day_A"      unit_of_measurement: "A"      unique_id: "min_battery_current_day_A"    - name: Ladung/Tag       state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_1/max_battery_charge_day_Ah"      unit_of_measurement: "Ah"      unique_id: "max_battery_charge_day_Ah"    - name: Maximale Spannung      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_1/max_battery_voltage_day_V"      unit_of_measurement: "V"      unique_id: "max_battery_voltage_day_V"    - name: minimale Spannung      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_1/min_battery_voltage_day_V"      unit_of_measurement: "V"      unique_id: "min_battery_voltage_day_V"    - name: Spannung Starter Batterie      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/booster/starter_battery_voltage_V"      unit_of_measurement: "V"      unique_id: "starter_battery_voltage_V"    - name: Spannung Aufbaubatterie      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/booster/battery_voltage_V"      unit_of_measurement: "V"      unique_id: "battery_voltage_V"    - name: Status Booster      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/booster/booster_status"      unique_id: "booster_status"    - name: aktuelle Booster Ladung      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/booster/booster_charge_current_A"      unit_of_measurement: "A"      unique_id: "booster_charge_current_A"    - name: gesamte Booster Ladung      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/booster/total_booster_charge_day_Ah"      unit_of_measurement: "Ah"      unique_id: "total_booster_charge_day_Ah"    - name: Max Solarstrom      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/solar_charger/max_solar_current_day_A"      unit_of_measurement: "A"      unique_id: "max_solar_current_day_A"    - name: Max Watt      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/solar_charger/max_solar_watt_day_W"      unit_of_measurement: "W"      unique_id: "max_solar_watt_day_W"    - name: gesamte Solarladung      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/solar_charger/solar_charge_day_Ah"      unit_of_measurement: "Ah"      unique_id: "solar_charge_day_Ah"    - name: Wattstunden pro Tag      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/solar_charger/solar_energy_day_Wh"      unit_of_measurement: "Wh"      unique_id: "solar_energy_day_Wh"    - name: Status Solarregler      state_topic: "sservice/bluebattery/AA:BB:CC:DD:EE:FF/live/solar_charger/solar_charger_status"      unit_of_measurement: "%"      unique_id: "solar_charger_status"    - name: Spannung Solarmodul      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/solar_charger/solar_module_voltage_V"      unit_of_measurement: "V"      unique_id: "solar_module_voltage_V"    - name: Temperatur Batterie      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_2/temperature_deg_C"      unit_of_measurement: "°C"      unique_id: "temperature_deg_C"    - name: max Batterietemperatur      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_2/max_temperature_deg_C"      unit_of_measurement: "°C"      unique_id: "max_temperature_deg_C"    - name: min Batterietemperatur      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_2/min_temperature_deg_C"      unit_of_measurement: "°C"      unique_id: "min_temperature_deg_C"    - name: Ladung gesamt Tag      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_2/total_charge_day_Ah"      unit_of_measurement: "Ah"      unique_id: "total_charge_day_Ah"    - name: Externe Ladung Tag      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_2/total_external_charge_day_Ah"      unit_of_measurement: "Ah"      unique_id: "total_external_charge_day_Ah"    - name: Entladung Tag      state_topic: "service/bluebattery/AA:BB:CC:DD:EE:FF/live/battery_comp_2/total_discharge_day_Ah"      unit_of_measurement: "Ah"      unique_id: "total_discharge_day_Ah"

Ihr müsst in Euerer Datei “AA:BB:CC:DD:EE:FF” gegen die MAC-Adresse Eueres Bluebattery ersetzen. Nach einem Neustart von Homeassistant müssten nun neue Entitäten mit den Werten aus Euerem Bluebattery erscheinen. Ihr könnt das prüfen, indem Ihr in HA unter Einstellungen -> Geräte&Dienste -> Reiter „Entitäten -> Unter Entitäten suchen „mqtt“ eingebt. Dann müssten alle MQTT Entitäten sichtbar sein.

MQTT-Entitäten sind erstellt
Entitäten des Bluebattery in Homeassistant

Übersicht über die Stromflüsse im smarten Wohnmobil

Ab jetzt haben wir die Stromflüsse, die Füllstände der Batterien und die Stromproduktion in unserem smarten Wohnmobil überall zugängig auf unserem Smartphone oder Tablet.

Wie immer freue ich mich auf Kommentare, wenn es geklappt hat. Aber auch über Probleme, die Ihr mit der Anleitung gehabt habt. Dann kann ich sie noch besser und verständlicher machen.

Hannes Schleeh

Hannes Schleeh

Gastautor bei Womo.blog
www.schleeh.de

Share:

Facebook
Twitter
Pinterest
LinkedIn

2 Antworten

  1. Mit etwas ganz ähnlichem habe ich mich in den letzten 2 Monaten auch beschäftigt.

    Nachdem ich meinen BlueBattery problemlos von meinem (Linux-)Laptop aus auslesen konnte, erwuchs der Wunsch, dass dieser dazu nicht immer laufen muss. Ich wollte vor allen Dingen auch Langzeit-Aufzeichnungen machen können, auch zur späteren Auswertung.

    Also habe ich mir – besonders wegen des geringen Strombedarfs – einen Raspberry Zero 2 W besorgt.

    Allerdings waren mir die ganzen Home-Assistent-Sachen zu komplex.

    Es gibt ein schönes Python-Script namens mqtt2sql.py, was einfach die per MQTT angelieferten Daten quasi 1:1 in eine Datenbank schreibt. MySQL/MariaDB und SQLite werden von dem Script unterstützt, ich habe mich der Einfachheit halber für SQLite entschieden.

    Die Visualisierung mache ich dann einfach mit gnuplot und einem kleinen selbstgeschriebenen Script, was die Parameter-Eingabe handhabt (einfache GUI per zenity), die Datenbank-Abfragen mit dem sqlite3-Command-Line-Utility macht und die Daten für gnuplot aufbereitet. Absolut flexibel und funktioniert ohne größere Komplexitäten.

Schreibe einen Kommentar

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

LogoWomo-rund-MITTE300
29918
Abonnenten

Immer informiert sein!

Jetzt Womo.blog abonnieren:

Dabei sein: