SMA Energy Meter

Hach… Wunderbar. Das hilft doch weiter… Dankeschön!

Ein ganz anderer Weg zum Einbinden der Daten des SMA-Energy Meter in Symcon (auf RPi oder Linux) ist mit Hilfe des Python Daemon vom Datenschuft: GitHub - datenschuft/SMA-EM: SMA Energymeter measurement

Sobald der Daemon läuft wird eine Pipe erzeugt, die man mittels eines file_get_contents recht leicht einlesen kann:


function getRegard() {
		return file_get_contents("/run/shm/em-regard");
}

function getSurplus() {
		return file_get_contents("/run/shm/em-surplus");
}

Hallo Rene

Läuft dein Winterprojekt bereits?
Habe ein WAGO 750-880 Controller.
Würdest du mir dein Code zur Verfügung stellen?

Gruss oergeler

Habe die Wago 750-880 in Betrieb. Diese steuert mein Boiler Stufenweise an damit ich meinen Solarstrom selber nutzen kann.
Was mir noch fehlt ist der aktuelle Leistungs-Messwert vom SMA Energymeter. Die Multicast Kommunikation habe ich soweit aufgebaut, funktioniert aber noch nicht.
Hat jemand eine laufende Kommunikation zwischen Wago und Energymeter?

Oergeler

Hallo Oergeler ,

schau Dir dieses mal an, ich benutze es zwar mit Ausgabe auf KNX, aber es gibt auch eine entsprechende
Ausgabe per XML.

smart charging – dynamische Ladungssteuerung mit Speicherunterstützung + KNX
smart charging – dynamische Ladungssteuerung mit Speicherunterstützung + KNX » smart charging + smart home + smart ev

Läuft unter Raspbery oder Linux.

Gruss Ralf

Hallo Ralf

Danke für die Antwort.
Möchte die Kommunikation mit Codesys und Wago lösen.

Gruss Oergeler

Jetzt läufts. Habs hingekriegt.
Tolle Sache mit der Wago!
Gruss Oergeler

Hallo zusammen,

möchte auch mit meiner WAGO 750-881 das SMA Energy Meter auswerten, hab noch a paar Probleme damit, komm eigentlich aus der Siemens-SPS-Welt und bin erst seit kurzem auf WAGO umgestiegen.

Kann mir evtl. jemand seinen Codesys Code schicken um ein paar Beispiele zu haben, gerne auch alles rund um eure Hausautomation.

Danke im Voraus!

Gruß
Uli

Hi Zusammen,

ich habe nun direkt die UDP Pakete des SMA Energy Meter im IPS ausgewertet. Dafür muss auf dem Energy Meter die Zieladresse angepasst werden. Ich weiß leider nicht, was für Auswirkungen dies für weitere SMA Komponenten hat, die eventuell bei Euch mit eingebunden sind:

Dann über einen UDP-Socket und Registervariable folgendes Script triggern:

<?

if ($_IPS["SENDER"] == "RegisterVariable")                               // über Register Var ausgeführt
{
    $Data  = RegVar_GetBuffer($_IPS["INSTANCE"]);                 // im Puffer der Instanz vorhandene Daten in $data kopieren
    $Data .= $_IPS["VALUE"];                                                        // neu empfangene Daten an $data anhängen
    $CRLF  = ",
";
    $HexData = bin2hex($Data);
    SetValue(44456 /*[Scripts & Co\Zaehler\SMA Smart Meter	xt]*/, substr($HexData,417, 16 ));

    SetValue(48665 /*[Scripts & Co\Zaehler\SMA Smart Meter\Bezug - Summe]*/,(float)hexdec(substr($HexData,64, 8 ))/10);
    SetValue(52765 /*[Scripts & Co\Zaehler\SMA Smart Meter\Einspeisung - Summe]*/,(float)hexdec(substr($HexData,104, 8 ))/10);

    SetValue(33913 /*[Scripts & Co\Zaehler\SMA Smart Meter\Bezug - L1]*/,(float)hexdec(substr($HexData,320, 8 ))/10);
    SetValue(54451 /*[Scripts & Co\Zaehler\SMA Smart Meter\Bezug - L2]*/,(float)hexdec(substr($HexData,608, 8 ))/10-(float)hexdec(substr($HexData,648, 8 ))/10);
    SetValue(34939 /*[Scripts & Co\Zaehler\SMA Smart Meter\Bezug - L3]*/,(float)hexdec(substr($HexData,896, 8 ))/10);
}
?>

LG Tommy

Super :o :cool:, vielen Dank für die Info. Das muss ich nächstens mal austesten.

Viele Grüsse
Roberto

Hallo zusammen,

kann mir eventuell ein „Sunny Home Manager 2.0“ Besitzer sagen, ob ich diesen genau so wie den Energy Meter per UDP Socket mit Registervariable abfragen kann ? Der neue Homemanager 2.0 sieht aus wie ein Energy Meter. (Nur mit ein paar mehr Funktionen für zukünftige coole Sachen)

Noch hab ich ihn selber nicht. Aber steht auf meiner Liste.

Ich kann über eine Multicast Instanz mit dem Skript von Tommy bei meinem Home Manager 2.0 Bezug und Einspeisung korrekt auslesen. Die Werte für den Bezug L1 - L3 passen allerdings gar nicht.

Leider verstehe ich die Telegramme und das Skript nicht um den Fehler nachvollziehen zu können.

Grüße

Ich möchte meine Aussage von gestern noch korrigieren. Das gesamte Telegramm vom Home Manager 2.0 deckt sich mit dem Energy Meter. Ich konnte jetzt alle Werte mit Hilfe dieserBeschreibung auswerten.:loveips:

Grüße

Hi Zusammen,

ich hatte mit an diesen Blog Eintrag gehalten:
SMA Energy Meter » smart charging + smart home + smart ev

Hier hat Nico das Protokoll des SMA Energy Meter schön zerlegt und ich habe mich daran orientiert und das Script gebastelt. Ich vermute mal das sich das Protokoll etwas zum Home Manager 2.0geändert hat.

Viele Grüße!

Nein, hat es sich nicht (siehe oben). Der Home Manager deckt sich vollständig mit der Beschreibung.

Hallo zusammen, Hallo @xerxos

kannst du mir eventuell ein wenig Hilfestellung hier mit meinem HomeManager 2.0 und der ips Einrichtung geben ?
Ich habe noch nie mit register Variablen gearbeitet. Die Kurzbeschreibung ist dann für mich als „nicht programmierer“ etwas zur kurz :wink:

Ich bin wie folgt vorgegangen. Habe dazu aber gleich 1…2 Fragen.

  1. Multicast Socket erstellt (siehe Screenshot)
  2. Script erstellt
  3. Registervariable erstellt, Multicast Socket und Script ausgewählt
  4. 6 Variablen erstellt. ( 6 mal Float 1x string korrekt ?)

Soweit so gut… und nu ?

Danke schon mal !
Gruß
Christian

Hallo Christian,

ich selber habe einen UDP Socket mit Port 9522 erstellt:
2017-10-22 20_57_15-IP-Symcon Management Console [192.168.76.34].png

Diesen dann mit der Register Variable und Script verbunden.

Ja, 5x Float:

[ul]
[li]Bezug L1 [/li][li]Bezug L2 [/li][li]Bezug L3 [/li][li]Bezug Summe [/li][li]Einspeisung Summe [/li][/ul]
1x String:

[ul]
[li]Rückgabewert der Register Variable (hatte ich zum debuggen eingerichtet) kannst die Zeile 9 auch auskommentieren [/li][/ul]

Hoffe Das hilft Dir weiter.
LG Tommy

Moin Tommy,

Danke für die schnelle Antwort, aber das funktioniert beim Home Manager 2.0 mit dem UDP Socket nicht.
Habs gerade probiert. Kommt auch nix.

ABER ich habs dank deinem Port 9522 mit dem Multicast geschafft.

DAAAAANKKEEEE !!!

FRAGE 1: Loggt ihr aus Spaß die einzelnen Phasen ? Da kommt sekündlich ja ganz schön was zusammen.
Weiß ja nicht wie IPS aufm Pi3 damit zurecht kommt. Die beiden anderen Werte sind ja am wichtigsten.

FRAGE 2: Ist der ausgewertete „Bezug“ der Netzbezug, oder mein Verbrauch ? also wenn ich mit der PV Anlage 100 Watt erzeuge, ist dem „Bezug“ dies schon abgezogen ? Ich denke schon oder ? Kann ich den „tatsächlichen Verbrauch“ wenn ich zusätzlich einspeise auch auswerten ohne mir das ausrechnen zu müssen ?

Moin!

Frage 1: Ja, da kommt schon viel zusammen, habe das ca. 1,5 Jahre auf meinem alten Raspi2 mitprotokolliert, ohne Probleme zu haben. Hatte auf diesem aber u.A. das /var/log als ramdist gemountet um die Schreibzugriffe auf der SD zu minimieren. Inzwischen betreibe ich das IP Symcon in einer KVM Virtualisierten Ubuntu Umgebung.

Frage 2: Ja, es ist der bereinigte Wert, wenn der SMA Meter direkt am Zähler des Netzbetreibers hängt. Bei mir ist das zumindest so. Um den echten Stromverbrauch zu ermitteln habe ich zusätzlich noch SolarViewan meinem SMA SunnyBoy hängen und addiere einfach den aktuell erzeugten Strom dazu. Leider wird dieser nur alle 5 Minuten geliefert.

LG Tommy

Hmmm, folgendes:

Im Wechselrichter bekomme ich eigentlich beide Werte angezeigt. Einmal mein Gesamtverbrauch und den bereinigten Netzbezug. Den Netzbezug hol ich mir aber lieber über die Multicast Instanz mit deinem Script, da dies sekündlich viel genauer ist. Über Modbus darf ich den WR nicht so oft abfragen, da er das nicht mag.
Blöd ist nur, daß ich den im WR Webinterface angezeigte Gesamtverbrauch nicht per Modbus auslesen kann. Habe dafür kein Wert gefunden. Sonst könnte ich diesen aus dem WR holen. Den Gesamtverbrauch (nicht bereinigt) holt der WR sich nämlich über die Speedwire Schnittstelle vom Home Manager. Also müsste der HomeManager doch diesen Wert eigentlich auch zur Verfügung stellen können.

PS: Es regnet gerade wie sau und ist dunkel. Daher keine PV Erzeugung.

Und wie bekomm ich jetzt z.B. noch folgendes in dein Script ?

Bezugszähler HEX: 0000000000519708 => 5347080 / 3600s => 1485,3 Wh / 1000 => 1,4853 kWh
Einspeisezähler HEX: 00000000000c6750 => 812880 / 3600s => 225,8 Wh / 1000 => 0,2258 kWh

Ich verstehe nicht wie ich das in dein Script wie z.B.

$HexData,320, 8 ))/10);

bekommen soll.

Finde da keinen Ansatz das umzuwandeln. (Echt blöd vom programmieren keine Ahnung zu haben) :frowning:
Ich bekomme die Werte zwar aktuell alle per Modbus aus dem WR, aber eleganter wäre es jetzt alle Werte aus dem HomeManager zu beziehen.