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

rucksman007
Beiträge: 138
Registriert: 04.11.2018, 13:17
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

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

Beitrag von rucksman007 » 03.03.2020, 17:41

Harpau hat geschrieben:
03.03.2020, 12:47
Ja, der Flow ist für den Home Manager 2, da ich nur diesen besitze. Für Deine Kombination muss der Flow mit Sicherheit angepasst werden.
Danke für die schnelle Antwort. Angepasst muss vermutlich nur der function node in den Zeilen 9 und 10_

Code: Alles auswählen

Netzbezug = Math.round(msg.payload.readUInt32BE(32)/10);
Netzeinspeisung = Math.round(msg.payload.readUInt32BE(52)/10);
Um genau zu sein, der Offset. Leider hat ja SMA das Protokoll vom Energy Meter zum Home Manager verändert. Oder muss ich noch auf etwas anderes aufpassen?

Harpau
Beiträge: 156
Registriert: 08.01.2019, 13:17
Hat sich bedankt: 5 Mal

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

Beitrag von Harpau » 03.03.2020, 17:56

Das kann ich leider nicht genau sagen.
Ich würde das Auslesen des Energy Meters einfach einmal ausprobieren, da kannst Du nichts falsch machen, außer dass die Werte nicht stimmen.
Hier findest Du eine gute Doku, an der ich mich auch orientiert habe und die Dir vielleicht weiterhilft: http://www.eb-systeme.de/?page_id=1240

sw1002
Beiträge: 33
Registriert: 02.11.2014, 22:19

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

Beitrag von sw1002 » 14.05.2020, 23:04

Hallo, versuche das angepasste Skript von Martin mit dem Sunny Home Manager 2 zu nutzen. Vergeblich. Alle Werte 0, auch wenn ich sleep auf 2 setze

Der Portscan ergab bei mir zwei offene Ports 80 und 4712

Der Suny Home Manager wird aber von der OpenWB Wallbox ausgelesen daher wird hier nichts weggefiltert.

Ich habe eine CCU2

Kann mir jemand helfen?

PeterAC
Beiträge: 69
Registriert: 19.12.2014, 14:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

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

Beitrag von PeterAC » 04.07.2020, 17:06

Bei mir klappts auch nicht mit der CCU2. Portscan sagt, dass Port 9522 nicht offen ist. Ich vermute, dass es daran liegt.

Leider gibt die WebUI keine Möglichkeit, um Ports zu öffnen. Kann man evtl. die "firewall.conf" anpassen?

VG,
Peter

PS: "socat" scheint es auf der CCU2 auch nicht zu geben, die Sache ist damit wohl ziemlich aussichtslos.

PeterAC
Beiträge: 69
Registriert: 19.12.2014, 14:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

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

Beitrag von PeterAC » 04.07.2020, 21:08

Mache Fortschritte: Es gibt ein "socat" das mit CuXD kommt. Das liefert ein Ergebnis in einer Shell auf der CCU2. Zunächst kommen anscheinend sinnvolle Daten, dann irgengwelcher Müll und schließlich geht es von vorne wieder los. Nun sollte man meinen, dass alle empfangenen Daten in lGetErr als String zu finden sind, allerdings sagt WriteLine(lGetErr.Length()) --> 24 und WriteLine(lGetErr) fängt meist mit SMA an.

Code: Alles auswählen

# /usr/local/addons/cuxd/extra/socat -x -u -T 2 -t 2 UDP4-RECV:9522,ip-add-membership=239.12.255.254:0.0.0.0 STDOUT & pid=$! ; slee
p 2 && kill $pid
> 2020/07/04 20:45:55.944516  length=600 from=0 to=599
 53 4d 41 00 00 04 02 a0 00 00 00 01 02 44 00 10 60 69 01 0e 71 42 c3 9c d0 34 1b 76 00 01 04 00 00 00 1b d7 00 01 08 00 00 00 00 05 
 d4 00 23 a8 00 02 04 00 00 00 00 00 00 02 08 00 00 00 00 06 dc 05 01 f8 00 03 04 00 00 00 00 00 00 03 08 00 00 00 00 00 bd 54 67 e0 
 00 04 04 00 00 00 08 c1 00 04 08 00 00 00 00 03 72 18 cf c0 00 09 04 00 00 00 1d 2f 00 09 08 00 00 00 00 06 c2 e2 0e a0 00 0a 04 00 
 00 00 00 00 00 0a 08 00 00 00 00 07 26 92 73 90 00 0d 04 00 00 00 03 ba 00 15 04 00 00 00 0b 2e 00 15 08 00 00 00 00 01 3e a3 0a b8 
 00 16 04 00 00 00 00 00 00 16 08 00 00 00 00 09 57 4f 9c 68 00 17 04 00 00 00 00 00 00 17 08 00 00 00 00 01 05 5b 4f 40 00 18 04 00 
 00 00 01 9f 00 18 08 00 00 00 00 00 9d 52 68 20 00 1d 04 00 00 00 0b 4c 00 1d 08 00 00 00 00 01 62 64 b6 90 00 1e 04 00 00 00 00 00 
 00 1e 08 00 00 00 00 09 78 4b db 48 00 1f 04 00 00 00 05 e2 00 20 04 00 00 03 77 b6 00 21 04 00 00 00 03 de 00 29 04 00 00 00 06 ea 
 00 29 08 00 00 00 00 04 2f 2f c8 20 00 2a 04 00 00 00 00 00 00 2a 08 00 00 00 00 00 00 00 00 00 00 2b 04 00 00 00 00 00 00 2b 08 00 
 00 00 00 00 01 ff be 40 00 2c 04 00 00 00 02 6a 00 2c 08 00 00 00 00 01 05 40 1a 18 00 31 04 00 00 00 07 53 00 31 08 00 00 00 00 04 
 77 a6 f3 08 00 32 04 00 00 00 00 00 00 32 08 00 00 00 00 00 00 00 00 00 00 33 04 00 00 00 03 90 00 34 04 00 00 03 80 94 00 35 04 00 
 00 00 03 b0 00 3d 04 00 00 00 09 bf 00 3d 08 00 00 00 00 02 e1 77 e9 d8 00 3e 04 00 00 00 00 00 00 3e 08 00 00 00 00 00 00 00 00 00 
 00 3f 04 00 00 00 00 00 00 3f 08 00 00 00 00 00 0b 6c f0 88 00 40 04 00 00 00 04 b8 00 40 08 00 00 00 00 02 24 f9 e2 48 00 45 04 00 
 00 00 0a d4 00 45 08 00 00 00 00 03 cd cc ae e0 00 46 04 00 00 00 00 00 00 46 08 00 00 00 00 00 00 00 00 00 00 47 04 00 00 00 05 18 
 00 48 04 00 00 03 80 b8 00 49 04 00 00 00 03 84 90 00 00 00 01 02 04 52 00 00 00 00
SMA▒D`iqBÜ▒▒#▒▒Tgr▒▒    /      ▒▒▒
                                                                                                                                  &▒s▒
 >▒
▒       WO▒[O@▒Rh
                  bd▒▒  xK▒H▒ w▒!▒)▒//▒ *+▒▒@,j@1Sw▒23▒4▒▒5▒=   ▒▒w▒▒>??
                                                                       l▒@▒$▒▒HE
▒▒̮▒FGH▒▒I▒▒RPuTTYPuTTYPuTTYPuTTYPuTTYPuTTY> 2020/07/04 20:45:56.943663  length=600 from=600 to=1199
 53 4d 41 00 00 04 02 a0 00 00 00 01 02 44 00 10 60 69 01 0e 71 42 c3 9c d0 34 1f 5d 00 01 04 00 00 00 1c

PeterAC
Beiträge: 69
Registriert: 19.12.2014, 14:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

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

Beitrag von PeterAC » 04.07.2020, 23:16

Nun läuft es auf der CCU2 (meistens). Gelegentlich kommen keine Daten an, was aber dann von der if-Abfrage übesprungen wird. Woher der Datenmüll gekommen ist, weiß ich zwar nicht, aber die Änderungen bei stdout und stderr haben bewirkt, dass dieser nicht mehr im Ergebnis (nun lGetOut) auftaucht.

Die entscheidenden Änderungen sind das direkte Ausführen von "socat" aus dem Verzeichnis von CUxD, das Verwerfen der Standardausgabe nach "/dev/null" und die Umleitung der Fehlerausgabe in die Standardausgabe (2>1&).

Code: Alles auswählen

system.Exec("/usr/local/addons/cuxd/extra/socat -x -u -T 2 -t 2 UDP4-RECV:9522,ip-add-membership=239.12.255.254:0.0.0.0 /dev/null 2>&1 & pid=$! ; sleep 1 && kill -9 $pid",&lGetOut,&lGetErr);
Entsprechend sind bei der Extraktion der HEX-Strings die Vorkommen von lGetErr durch lGetOut ersetzt worden. Hier nun das ganze Skript:

Code: Alles auswählen

string lGetOut = "";
string lGetErr = "";
system.Exec("/usr/local/addons/cuxd/extra/socat -x -u -T 2 -t 2 UDP4-RECV:9522,ip-add-membership=239.12.255.254:0.0.0.0 /dev/null 2>&1 & pid=$! ; sleep 1 && kill -9 $pid",&lGetOut,&lGetErr);
string serial = lGetOut.StrValueByIndex(" ", 7+20) # lGetOut.StrValueByIndex(" ", 7+21) # lGetOut.StrValueByIndex(" ", 7+22) # lGetOut.StrValueByIndex(" ", 7+23);
system.Exec("printf '%d' 0x" # serial, &serial, &lGetErr);
string netzbezug = lGetOut.StrValueByIndex(" ", 39) # lGetOut.StrValueByIndex(" ", 40) # lGetOut.StrValueByIndex(" ", 41) # lGetOut.StrValueByIndex(" ", 42);
system.Exec("printf '%d' 0x" # netzbezug, &netzbezug, &lGetErr);
netzbezug = netzbezug.ToInteger() / 10;
string netzeinspeisung = lGetOut.StrValueByIndex(" ", 59) # lGetOut.StrValueByIndex(" ", 60) # lGetOut.StrValueByIndex(" ", 61) # lGetOut.StrValueByIndex(" ", 62);
system.Exec("printf '%d' 0x" # netzeinspeisung, &netzeinspeisung, &lGetErr);
netzeinspeisung = netzeinspeisung.ToInteger() / 10;
WriteLine(serial);
WriteLine(netzbezug);
WriteLine(netzeinspeisung);
if ( ( netzbezug + netzeinspeisung ) > 0 ) {
dom.GetObject("EM Netzbezug").State(netzbezug);
dom.GetObject("EM Netzeinspeisung").State(netzeinspeisung);
dom.GetObject("EM Zeitstempel").State(system.Date("%H:%M:%S"));
}
WriteLine("Hello world!");       
Übrigens ein "Danke" noch an Black für den SDV, was die Entwicklung dieser Lösung sehr beschleunigt hat.

VG,
Peter

PeterAC
Beiträge: 69
Registriert: 19.12.2014, 14:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

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

Beitrag von PeterAC » 06.07.2020, 20:02

So hier mal ein Ergebnis eines erweiterten Skriptes mit Fehlererkennung und Auswertung der Zähler.

Dabei wird der Augenblickswert der Leistungsmessung geloggt und aus der Zähleränderung der Durchschnitt seit der letzten Abfrage bestimmt und auch geloggt. Damit kann man mit der Abfragehäufigkeit die Mittelung automatisch anpassen.
chart.png
Die Systemvariablen in der WebUI:
Screenshot_2020-07-06 HomeMatic WebUI.png
Wenn es ein paar Tage stabil gelaufen ist, poste ich es hier.

VG,

fwiehl
Beiträge: 113
Registriert: 20.01.2020, 11:06
System: CCU
Hat sich bedankt: 8 Mal
Danksagung erhalten: 4 Mal

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

Beitrag von fwiehl » 14.07.2020, 21:07

mschneider hat geschrieben:
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

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
Das hier beschrieben Skript funktioniert unter meiner CCU3 mit dem Button "Skript testen" tadellos. Die Werte werden aus meinem Sunny Home Manager 2.0 einwandfrei ausgegeben. Sobald ich damit aber ein neues Programm machen will, kommt lediglich beim Testen des Skriptes "Hello World". Gibt es eine Beschreibung, wo man dies mit einem CCU3 Zentralen-Programm verbindet (ohne Zusatzsoftware wie CUxD), oder sonst irgendwie für seine Hausautomation einsetzen kann?
CCU3 mit ca. 140 HmIP und 10 HM Geräten im Mischbetrieb. 2 HmIP-HAP
HmIPW wired Rollladensteuerung mit Rollladenaktoren 5 x HmIPW-DRBL4 für 18 Rollläden
Rollladenbeschattung über 2 HmIP-SLO Lichtsensoren
ModBus Ansteuerung PV-Anlage SMA Solar, Modbus Ansteuerung Netatmo Wetterstation
Integration von Apple HomeKit über HAP-HomeMatic Plugin der CCU3
zusätzlich 3 Raspberry pi mit HOOBS 4 Apple HomeKit Bridge, Plug-in für iRobot Roomba Saugroboter, Yamaha MusicCast, Camera FFmpeg, Nest Protect, Husqvarna Automower

PeterAC
Beiträge: 69
Registriert: 19.12.2014, 14:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

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

Beitrag von PeterAC » 23.07.2020, 19:16

Die Frage ist leider nicht verständlich. Kannst du den Unterschied zwischen dem ersten Satz
fwiehl hat geschrieben:
14.07.2020, 21:07
... funktioniert unter meiner CCU3 mit dem Button "Skript testen" tadellos
und dem zweiten
fwiehl hat geschrieben:
14.07.2020, 21:07
Sobald ich damit aber ein neues Programm machen will, kommt lediglich beim Testen des Skriptes "Hello World".
näher erläutern,evtl. einen Screenshot vom angelegten Programm einstellen?

PS: Jetzt hab ich glatt vergessen, dass Fragen ja woanders beantwortet werden sollten :?

Svlurtz
Beiträge: 1
Registriert: 24.11.2020, 22:41
System: CCU

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

Beitrag von Svlurtz » 24.11.2020, 22:46

"Zuvor musst Du über "Palette verwalten" jedoch noch folgende "Nodes" installieren: "node-red-contrib-modbustcp" und "node-red-contrib-calculate". Außerdem musst Du in der HomeMatic noch diese Systemvariablen anlegen, in welche die ausgelesenen Werte dann gespeichert werden: "SMA PV-Erzeugung", "SMA Netzbezug", "SMA Netzeinspeisung" und "SMA Gesamtverbrauch"."

Ich bekomme die Redmatic einfach nicht zum laufen (bin dort komett neu) habe alles so gemacht wie hier stand.
Leider steht dort immer disconnect

Antworten

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