Mit CCU3 Homematic Skript SMA Energy Meter oder Sunny Home Manager 2 auslesen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
mschneider
Beiträge: 7
Registriert: 07.01.2017, 18:57

Mit CCU3 Homematic Skript SMA Energy Meter oder Sunny Home Manager 2 auslesen

Beitrag von mschneider » 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.
SHM2 CCU3.txt
CCU3 Homematic Skript SMA Energy Meter / Home Manager 2 Verbrauchswerte lesen
(1.23 KiB) 14-mal heruntergeladen
Im Skript ist die IP Adresse 239.12.255.254 die Broadadresse des SHM2. Dies ist nicht die IP Adresse des SHM2. Daher bitte nur ändern falls der SHM2 eine andere Broadadresse 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
Zuletzt geändert von mschneider am 20.01.2019, 00:07, insgesamt 1-mal geändert.

Harpau
Beiträge: 4
Registriert: 08.01.2019, 13:17

Re: Mit CCU3 Homematic Skript SMA Energy Meter oder Sunny Home Manager 2 auslesen

Beitrag von Harpau » 16.01.2019, 00:25

Hallo Martin,

vielen Dank für die super Arbeit!
Zwei Anmerkungen aus meinen Experimenten:

Auch Powerline-Adapter filtern leider Multicasts aus (siehe auch die Beschreibung zu der App "EMView" im Apple App Store. Diese verwendet das selbe Prinzip).

Manchmal kommen vom SHM2 keine Werte zurück. Ich habe deshalb nach dem Befehl zum Auslesen eine Abfrage (if (lGetErr <> "")) eingefügt, damit die "alten" Werte (inkl. Zeitstempel) erhalten bleiben.

Viele Grüße

Harald

Harpau
Beiträge: 4
Registriert: 08.01.2019, 13:17

Re: Mit CCU3 Homematic Skript SMA Energy Meter oder Sunny Home Manager 2 auslesen

Beitrag von Harpau » 16.01.2019, 17:17

Hallo Martin,

ich würde diese Skript gerne so umstellen, dass die Abfrage der Multicasts statt über System.Exec asynchron über CUxD erfolgt, da die 1 Sekunde Laufzeit schon recht lang ist. Das Problem dabei ist jedoch, dass man bei Verwendung von CUxD nicht an den Wert in lGetErr herankommt, sondern nur in lGetOut.

Bei mir sieht das jetzt so aus:

Im ersten Programm läuft zeitgesteuert dieses Script:

dom.GetObject ("CUxD.CUX2801001:12.CMD_SETS").State ("socat -x -u -T 2 -t 2 UDP4-RECV:9522,ip-add-membership=239.12.255.254:0.0.0.0 STDOUT & pid=$! ; sleep 1 && kill $pid");
dom.GetObject ("CUxD.CUX2801001:12.CMD_RUNS").State (1);

Das zweite Programm löst bei einer Aktualisierung von CUxD.CUX2801001:12.CMD_RETS ein Script aus, in welchem ich dann gerne die empfangenen Werte auslesen möchte. Allerdings bekomme ich hier wohl nur den Wert aus STDOUT.

Könnte man Deinen System.Exec Aufruf irgendwie so umschreiben, dass der Rückgabewert in lGetOut landet statt in lGetErr?

Sorry dass ich das nicht genauer beschreiben kann!

Vielen Dank und viele Grüße

Harald

mschneider
Beiträge: 7
Registriert: 07.01.2017, 18:57

Re: Mit CCU3 Homematic Skript SMA Energy Meter oder Sunny Home Manager 2 auslesen

Beitrag von mschneider » 20.01.2019, 00:03

Hallo Harald,

system.Exec("socat -x -u -T 2 -t 2 UDP4-RECV:9522,ip-add-membership=239.12.255.254:0.0.0.0 STDOUT 2>&1 & pid=$! ; sleep 1 && kill $pid ",&lGetOut,&lGetErr);

das sollte alles in IGetOut senden. (Eingefügt wurde: 2>&1 ).

Gruss,

Martin

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“