[Modul] SMA Wechselrichter (ModBus)

Hallo zusammen!

Nach Langer Zeit bin ich mal wieder bei dem Thema und bräuchte bitte Hilfe:

  1. Ich würde gerne den Tagesverbrauch auslesen, allerdings finde ich keine Registernummer dazu.

  2. Wurde in den letzten 2 Jahren (seit meinem letzten Post zu diesem Thema) etwas an der Struktur verändert? Den Pfad „C:\IP-Symcon\modules\de.codeking.symcon.sma\SMAModbus“ finde ich nämlich nicht mehr, nun weiß ich auch nicht, wo ich das neue Register eintragen soll…

Vl hat ja jemand die Zeit und die Muse, mir da kurz zu helfen? :wink:

Als Wechselrichter kommt bei mir der STP10.0-3AV-40 mit dem SMA Sunny Home Manager 2.0 zum Einsatz.

VIelen Dank! Grüße

Hallo,

das Modul ist unter https://github.com/CodeKing/de.codeking.symcon.sma zu finden und kann in den Kerninstanzen → Modules eingebunden werden. Die letzten Änderungen haben vor vier Jahren stattgefunden.
Du findest es nicht im Module Store.

@mj04 Danke, aber das Modul hab ich eh am Laufen.

mir geht´s darum, dass ich bestimmte Werte hinzufügen will, welches man meines Wissens über die Modbus Register bewerkstelligen muss.

Allerdings war´s vor 2 Jahren (Weiter oben im Thread mein Post vom Januar 2020) so, dass man diese Registerwerte in die „SMARegister“ unter dem Pfad „C:\IP-Symcon\modules\de.codeking.symcon.sma\SMAModbus“ hinzufügen musste.

Nun finde ich aber diesen Pfad nicht mehr, wenn ich über RDP auf mein NAS gehe. Deshalb meine Frage nach der Umstrukturierung, kenn mich da ja nicht wirlkich aus :smiley:

Unter Windows bin ich nicht mehr up to date. Aber unter Windows Installation - > C:\ProgramData\Symcon\ Modules solltest du alles wiederfinden.
Mit der SMARegister.php hast du vollkommen Recht. Die muss erweitert werden.

1 „Gefällt mir“

Super, danke dir! Werd ich mich mal ran machen.

Du kannst es inzwischen auch mit Symcon Bordmitteln lösen, da Symcon ein ModBus Modul mitbringt.

Da bei mir gerne schon mal Threads des SMA Moduls hängen blieben, habe ich auf das ModBus Modul umgestellt.

Hier ein kurzes Beispiel für die SMA Adresse 30529 (Metering.TotWhOut („Gesamtertrag“)):

Gateway:

image

Auf die Weise lassen sich genau die gewünschten Werte auslesen. Eigentlich ganz einfach :slight_smile:

4 „Gefällt mir“

@bumaas Danke! Werd ich mir mal ansehen.

Ich bin da eh noch nicht so glücklich. Teilweise kommt auf bestimmten Werten gar nix an, teilweise aber auch was völlig falsches…

So z.b. bei der heutigen eingespeißten Stromenge.
Laut SMA Oberfläche hab ich heute ~31kWh eingespeist, laut IPS sind´s 40…


Mich würde wundern, wenn der Wechselrichter STP10.0-3AV-40 die Einspeisedaten zur Verfügung stellt. Zumindest hat mein STP 20000TL-30 nur Information über die Ertragsseite.

Hast du denn die „Modbus® Parameter und Messwerte“ Übersicht von SMA für dein Gerät vorliegen?

Die Bezugs- und Einspeisedaten stellt bei mir der Home Manager zur Verfügung

Hallo zusammen, ich habe heute erstmalig auch den Fehler dass der Tagesertrag nach 65kwh auf 0 umbricht und von dort weiterzahlt, der Fehler ist vor 2 Jahren ja bereits aufgetaucht, gibt es hier inzwischen einen Fix oder habe ich etwas falsch eingestellt ?

Besten Dank!

Ich glaube ich hatte es schon einmal gepostet. Sorry, falls Doppelpost. In der module.php habe ich ab Zeile 220 folgendes ergänzt:

	if ( ($config['name'] == 'Day yield') || ($config['name'] == 'AC active power across all phases') ) 
            $endianness = 2;**
	}
            // fix bytes
            $value = $endianness
                ? array_chunk($value, 4)[0]
                : array_chunk($value, 2)[1];

            // convert signed value
            if (substr($config['type'], 0, 1) == 'S') {
                // convert to signed int
                $value = PhpType::bytes2signedInt($value, $endianness);
            } // convert unsigned value
            else if (substr($config['type'], 0, 1) == 'U') {
                // convert to unsigned int
                $value = PhpType::bytes2unsignedInt($value, $endianness);
            }

            // set value to 0 if value is negative or invalid
            if ( !($config['name'] == 'Day yield') ) { // && !($config['name'] == 'AC active power across all phases') ) {
	    if ((is_int($value) || is_float($value)) && $value < 0 || $value == 65535) {
                   $value = (float)0;
	    }
	}
1 „Gefällt mir“

Perfekt vielen Dank! kann es sein dass das irgendwas mit den Blöcken/geschweiften Klammern verrutscht ist ?

Ja könnte. Ist schon wieder so lange her…
Eigentlich sind es nur die ersten drei Zeilen vor dem Kommentar fix bytes ergänzt werden

	if ( ($config['name'] == 'Day yield') || ($config['name'] == 'AC active power across all phases') ) {
            $endianness = 2;
	}

und die Zeile

if ( !($config[‚name‘] == ‚Day yield‘) ) { // && !($config[‚name‘] == ‚AC active power across all phases‘) ) {

Ich hätte eine Frage,
ich verwende zum Auslesen der Daten beim Sunny Boy Storage 2.5 das Module von CodeKing. Bekomme aber keine Werte bezüglich Laden, Entladen der Batterie?

Hat dazu jemand eine Lösung?

Danke

Das geht auch ohne Modul von Code King?
Ich möchte Gerne bei meinem Batterie WR per Modbus die Werte, Laden oder Entladen der Batterie, Kapazität der Batterie, Leistung Entladen bzw. Laden der Batterie anzeigen lassen.

Aber ja, du brauchst dir nur das passende Dokument mit den Modus Adressen von SMA herunterladen und dann meinem Beispiel von oben folgen.

Ok, die Liste für meinen SBS 2.5 mit denn Adressen habe ich schon.
Muss ich die Adressen wo Abspeichern in IPS? Oder diese mit einem Script auslesen?

Das versteh ich noch nicht ganz?

Du brauchst kein Skript. Du legst für jede Adresse , die du auslesen möchtest, eine Instanz wie in diesem Beispiel an:

Hab jetzt eine Instants mit „ModBus Gateway“ angelegt.
Die Schnittstelle Konfiguriert.
Dann unter Experten Option den Datenblock, den ich abfragen möchte eingegeben.

Wie kommt der Wert in die Variable? Zb.Float?

Wie muss ich das dann ergänzen wenn bei einer Adresse mehrere Rückantworten kommen? Bzw. beim Status der Batterie?

Da brauchst du nichts anzugeben.

Die Adresse gibst du in der Instanz „Modbus Address“ an. Z.B bekomme ich bei mir (SPS6.0-10) den Batterieladezustand über die Adresse 30845:

Guten Morgen,

würde auch gerne meine PV mit in Symcon integrieren - derzeit habe ich es in einer Homeassistant Testinstanz.

Ich habe folgende Ausstattung:

1 x SMA Homemanager 2.0
1 x SMA Sunny Boy Storage 5.0
2 x SMA Tripower 6.0
1 x LG Prime RESU 10H

Ich würde gerne wissen, wie der beste Weg ist, dies in Symcon zu integrieren - mit dem SMA Wechselrichter Modul oder mit dem Modbus Modul von Hand (wie oben von @bumaas angegeben)?

Ist das ModBus Modul bei den SMA Geräten direkt aktiviert oder muss ich was vorher einrichten?

Danke für eure Hilfe.