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

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 » 10.06.2022, 20:52

Hallo,
ich habe auch das Script seit über einem Jahr am Laufen - bisher ohne merkliche Probleme. Die Parameter werden alle ausgelesen und angezeigt. Allerdings habe ich in der CCU3 folgende Fehlermeldungen:

Code: Alles auswählen

Jun 10 18:42:00 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_links.tcl 192.168.10.132 30865 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Netzbezug Wechselrichter links"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_links.tcl 192.168.10.132 30867 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Netzeinspeisung Wechselrichter links"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_links.tcl 192.168.10.132 30773 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA DC Leistung Wechselrichter links"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_links.tcl 192.168.10.132 30775 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA AC
Jun 10 18:42:00 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_rechts.tcl 192.168.10.131 30865 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Netzbezug Wechselrichter rechts"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_rechts.tcl 192.168.10.131 30867 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Netzeinspeisung Wechselrichter rechts"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_rechts.tcl 192.168.10.131 30773 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA DC Leistung Wechselrichter rechts"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_rechts.tcl 192.168.10.131 30775 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject(
Jun 10 18:44:00 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_batteriewechselrichter.tcl 192.168.10.133 30845 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Batterieladezustand"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_batteriewechselrichter.tcl 192.168.10.133 31393 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Batterieladung"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_batteriewechselrichter.tcl 192.168.10.133 31395 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Batterieentladung"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_batteriewechselrichter.tcl 192.168.10.133 32341 2",&lGetOut,&lGetErr); var SMAValue=d
Jun 10 18:44:00 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_links.tcl 192.168.10.132 30865 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Netzbezug Wechselrichter links"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_links.tcl 192.168.10.132 30867 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Netzeinspeisung Wechselrichter links"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_links.tcl 192.168.10.132 30773 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA DC Leistung Wechselrichter links"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_links.tcl 192.168.10.132 30775 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA AC
Jun 10 18:44:00 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_rechts.tcl 192.168.10.131 30865 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Netzbezug Wechselrichter rechts"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_rechts.tcl 192.168.10.131 30867 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA Netzeinspeisung Wechselrichter rechts"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_rechts.tcl 192.168.10.131 30773 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject("SMA DC Leistung Wechselrichter rechts"); SMAValue.State(lGetOut.StrValueByIndex(" ", 1));  string lGetOut = ""; string lGetErr = ""; system.Exec("tclsh /usr/local/addons/modbus/sma_rechts.tcl 192.168.10.131 30775 2",&lGetOut,&lGetErr); var SMAValue=dom.GetObject(
Da alles läuft, könnte man das ignorieren, allerdings hängt sich jeden Tag 1 x mein Addon HAP-Homematic (HomeKit Plugin) auf.
Ich habe nun schon viel gelesen und alles deutet darauf hin das die ReGaHss überläuft.
Hat jemand dasselbe Problem bzw. woher kommen die Fehlermeldungen?
Außer HAP-Homematic (Homekit Version 0.0.14) und CUx-D habe ich keine Addons am Laufen und nutze die original CCU3 mit aktueller Firmware 3.63.9.
Ich habe auch schon die CUx-D Version von 2.9.1 auf 2.8 downgegraded, allerdings ohne Erfolg mit demselben Fehlerbild.

Danke für Eure Hilfe!
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

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

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

Beitrag von Baxxy » 11.06.2022, 00:35

fwiehl hat geschrieben:
10.06.2022, 20:52
Fehlerbild
Die gezeigten Fehler passen nicht zum Script aus dem 1.Post dieses Threads.
Sieht eher nach >dem hier< aus, 100%ig überein stimmt das aber auch nicht.

nseith
Beiträge: 316
Registriert: 23.06.2013, 11:08
Wohnort: bei Karlsruhe
Hat sich bedankt: 8 Mal
Danksagung erhalten: 3 Mal

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

Beitrag von nseith » 13.06.2022, 12:20

Hallo,

mir geht es wie
fwiehl
Das script laeuft seit langer Zeit ohne Probleme mit den FW Staenden:
CCU2 - 2.51.6
CUxD - 2.4.4
XML API 1.20

Jetzt habe ich heute endlich mal die CCU2 geupdated weil es heisst es sei wohl das letzte Update und somit habe ich jetzt alles auf dem neuesten Stand
CCU2 - 2.61.7
CUxD - 2.9.1
XML API 1.21

und jetzt auch im Statuslog vom CUxD den Fehler
cu2 local0.err ReGaHss: ERROR: ScriptRuntimeError:
jedoch scheint das Script weiter zu laufen da die Werte immernoch in die Variablen geschrieben werden

Ich habe jetzt schon im CUxD Forum gescrollt aber noch keinen richtigen Hinweis auf einen geaenderten Namen ect. gefunden.

Vielleicht liest Uwe das ja oder jemand hat die Loesung bereits
Danke Euch
N

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

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

Beitrag von MichaelN » 13.06.2022, 12:44

Da wird es nur helfen das Skript Befehle für Befehl ablaufen zu lassen und zu auschen, wo der Fehler auftritt. Debugging Tips sieh eSignatur.
Ich würde entweder das Skript in sinnvollen Blöcken unter Skript testen laufen lassen und mir dann den Block genauer ansehen, der den Fehler auslöst.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

nseith
Beiträge: 316
Registriert: 23.06.2013, 11:08
Wohnort: bei Karlsruhe
Hat sich bedankt: 8 Mal
Danksagung erhalten: 3 Mal

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

Beitrag von nseith » 13.06.2022, 12:46

Baxxy hat geschrieben:
11.06.2022, 00:35
Sieht eher nach >dem hier< aus, 100%ig überein stimmt das aber auch nicht.
Fuer Alle denen es geht wie mir und
fwiehl
Die Loesung stand im Link von Baxxy

Ich "dachte" ich habe seit langem keine # mehr fuer die Kommentare, jedoch war am Ende des Scripts noch eines versteckt!
jp112sdl hat geschrieben:
13.06.2022, 08:55
Der Fehler ist recht offensichtlich...

Code: Alles auswählen

#WriteLine(lGetErr.StrValueByIndex(" ", 1));
Kommentarzeichen im Skript ist ! und nicht #
Seit dem ist im LOG wieder Ruhe eingekehrt!
1000x Dank

Rene Braun
Beiträge: 1
Registriert: 30.07.2022, 12:07
System: CCU

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

Beitrag von Rene Braun » 30.07.2022, 12:40

Hallo zusammen,
ich habe das Script getestet und es funktioniert bestenes.
Dazu habe ich jetzt eine Frage: Gibt der SHM2 auf diesem Weg auch die Überschussleistung der einzelnen Phasen aus? Ich bin Elektrotechniker und bei meinem Stromversorger wird der Bezug je Phase (L1, L2, L3) separat berechnet. Soll heissen: wenn ich eine PV-Überschuss von 3000W (die Leistung teilt sich auf 3 Phasen auf) habe und ich darufhin einen Wechselstromverbraucher von 2000W einschalte, beziehe ich 1000W aus dem Netz, was der SHM2 leider so in der Summe nicht erkennt.
Dieses Problem habe ich mehrfach im Nachhinein im Sunny-Portal gesehen, wo bei Überschuss von 5000W einem Verbauch von 3000W immer noch ein Teil Netzbezug erfasst wurde.
Um dies für die Zukunft zu vermeiden, wäre es OPTIMAL, den Überschuss je Phase auszulesen. In der Beschreibung des SMA SEMP-Protokoll wird sowas erwähnt.
Wäre super, wenn ihr mir da helfen könntet.

Gruß Rene Braun

bhs
Beiträge: 4
Registriert: 30.08.2022, 11:14
System: CCU

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

Beitrag von bhs » 30.08.2022, 18:30

Liebe SMA-Nutzer,

ich bin ein Neuer!

Ich versuche nun seit 2 Tagen, das Skript von mschneider ff. in Gang zu bringen. Folgende Voraussetzungen habe ich geschaffen:
- Alle Systeme (auch der testende PC) an einem Switch (nach Umverkabelung).
- Wireshark sieht multicast-Pakete
- Das Skript (in Dialogform, also "Skript testen") liefert nur Nullen; der Anwort-String ist leer (siehe Skript).
- ich habe socat aus den CUxD-Verzeichnis direkt benutzt (siehe Skript)
- ich habe per rsh auf CCU2 das gleiche Kommande (socat) manuell eingegeben, nachdem ich nur 0 als Anwort erhalten habe.
- wenn ich dort den Timer (-T und -t) auf 20 Sekunden verlängere wird auf der CCU2 eine Antwort erzeugt (mit Länge 59 Byte, also passt nicht zum Skript).
- als Besonderheit ist meine lokalen IP-Adressen sind nicht Standard (Fritzbox hat <Zahl>.<Zahl>.<Zahl>.2) - wirkt sich das auf die Adresse des Multicast aus? Wenn ja, wie?

Ich bin jetzt ratlos; brauche dann doch die Lösung mit Modbus (und dazu dann meinen PV-Installateur)?

Meine SMA-Daten:
https://www.sunnyportal.com/Templates/P ... 5b0b07b8ce

Fällt jemand dazu etwas ein, was ich falsch mache oder besser machen sollte?

Bin für jeden Tipp dankbar!

Bernd

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 & pid=$! ; sleep 1 && kill $pid",&lGetOut,&lGetErr);
WriteLine("erste 30: "# lGetErr.Substr(1, 30));
string serial = lGetErr.StrValueByIndex(" ", 7+20) # lGetErr.StrValueByIndex(" ", 7+21) # lGetErr.StrValueByIndex(" ", 7+22) # lGetErr.StrValueByIndex(" ", 7+23);
system.Exec("printf '%d' 0x" # serial, &serial, &lGetErr);
string netzbezug = lGetErr.StrValueByIndex(" ", 39) # lGetErr.StrValueByIndex(" ", 40) # lGetErr.StrValueByIndex(" ", 41) # lGetErr.StrValueByIndex(" ", 42);
system.Exec("printf '%d' 0x" # netzbezug, &netzbezug, &lGetErr);
netzbezug = netzbezug.ToInteger() / 10;
string netzeinspeisung = lGetErr.StrValueByIndex(" ", 59) # lGetErr.StrValueByIndex(" ", 60) # lGetErr.StrValueByIndex(" ", 61) # lGetErr.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!");

botti
Beiträge: 266
Registriert: 15.12.2020, 09:00
System: CCU
Hat sich bedankt: 28 Mal
Danksagung erhalten: 22 Mal

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

Beitrag von botti » 30.08.2022, 19:36

Was passiert denn wenn Du dich per SSH auf die CCU verbindest und mal

socat -x -u -T 2 -t 2 udp-listen:9522 udp:239.12.255.254:9522

oder

socat -v -u -T 2 -t 2 udp-listen:9522 udp:239.12.255.254:9522

Dann solltest Du Werte bekommen. Bei mir sieht das so aus:
udp.jpg
Wenn da nichts kommt, dann würde ich wetten, das Du Deine Firewall nicht geöffnet hast. Also so:
fw.jpg
Evtl. hast Du beimi Sunny Home Manager eine ältere Firmware die längere UDP Pakete sendet? Mein Firmwarestand:
sma.jpg
sma.jpg (22.72 KiB) 1121 mal betrachtet
Gruß botfixer

bhs
Beiträge: 4
Registriert: 30.08.2022, 11:14
System: CCU

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

Beitrag von bhs » 30.08.2022, 20:44

Danke für den Test-Tipp!
Abgesehen von der Zeit ;-) sieht das bei mir genauso aus!

Die Firmware ist auch genau die gleiche!

Mein Skript (siehe Anlage; jetzt 50 Zeichen) wirft das Folgende aus:
erste 50:
0
0
0
Hello world!

??!

botti
Beiträge: 266
Registriert: 15.12.2020, 09:00
System: CCU
Hat sich bedankt: 28 Mal
Danksagung erhalten: 22 Mal

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

Beitrag von botti » 31.08.2022, 06:52

Naja, dann bleibt die Firewall der CCU.....

Ich bin jetzt noch nicht so lange dabei, so das ich die CCU2 nicht kenne. Aber es scheint, dass man dort in der UI keinen freien Port hinterlegen kann. Ob man einfach die Multicast Adresse hinterlegen kann weiß ich nicht.

Aber Du erwähntest ja, dass Du im LAN UDP Pakete siehst, deswegen kann es ja nur noch da dran liegen.
Davon ausgehend, das Dein Switch ein dummer Layer-2 Switch ist, der keine Pakete, Ports, Protokolle blockt.

Es kann auch sein, dass auf der CCU2 noch ein socat Prozess läuft, quasi eine Prozess Leiche, weil beim testen irgendwas hängen geblieben ist o.ä.

Aber dann meckert socat bei Aufruf rum, dass die Adresse bereits genutzt wird. Das könnte man durch einen CCU reboot testen.

Hast Du irgendwo ein anderes Linux, wo Du das testen kannst.

Ich mache das mit Node-Red auf RaspberryMatic, die ich zum testen nutze. Sobald man da den Port 9522 freischaltet, bekomme ich UDP Daten.

Antworten

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