Beispiel Übertragung von PV-Daten zur Hausautomation und Verbraucher in HomeMatic schalten

Überwachung der Solaranlage per eMail oder Pushover und Steuerung von Geräten mit Smart Home Zentralen. PV-Überschuss Steuerung verbunden mit Geräten und Tasmota Firmware. Wallbox Steuerungen und API Schnittstelle, über die Daten in die Solaranzeigen Datenbanken geschrieben und gelesen werden können. Alles, was man für Steuerungsaufgaben benötigt.

Moderator: Ulrich

Antworten
gzi
Beiträge: 156
Registriert: Mo 16. Jan 2023, 20:43
Hat sich bedankt: 20 Mal
Danksagung erhalten: 30 Mal

Beispiel Übertragung von PV-Daten zur Hausautomation und Verbraucher in HomeMatic schalten

Beitrag von gzi »

Es hat Sinn bestimmte Geräte einzuschalten, wenn ein Überschuss an PV-Strom vorhanden ist. In einem früheren Posting habe ich beschrieben, wie ich die Daten von einem Stromzähler auslese und in der Solaranzeige zur Verfügung stelle.
Im gleichen Script user_device.php (das beim Posting angehängt ist) übertrage ich auch die Daten von der Solaranzeige zu meiner Hausautomation.

Ich schalte die Geräte nicht direkt in der Solaranzeige, sondern in der Hausautomation, weil dort die verschiedenen Nutzungsszenarien (anwesend/abwesend etc.) bekannt sind. Die Geräte schalte ich von dort anhand dieser Daten:

Netz_Leistung_W
Leistung in Watt, die momentan vom öffentlichen Netz bezogen wird (positive Werte) oder PV-Überschuss, der momentan ins öffentliche Netz eingespeist wird (negative Werte)

AC_Leistung
Leistung in Watt, die mein Einspeise-Wechselrichter im Mittel der letzten 7 Minuten produziert hat.

Drossel
Leistungslimitierungsfaktor in Prozent, der momentan beim Wechselrichter eingestellt ist.

SOC
State of Charge, Ladezustand der Batterie meiner PV-Inselanlage in Prozent

Der Server der Hausautomation (bei mir eine HomeMatic CCU) ist bei mir aus Sicherheitsgründen nicht direkt von der Solaranzeige erreichbar und liegt hinter einer Firewall, die ich SCS genannt habe. Ich rufe von der Solaranzeige ein PHP-Script send_solar-data.php auf, das am SCS läuft und die Daten seinerseits an die Hausautomation weitersendet. Dieses PHP-Script ist im Abschnitt 5 der Datei user_device.php dokumentiert.

In Abschnitt 1.5 der Datei user_device.php werden Parameter für Abschnitt 5 initialisiert. Damit können auch andere Server-Namen, andere API oder andere Namen für http-GET Parameter verwendet werden.

Code: Alles auswählen

$SCS_URL = <SCS-Url>; // URL HTTP Get-Interface zur Übertragung von Daten an Haus-Automation
$SCS_shell_cmd = "curl --cacert /var/www/html/SCS_CA-rootCA.pem   '".$SCS_URL."/send_solar_data.php?"; // Aufruf HTTP-GET Interface
SCS_URL gibt an wo das Skript send_solar_data.php aufgerufen werden kann. In der Form http://<server>/<verzeichnis> .

SCS_shell_cmd beschreibt das Kommando mit dem das Interface aufgerufen wird.

Danach werden die Namen der http GET Parameter des Interface zur Hausautomation angegeben, die zur Übertragung der Werte verwendet werden:

Code: Alles auswählen

$SCS_Netz_Leistung_W ="Netz_Leistung_W"; 	// mittleren Netzbezugs
$SCS_AC_Leistung = "AC_Leistung"; 			// mittleren PV Leistung
$SCS_SOC = "PV_Batterie_SOC"; 				// aktuellen Ladezustands
$SCS_Drossel = "PV_Drossel";				// Wechselrichter-Drosselung

$SCS_URL = "https://office11.my-router.de:9081/unsecured"; // URL HTTP Get-Interface zur Übertragung von Daten an Haus-Automation
$SCS_shell_cmd = "curl --cacert /var/www/html/SCS_CA-rootCA.pem   '".$SCS_URL."/send_solar_data.php?"; // Aufruf HTTP-GET Interface
In Abschnitt 5 der user_device.php wird zuerst geprüft, ob die Werte für AC_Leistung und Netz_Leistung_W zuvor von der influx DB und vom Smart Meter gelesen werden konnten. Dann wird ein Shell-Kommando zusammengestellt. Dieses sendet mit dem Linux-Utility CURL einen HTTP-Request bzw. API-Aufruf.

Eine weitere Besonderheit meiner Implementierung ist, dass der SCS nur HTTPS Verbindungen zulässt und ein selbst signiertes Zertifikat verwendet. Damit das mit CURL funktioniert, muss mit dem Parameter –cacert die eigene Zertifizierungs“behörde“ (SCS_CA) bekannt gegeben werden, indem ein eigenes Zertifikat (SCS_CA-rootCA.pem) übergeben wird.

Das Kommando könnte etwa so aussehen:

Code: Alles auswählen

curl --cacert /var/www/html/SCS_CA-rootCA.pem   '.../send_solar_data.php?Netz_Leistung_W=109&AC_Leistung=150&PV_Drossel=100&PV_Batterie_SOC=87'
(109 Watt kommen vom Netz, die PV liefert 150 Watt, der Wechselrichter ist nicht gedrosselt und die Batterie der Inselanlage ist zu 87% voll.)

Dann wird das Kommando mit exec ausgeführt.

Das vom Kommando aufgerufene Script send_solar_data.php verwendet das HomeMatic Script API um Systemvariablen in der CCU zu setzen. Wenn man eine andere Hausautomation betreibt, müsste man send_solar_data.php also ändern. Für HomeMatic sehen die ersten Zeilen des Scripts so aus:

Code: Alles auswählen

$ccu='192.168.175.1';
$Netz_Leistung_W = round(0 + $_GET["Netz_Leistung_W"]);
$string = file_get_contents('http://'.$ccu.'/rega.exe?state=dom.GetObject(%27Netz_Leistung_W%27).State('.$Netz_Leistung_W.')');
$xml = simplexml_load_string($string);
if ($xml->state == 0) {
	// OK, Systemvariable Netz_Leistung_W wurde gesetzt.
	…
Ein Aufruf des HomeMatic Script API um die Systemvariable „Netz_Leistung_W“ auf 109 Watt zu setzen könnte so aussehen:

'http://<IP-Adresse-der CCU>/rega.exe?state=dom.GetObject(%27Netz_Leistung_W%27).State(109)'

In der HomeMatic CCU sieht das dann so aus:
sv.jpg

Ein Zentralen-Programm in der CCU sorgt dann dafür, dass eine Schaltsteckdose „PV_Ueberschuss“ eingeschaltet wird, wenn PV-Überschuss vorhanden ist:
ein.JPG

Hinweis, bevor ein Einschaltbefehl an die Schaltsteckdose geschickt wird, sollte wie im obigen Beispiel geprüft werden, ob sie nicht ohnehin eingeschaltet ist, um Funk-Traffic zu minimieren.
Ein zweites Programm schaltet die Steckdose wieder aus.
aus.jpg
Raspi 3B, Hybrid Must PV18-3024 VHM, Hoymiles HM-800 , Nachteinspeisung, Flex-BKW, AhoyDTU, Smart Meter DTSU666-H, DIY Akku 6,7 KWh, DalyBMS2MQTT, Victron2MQTT,Architektur, HomeMatic CCU. Autor: Solaranlage Do-It-Yourself

Antworten

Zurück zu „Überschuss Steuerung, Anlagenüberwachung, Anbindung an die Heizung, API Schnittstelle und vieles Andere mehr.“