Auslesen BlueBattery Smart-Shunt in HomeAssistant mit Raspberry Zero und bluebattery.py Teil 2 die große Lösung
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.

Voraussetzungen
Zur Umsetzung dieser Lösung brauchen wir:
- Internetrouter im Wohnmobil
- Raspberry Pi mit Homeassistant
- Bluebattery Smartshunt oder Batteriecomputer von Kai Scheffer
- Raspberry Pi Zero WH*
- SD-Karte für den Pi Zero*
- GeeekPi Gehäuse mit Kühlkörper*
- Kostenlose Software MQTT-Explorer
- Kostenlose Software Visual Studio Code
- Kostenlose App Raspberry Pi Imager
- Mitlesen auf dem WomoLIN-Telegram-Kanal
- Interesse, Zeit und Geduld
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.
- Extrem kompaktes Raspberry Mainboard mit ARM11 Broadcom BCM2835 Single Core 1 GHz RAM 51.
- Kompatibel mit Raspberry Pi Zero/Zero 2 und Raspberry Pi Zero W/Zero W 2 (Raspberry Pi Zero Board ist nicht im Lieferumfang enthalten)
- Der Kühlkörper ist für eine bessere Wärmeableitung und der GPIO-Header macht es einfach, die GPIO-Ports zu verbinden.
- Acrylgehäuse mit 2 Abdeckungen und Schrauben zu installieren.
- Zugang zu allen Anschlüssen des Raspberry Pi Zero Board.
- Das Paket enthält eine Hülle, Kühlkörper, Switch-Kabel, OTG-Kabel, HDMI-Adapter, GPIO-Header, und einen Schraubendreher.
- 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.

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:
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:

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

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:

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:
Alternativ kann man das auch mit einem FTP-Programm erledigen.
Nun brauchen wir noch drei Befehle um das Ganze einzurichten:
sudo systemctl daemon-reload
sudo systemctl enable bb.service
sudo 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.

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.

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.


Ü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.
Hallo Hannes, erst mal lieben Dank für deine Umsetzung dieses tollen Projektes. Nach anfänglichen Schwierigkeiten aber mit deiner Hilfe konnte ich es dann doch noch umsetzen.
Als Zusatz würde ich noch was hinzufügen damit das „nach machen „ dieses Projektes etwas flüssiger macht .
1. nach dem installieren des Pi Lite OS und das erste mal starten des Pi empfehle ich ein Update zu machen . Mit den Befehlen : sudo apt-get update und danach : sudo apt-get upgrade.
Dann erst den Rest .
2 . Anstatt die Geänderte bb.service Datei nach /etc/systemd/system/ zu kopieren. Geht auch der Befehl: sudo nano /lib/systemd/system/bb.service
man kann dann die geänderte Datei kopieren und einfügen und dann Speichern .
Aber sonst ist das total genial 😎 und eigentlich einfach umzusetzen. Der Stromverbrauch ist auch minimal.
und der Yaml Code ist mit damit dabei.
Also eine top Lösung und klasse Arbeit von dir ! Herzlichen Dank dafür.
Es grüßt dich Michael aus Münster
Hallo Michael,
vielen Dank für das wertvolle Feedback. Ich habe das ja auch nur mit Hilfe der Telegram Gruppe hin bekommen. Bei unserem Austausch auf Telegram haben wir auch noch gemerkt, das man die Bluebattery App am Smartphone noch schließen muss, damit der raspberry Pi Zero auch mit dem Bluebattery verbunden wird und Daten empfängt.
Gruß Hannes
Ergänzung zu o.g. Anleitung:
Der Ordner ect/systemd/systems muss erst beschreibbar gemacht werden (chmod 777)
Außerdem funktioniert ab V418 die original Bluebattery.py nicht mehr (Frame-Fehler),
es muss die Version von “Kscheff” genommen werden:
pip3 install https://github.com/kscheff/bluebattery.py/archive/fix/large_solar_current.zip -I
vgl auch:
https://www.blue-battery.com/forum/bluebattery/bluebattery-py-bekommt-keine-daten-mehr-seit-v418
Viel Erfolg !!!
Hallo Andreas,
vielen Dank für den nützlichen Hinweis. Das wird anderen Nutzern sehr helfen.
Gruß Hannes
Tolle Lösung und danke für deine Mühe. Ich habe jetzt einen Bluebattery und einen PI3 mit Home Assistent im Fahrzeug verbaut. Jedoch würde ich gerne kein seperates Gerät zusätzlich einbauen um den Bluebattery auszulesen. Schade das es keine Integration für HA gibt um unkompliziert über Bluetooth des Bluebattery auszulesen.
Ich habe jetzt seperat ein Tablet am laufen das mir die Daten überträgt. Besser wäre natürlich wenn das direkt über HA laufen würde.
Hallo Andreas,
Danke für das Lob! Da sind wir uns einig, aber leider gibt es nur die beiden Möglichkeiten, den BlueBattery in Homeassistant zu integrieren, die ich ja beide im Blog beschrieben habe. Für eine Homeassistant Integration müsste sich halt ein pfiffiger Programmierer finden, der das macht. Ich kann es leider nicht!
Gruß Hannes
Die aktuelle Yaml Config funktioniert nicht mehr richtig.
Man muss bei den Werten “service/bluebattery/AA:BB:CC:DD:EE:FF/live/solar_charger/solar_energy_day_Wh” es ändern in “service/bluebattery/AA:BB:CC:DD:EE:FF/live/solar_charger_ext/solar_energy_day_Wh”.
Dann bekommt man wieder die Werte in HA.
Desweiteren kann man die hohen Kommastellen vermeiden indem man “value_template: “{{ value|float(0)|round(2) }}” einfügt in der Yaml.
Beispiel:
– name: BB aktuelle Entladung
state_topic: “service/bluebattery/B8:80:4F:3E:55:E6/live/measurement_ext/battery_current_A”
unit_of_measurement: “A”
value_template: “{{ value|float(0)|round(2) }}”
unique_id: “sensor.battery_current_A”
Ich habe auch ein “BB” bei den Namen hinzugefügt um in HA die Werte schneller zu finden.
Wie zuvor beschrieben muss die aktuelle Version von https://www.blue-battery.com/forum/bluebattery/bluebattery-py-bekommt-keine-daten-mehr-seit-v418 genommen werden sonst funktioniert es nicht.
Hoffe es hilft jemanden 😉
Hallo Andreas,
Danke für den Hinweis. Das hilft sicher einigen hier weiter!
Gruß Hannes
Hallo Hannes.
Ein toller Bericht zu der Integration des Batterie Computers.
Wie immer sehr informativ und ausführlich beschriebene Schritte für die Installation.
Ich bin gerade dabei meine zwei Supervolt Batterien in mein Wohnmobil Home Assistant zu integrieren.
Es können alle Daten aus den Batterien auslesen.
Ich habe aber ein paar Problem mit dem aktuellen Strom aus den Batterien.
Wenn der Strom bei einer Batterie unter 300 mA geht, dann gibt das BMS 0 mA aus.
Andere BMS sollen das schon bei 2A machen.
In diesem Zustand wird der aktuelle Ladezustand nicht mehr richtig berechnet. Nach einigen Tagen glaubt das BMS, daß die Batterie immer noch 99% hat obwohl es nur noch ca. 70 % sind.
Wie weit geht dein Batteriecomputer bei kleinen Stromentnahmen runter?
Gibt es auch so eine 0 mA Ausgabe obwohl Strom entnommen wird?
Der vom BMS gemessene Strom ist im unteren Bereich auch sehr ungenau.
Die Supervolt Batterie kann kurzzeitig 320A liefern. Bei einem Strom von 300 mA sind Messfehler von +- 100 bis 200 mA kein schlechter Wert.
Hast du die Werte aus dem Bluebattery Computer schon mal mit einem Zangenamperemeter überprüft?
Dein Grundrissplan vom Wohnmobil ist aber inzwischen mit sehr vielen Daten gefüllt.
Ich verteile die Daten inzwischen themenbezogen auf mehrere Bilder. Ein Bild fürs Licht und ein Bild für die Energie.
Home Assistant bietet so viele Vorteile.
Nur eine APP für alle smarten Sensoren. Alle Messwerte können bei mir mit ihre Daten der letzten 10 Tage in einer Kurve angezeigt werden.
Meldungen aus dem System werden mit Notificationen über das Internet auf unsere Handys geschickt.
Die APPs der Hersteller der Geräte können das oft nicht.
Ich kann über das Home Assistant bei eine fast leeren Gasflasche die Heizung runterfahren oder ausschalten um den Kühlschrank länger weiter arbeiten zu lassen.
Zusätzlich bekomme ich ab 1kg Gas alle 100 Gramm eine Benachrichtigung.
Die Bluetti AC200Max für der 230V Versorgung ist auch im Home Assistant integriert.
Die kann auch 12V mit bis zu 30A ausgeben.
Hast du Interesse an meinen Übersichten? Wie kann ich dir Bilder von meinem Übersichten zukommen lassen?
LG
Andreas
Hallo Andreas,
der BlueBattery kann auch niedrige Ströme messen. Was der im Detail genau misst, kann Dir der Hersteller Kai Scheffer sagen. Er hat zu seinen Produkten ein Forum unter: https://www.blue-battery.com/forum/
Ich selbst habe mit OpenHab und der Heizungssteuerung per Relais und Widerstand angefangen. Inzwischen habe ich fast alles im Wohnmobil smart gemacht.
Gestern habe ich ein 10 Zoll Tablet für die Steuerung im Camper eingebaut.
An Lösungen anderer Homeassistant User bin ich immer interessiert. Du kannst mir gerne Deine Übersichten zukommen lassen. Einfach per Mail an hannes@schleeh.de schicken. Aber Vorsicht, es könnte sein, dass ich dann wissen will wie es gemacht wird. 😉
Uwe, ein YouTuber hat auch seinen „Prinz“ smart gemacht mit einer tollen Übersicht.
Freue mich auf den Austausch mit Dir.
Gruß Hannes
Hallo Hannes
Ein dickes Dankeschön für die Anleitung.
Selbst ich habe es geschafft und kann jetzt die Daten in HA sehen.
Was ich bisher noch nicht geschafft habe ist das ich die Leistung von den Solarmodulen in Watt sehen kann.
Auch im MQTT Explorer taucht der Wert nicht auf.
Gruß Ulli
Hallo Ulli,
das ist eine zusätzliche Entität, die ich aus Ampere und Volt errechnen lasse. Der Eintrag in die confiuration.yaml lautet in meinem Fall:
template:
– sensor:
– name: Watt Solar
unit_of_measurement: ‘W’
unique_id: “WattSolar”
state: ‘{{ states(“sensor.spannung_aufbaubatterie”) | float * states(“sensor.aktueller_solarladestrom”) | float }}’
Danke für das Lob und viel Spaß beim Umsetzen.
Gruß Hannes