Mit CCU3 Homematic Skript SMA Energy Meter oder Sunny Home Manager 2 auslesen
Verfasst: 12.01.2019, 15:57
Ich habe eine Photovoltaik Anlage (PV) und auch einen SMA Home Manager 2 (SHM2) installiert. Nun würde ich gerne in meiner CCU3 Verbraucher abhängig vom Netzbezug oder der Netzeinspeisung steuern. Bisher habe ich noch keine zufriedenstellende Lösung gefunden.
Das SMA Energy Meter als auch der SHM2 senden jede Sekunde eine UDP Broadcast Telegramm in das Netzwerk. Hier nun ein Skript das einige Werte (Seriennummer, gesamte Einspeisung und gesamten Netzbezug aller 3 Phasen) liest und in Variablen der CCU schreibt. (Man kann noch viel mehr Daten lesen wenn man möchte).
Voraussetzung:
1) CCU3 und SHM2 oder Energy Meter im Netzwerk mit Switch verbunden. (Nicht über Router/Fritzbox da diese(r) Broadcast Telegramme wegfiltern). Der Switch kann natürlich mit einem Router verbunden werden.
2) Damit die CCU3 die Broadcast Telegramme auch empfangen kann, muss in der CCU folgendes eingestellt werden: Settings->Control Panel->Configure Firewall: Firewall Policy: Ports open.
3) Diese variablen in der CCU3 anlegen:
"EM Netzbezug", Zahl, 0..65000, Watt
"EM Netzeinspeisung", Zahl, 0..65000, Watt
"EM Zeitstempel", Zeichenkette, Uhr
4) Das folgene Skript ausführen oder so einstellen das es z.B. jede Minute ausgeführt wird.
Im Skript ist die IP Adresse 239.12.255.254 die Broadcastadresse des SHM2. Dies ist nicht die IP Adresse des SHM2. Daher bitte nur ändern falls der SHM2 eine andere Broadcastadresse verwendet.
Im Skript ist der Wert 9522 der Port an den der SHM2 die Broadcast Telegramme schickt. Daher bitte nur ändern falls der SHM2 einen anderen Port verwendet.
Falls mehrere SHM2 oder Energy Meter im Netzwerk sind, dann könnte man versuchen jedem SHM2 oder Energy Meter einen eigenen Port zuzuweisen. Dann kann man mehrere SHM2 oder Energy Meter im Netzwerk abfragen.
Falls es nicht funktioniert:
1) Mit Wireshark und einem PC die Broadcast Telegramme überprüfen. (Werden die gesendet?)
2) Ports eingeschalten in der CCU3?
3) Der system.Exec Skript Befehl ist recht empfindlich. Programme so planen dass die Befehle nicht gleichzeitig ausgeführt werden.
4) Port ist bereits belegt. Vermutlich durch abgestürztes Skript und der Prozess läuft noch). --> CCU3 Neu starten oder mit shell den Prozess entfernen.
Gruss, Martin Schneider
Nachtrag vom 27.3.2021: Ich hatte heute Probleme mit dem Script: Lösung: In Zeile 3 OUTPUT ersetzen durch /dev/null. Zeile 3 sieht dann so aus:
system.Exec("socat -x -u -T 2 -t 2 UDP4-RECV:9522,ip-add-membership=239.12.255.254:0.0.0.0 /dev/null & pid=$! ; sleep 2 && kill pid", &lGetOut, &lGetErr);
P.S: Habe gerade die Posts weiter unten von PeterAC gelesen. Peter hatte genau das schon herrausgefunden. Vielen Dank an Peter für die hilfreichen Posts.
Das SMA Energy Meter als auch der SHM2 senden jede Sekunde eine UDP Broadcast Telegramm in das Netzwerk. Hier nun ein Skript das einige Werte (Seriennummer, gesamte Einspeisung und gesamten Netzbezug aller 3 Phasen) liest und in Variablen der CCU schreibt. (Man kann noch viel mehr Daten lesen wenn man möchte).
Voraussetzung:
1) CCU3 und SHM2 oder Energy Meter im Netzwerk mit Switch verbunden. (Nicht über Router/Fritzbox da diese(r) Broadcast Telegramme wegfiltern). Der Switch kann natürlich mit einem Router verbunden werden.
2) Damit die CCU3 die Broadcast Telegramme auch empfangen kann, muss in der CCU folgendes eingestellt werden: Settings->Control Panel->Configure Firewall: Firewall Policy: Ports open.
3) Diese variablen in der CCU3 anlegen:
"EM Netzbezug", Zahl, 0..65000, Watt
"EM Netzeinspeisung", Zahl, 0..65000, Watt
"EM Zeitstempel", Zeichenkette, Uhr
4) Das folgene Skript ausführen oder so einstellen das es z.B. jede Minute ausgeführt wird.
Im Skript ist die IP Adresse 239.12.255.254 die Broadcastadresse des SHM2. Dies ist nicht die IP Adresse des SHM2. Daher bitte nur ändern falls der SHM2 eine andere Broadcastadresse verwendet.
Im Skript ist der Wert 9522 der Port an den der SHM2 die Broadcast Telegramme schickt. Daher bitte nur ändern falls der SHM2 einen anderen Port verwendet.
Falls mehrere SHM2 oder Energy Meter im Netzwerk sind, dann könnte man versuchen jedem SHM2 oder Energy Meter einen eigenen Port zuzuweisen. Dann kann man mehrere SHM2 oder Energy Meter im Netzwerk abfragen.
Falls es nicht funktioniert:
1) Mit Wireshark und einem PC die Broadcast Telegramme überprüfen. (Werden die gesendet?)
2) Ports eingeschalten in der CCU3?
3) Der system.Exec Skript Befehl ist recht empfindlich. Programme so planen dass die Befehle nicht gleichzeitig ausgeführt werden.
4) Port ist bereits belegt. Vermutlich durch abgestürztes Skript und der Prozess läuft noch). --> CCU3 Neu starten oder mit shell den Prozess entfernen.
Gruss, Martin Schneider
Nachtrag vom 27.3.2021: Ich hatte heute Probleme mit dem Script: Lösung: In Zeile 3 OUTPUT ersetzen durch /dev/null. Zeile 3 sieht dann so aus:
system.Exec("socat -x -u -T 2 -t 2 UDP4-RECV:9522,ip-add-membership=239.12.255.254:0.0.0.0 /dev/null & pid=$! ; sleep 2 && kill pid", &lGetOut, &lGetErr);
P.S: Habe gerade die Posts weiter unten von PeterAC gelesen. Peter hatte genau das schon herrausgefunden. Vielen Dank an Peter für die hilfreichen Posts.