Tag Archives: Solarstrom

Wechselrichter und Stromzähler mit FRITZ!Box verbinden

Es wäre interessant, die Daten der Photovoltaik zur Steuerung von Steckdosen zu nehmen, um Geräte nur bei Überschuss anzuschalten. Und zwar ohne teure extra Hardware oder einen Smartmeter der alle Haushaltsdaten nach aussen funkt (als Einladung in ein gerade leerstehendes Haus).

Das geht einfacher als gedacht. Der Fronius Wechselrichter ist im Heimnetz unter http://192.168.187.x/solar_api/v1/GetPowerFlowRealtimeData.fcgi zu erreichen. Die aktuelle Wattzahl  kommt im json Format.

Die FRITZ!Box kann das zwar im Augenblick nicht verarbeiten (AVM hat es aber als Produktvorschlag akzeptiert) kann aber eine Steckdose schalten.

Also brauchen wir doch einen zweiten Rechner. Ich nehme dafür einen Raspberry Pi Zero (der Pi Zero 2 ist vergriffen aber auch nicht notwendig)  am besten in der Ausführung WH mit Pinleiste.  Stromversorgung kommt von einem Netzteil in Nähe des Sicherungskasten/Stromzählers, zum Test über 3 Tage reicht aber auch eine übliche  Powerbank.

Zunächst wird das OS auf eine alte micro SD Karte installiert und die Karte in den Pi Zero gesteckt. Sobald der Pi Zero im WLAN erscheint, kann man headless d.h, ohne Peripheriegeräte via SSH weiter konfigurieren etwa mit Apache/PHP.  Dazu brauchen wir noch einen USB IR Lesekopf, der am Stromzähler das Blinken der Diode ausliest. Mit einem cronjob werden im Minutenabstand die Daten abgeholt. Abfrage des Logarex Wechselstromzählers

stty -F /dev/ttyUSB0 300 -parodd cs7 -cstopb parenb -ixoff -crtscts -hupcl -ixon -opost -onlcr -isig -icanon -iexten -echo -echoe -echoctl -echok
echo -n -e '\x2F\x3F\x21\x0D\x0A' >> /dev/ttyUSB0
timeout 10s cat /dev/ttyUSB0

Ab einer bestimmten Leistung der PV kann dann die Steckdose eingeschaltet werden, im Prinzip mit

watt=$(curl http://x.x.x.x/solar_api/v1/GetPowerFlowRealtimeData.fcgi | jq '.Body.Data.Inverters[1].P')
if [[ $watt -gt 200 ]]
then
http://fritz.box/webservices/homeautoswitch.lua?switchcmd=setsimpleonoff&ain=13077%200012360-1&onoff=1

Die Hardware passt in ein kleines FLIRC Gehäuse, die Kosten liegen unter 50€, dazu kommt noch die schaltbare Steckdose.

 

Update 26.1.22

Der Abfragecode ist nun in ein PHP Skript verpackt und gibt die Daten in einer hübschen d3.js Grafik aus.

Im Augenblick läuft nun die Datensammlung inklusive stündlicher openweathermap Abfrage um später mal noch ein R-CNN zur Vorhersage zu programmieren.

 

Update 23.2.22

Der Lesekopf funktioniert einwandfrei mit dem Drehstromzähler Logarex LK13BDxxxx obwohl die Shell Kommandos nur sehr primitiv in ein PHP Skript eingebaut waren. Mit dem Einbau eines bidirektionalen Smartmeters SGM-C4-xxxxxx funktioniert das  leider nicht mehr und zwar nicht etwa weil die Kommunikation nun mit 9600/8/N/1 läuft sondern weil die binäre SML Zeichen, die nun jede Sekunde kommen, nicht richtig interpretiert werden können.

stty -F /dev/ttyUSB0 9600 cs8 -cstopb -parenb
timeout 2s cat /dev/ttyUSB0 | od -tx1

Ein Python2 Downgrade für den php_loader machte für mich keinen großen Sinn, node liess sich bei mir nicht auf dem Pi Zero installieren und smeterd brach leider mit einer Fehlermeldung ab. Einzig libsml hatte Erfolg

apt-get install uuid-dev uuid-runtime
git clone https://github.com/volkszaehler/libsml
cd libsml
make
examples/sml_server -s /dev/ttyUSB0

Die -s Option ist undokumentiert, ist aber wichtig denn nur sie findet genau einen Datensatz. Aus dem Datensatz lassen sich die Zeilen 1.8.0 und 2.8.0 über regex Ausdruck als Zählerstand auslesen.

 

Update 2.3.22

Auf Anfrage kann ich das komplette Messgerät verleihen, falls jemand denselben Zähler testweise auslesen oder das Gerät klonen möchte.  Wenn sich der Pi Zero nicht das eigenes WLAN findet, startet er einen eigenen Hotspot, ist damit also autonom überall verwendbar.