76_SMAInverter.pm - Abfrage von SMA Wechselrichter

Begonnen von sct14675, 28 Juli 2016, 11:01:16

Vorheriges Thema - Nächstes Thema

300P

Zitat von: MadMax am 24 Mai 2025, 13:27:59Hat das sonst noch jemand getestet?
PS:
Bei mir sind es beim SB30 2 Strings (je 1 x an 1/2) und beim SB40 1 x 2 Strings an "1" und 1 String an "2".
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

MadMax

Zitat von: DS_Starter am 24 Mai 2025, 13:56:37Hi Max,

STP5000 passt auch, kann keinen Unterschied zwischen string_sum_pdc und string_1_pdc feststellen. Habe nur 1 String am WR, was dann sicherlich passt wenn es nur die Summe aller Strings ist.

Grüße,
Heiko

Klingt logisch  ;)
Aber keine Fehlermeldung.
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

300P

Zitat von: MadMax am 24 Mai 2025, 14:15:15Klingt logisch  ;)
Aber keine Fehlermeldung.

Oh je  :'(  :-X  :-[ - hab ich vor lauter "Glück" nicht ins Logbuch geschaut

2025.05.24 14:17:13 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:13 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:14 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:14 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:14 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:28 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:28 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:28 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:29 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:17:29 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

DS_Starter

@Max,

Frage ... ich sehe bei mir die Optionen "get ... data":

-
0
1
2
parameter

0..2 ist sicherlich das detail-level. Aber was ist "parameter"?
Vllt. kannst du bei Gelegenheit mal die ComRef aktualisieren.  ;)

LG,
Heiko

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Ach ja .... stimmt:

2025.05.24 14:37:03.106 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:38:04.146 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:39:05.107 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:40:06.087 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:41:07.088 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:42:08.115 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:43:09.026 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:44:10.040 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:45:11.514 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:46:12.100 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:47:12.955 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:48:14.040 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:49:14.993 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:50:15.986 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:51:16.997 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:52:17.062 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:53:17.977 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
2025.05.24 14:54:18.873 1: PERL WARNING: Argument "-" isn't numeric in addition (+) at ./FHEM/76_SMAInverter.pm line 2064.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

#1865
Glaub das hier sollte helfen:  O:-)
(Zeile 2047 - 2063)

FALSCH - war noch ein BUG drin ->> Korrektur mein nächster Post bzw. im dann kommenden Update von MAX :)
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

MadMax

Stimmt die Werte sind nicht genullt sondern mit "-" gefüllt...
Passe ich nacher noch an.
Wie in deinem Beispiel auf 0 setzen ist auch nicht die Lösung.
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

MadMax

Zitat von: DS_Starter am 24 Mai 2025, 14:54:12@Max,

Frage ... ich sehe bei mir die Optionen "get ... data":

-
0
1
2
parameter

0..2 ist sicherlich das detail-level. Aber was ist "parameter"?
Vllt. kannst du bei Gelegenheit mal die ComRef aktualisieren.  ;)

LG,
Heiko


Bei manchen WR lese ich auch Parameter aus. Mit der Auswahlkann man selber entscheiden welches detail-level man will.
War ein Wunsch da nicht immer alles gelesen werden muss.

Werde ich mal noch dokumentieren.

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

300P

#1868
Guten Morgen Max,

war grad dabei das noch anzupassen...

Beim Code in meinem Post wurden in Folge dann evtl. nicht existierende PDC1/2/3 alas Reading ausgegeben.
(lösche jetzt diesen im Post von Gestern)

Hier "meine" Korrektur dazu:
     elsif ($data_ID == 0x251E) {
         $inv_SPOT_PDC1 = unpack("l*", substr $data, 62, 4);
         #$inv_SPOT_PDC1 = (abs($inv_SPOT_PDC1) eq 2147483648) ? 0 : $inv_SPOT_PDC1;
         if(($inv_SPOT_PDC1 eq -2147483648) || ($inv_SPOT_PDC1 eq 0xFFFFFFFF)) {$inv_SPOT_PDC1 = "-"; }
         
         if($size < 90) {$inv_SPOT_PDC2 = "-"; }  else {
            $inv_SPOT_PDC2 = unpack("l*", substr $data, 90, 4);
            #$inv_SPOT_PDC2 = (abs($inv_SPOT_PDC2) eq 2147483648) ? 0 : $inv_SPOT_PDC2;
            if(($inv_SPOT_PDC2 eq -2147483648) || ($inv_SPOT_PDC2 eq 0xFFFFFFFF)) {$inv_SPOT_PDC2 = "-"; }
         } # catch short response, in case PDC2 not supported
         if($size < 118) {$inv_SPOT_PDC3 = "-"; } else {
            $inv_SPOT_PDC3 = unpack("l*", substr $data, 118, 4);
            #$inv_SPOT_PDC3 = (abs($inv_SPOT_PDC3) eq 2147483648) ? 0 : $inv_SPOT_PDC3;
            if(($inv_SPOT_PDC3 eq -2147483648) || ($inv_SPOT_PDC3 eq 0xFFFFFFFF)) {$inv_SPOT_PDC3 = "-"; }
         } # catch short response, in case PDC3 not supported
                 
        my $inv_SPOT_PDC_sum_TMP = "0";
       
        if ($inv_SPOT_PDC1 ne "-") { $inv_SPOT_PDC_sum_TMP = $inv_SPOT_PDC1 ; } # in case PDC1 not supported
        if ($inv_SPOT_PDC2 ne "-") { $inv_SPOT_PDC_sum_TMP = $inv_SPOT_PDC_sum_TMP + $inv_SPOT_PDC2 ; } # in case PDC3 not supported
        if ($inv_SPOT_PDC3 ne "-") { $inv_SPOT_PDC_sum_TMP = $inv_SPOT_PDC_sum_TMP + $inv_SPOT_PDC3 ; } # in case PDC3 not supported

        $inv_SPOT_PDC_sum = $inv_SPOT_PDC_sum_TMP;
       
         Log3 $name, 5, "$name - Found Data SPOT_PDC1=$inv_SPOT_PDC1, SPOT_PDC2=$inv_SPOT_PDC2 and SPOT_PDC3=$inv_SPOT_PDC3, SPOT_PDC_SUM=$inv_SPOT_PDC_sum";
         return (1,$inv_SPOT_PDC1,$inv_SPOT_PDC2,$inv_SPOT_PDC3,$inv_SPOT_PDC_sum,$inv_susyid,$inv_serial);
     }
     
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

MadMax

Hallo 300p,

so wie von dir funktioniert es.
Habe es aber anders gelöst.

Hier die angepasste version, ich bekomme keine Warnungen mehr und die Readings pasen auch.

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

300P

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

fis14

Moin,
die Log Füllt sich :-) bei der Version:
$Id: 76_SMAInverter.pm 30005 2025-05-29 14:05:26Z


2025.05.31 03:39:37 1: PERL WARNING: Use of uninitialized value $inv_SPOT_PDC_sum in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1340.
2025.05.31 03:39:38 1: PERL WARNING: Use of uninitialized value $inv_SPOT_PDC_sum in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 2067.

Gruß
Falk

MadMax

Was für einen Wechselrichter hast du oder warum wird bei die nicht mal PDC vom ersten String gefüllt?
Habe es gefixt und eingecheckt, dann wird die Variable erstmal mit 0 gefüllt.

Gruß MAx
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

klaus.schauer

Bei den beiden Wechselrichtern vom Typ STP10.0SE (SUNNY TRIPOWER 10.0 SE) und STP3.0-3AV-40 (Sunny Tripower 3.0) erhalte ich periodisch Fehlermeldungen in der Form (detail-level = 2):
2025.05.31 00:03:20 3: wr4136601s - Send request 00020051002A8300FF2A8300 to 192.168.6.47 on port 9522
2025.05.31 00:03:20 3: wr4136601s - Format of inverter response does not fit.
2025.05.31 00:03:20 3: wr4136601s - Send request 0002805100644100FF644100 to 192.168.6.47 on port 9522
Gibts da einen Trick, um dem Fehler abzuhelfen?

Soweit ich das sehe, protokolliert das Modul alle Abfragen mit logLevel 3 in die globale Logdatei. Das sind über den Tag reichlich viele. Wäre es u. U. möglich die fehlerfreien logs mit logLevel 4 und nur die fehlerhaften mit logLevel 3 zu schreiben. Das sollte für eine Funktionskontrolle des Moduls doch ausreichen.

fis14

#1874
Moin,
Das ist wohl ein Phänomen der opertime stop Phase.
Hab das Update innerhalb der Dunkelheit vollzogen
Als das Modul komplett aufwachte verschwanden auch die Meldungen
Nachts geht in der log die Post ab.
Gruß
Falk