76_SMAInverter.pm - Abfrage von SMA Wechselrichter

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

Vorheriges Thema - Nächstes Thema

Dersch

Ja danke! Sieht super aus nun:

Internals:
   CFGFN     
   DEF        XXXX 192.168.10.70
   FUUID      5d56fd3b-f33f-c2c3-e480-3f8cc6d6f22df1c0
   HOST       192.168.10.70
   INTERVAL   manual
   LASTUPDATE 17.08.2019 / 09:24:54
   MODEL      STP6.0-3AV-40
   NAME       SMATRIPOWER
   NR         22814
   PASS       XXXX
   STATE      manual - 0.280 kW
   TYPE       SMAInverter
   VERSION    2.10.2
   HELPER:
     AVERAGEBUF 280,277,260,0,0,0,0,0,0,0,0,0,0,0,0,0,0
     DEFAULT_TARGET_SERIAL 4294967295
     DEFAULT_TARGET_SUSYID 65535
     FAULTEDCYCLES 5
     INTERVAL   60
     MAXBYTES   300
     MYSERIALNUMBER 123321123
     MYSUSYID   233
     PKT_ID     32769
   Helper:
     DBLOG:
       etotal:
         DBLogging:
           TIME       1566026694.11461
           VALUE      136.927
       total_pac:
         DBLogging:
           TIME       1566026694.11461
           VALUE      0.280
   READINGS:
     2019-08-17 09:24:54   avg_power_lastminutes_05 136
     2019-08-17 09:24:54   avg_power_lastminutes_10 74
     2019-08-17 09:24:54   avg_power_lastminutes_15 51
     2019-08-17 09:24:54   background_processing_time 0.7809
     2019-08-17 09:24:54   device_class    Solar-Wechselrichter
     2019-08-17 09:24:54   device_name     SN: 3004218712
     2019-08-17 09:24:54   device_status   Ok
     2019-08-17 09:24:54   device_type     STP6.0-3AV-40
     2019-08-17 09:24:54   etoday          0
     2019-08-17 09:24:54   etotal          136.927
     2019-08-17 09:24:54   feed-in_time    65.99
     2019-08-17 09:24:54   grid_freq.      49.99
     2019-08-17 09:24:54   gridrelay_status geschlossen
     2019-08-17 09:24:54   inverter_processing_time 0.7360
     2019-08-17 09:24:54   modulstate      normal
     2019-08-17 09:24:54   operation_time  68.43
     2019-08-17 09:24:54   opertime_start  17.08.2019 05:41:15
     2019-08-17 09:24:54   opertime_stop   17.08.2019 21:17:20
     2019-08-17 09:24:54   pac_max_phase_1 6000
     2019-08-17 09:24:54   pac_max_phase_2 0
     2019-08-17 09:24:54   pac_max_phase_3 0
     2019-08-17 09:24:54   phase_1_iac     39.935
     2019-08-17 09:24:54   phase_1_pac     0.092
     2019-08-17 09:24:54   phase_1_uac     231.18
     2019-08-17 09:24:54   phase_2_iac     40.046
     2019-08-17 09:24:54   phase_2_pac     0.092
     2019-08-17 09:24:54   phase_2_uac     230.03
     2019-08-17 09:24:54   phase_3_iac     40.099
     2019-08-17 09:24:54   phase_3_pac     0.096
     2019-08-17 09:24:54   phase_3_uac     232.09
     2019-08-17 09:24:54   serial_number   3004218712
     2019-08-17 09:24:54   state           0.280
     2019-08-17 09:24:54   string_1_idc    0.446
     2019-08-17 09:24:54   string_1_pdc    0.150
     2019-08-17 09:24:54   string_1_udc    337.56
     2019-08-17 09:24:54   string_2_idc    0.431
     2019-08-17 09:24:54   string_2_pdc    0.143
     2019-08-17 09:24:54   string_2_udc    334.10
     2019-08-17 09:24:54   susyid          378 - SN: 3004218712
     2019-08-17 09:24:54   total_pac       0.280
Attributes:
   DbLogExclude modulstate,state
   SBFSpotComp 1
   detail-level 2
   event-on-change-reading total_pac,etoday,etotal
   event-on-update-reading state,modulstate
   group      Photovoltaik
   icon       measure_photovoltaic_inst@green
   interval   60
   mode       manual
   offset     1
   room       Energie
   showproctime 1
   stateFormat { AttrVal("$name","mode", "automatic")." - ".ReadingsVal("$name","state", undef)." kW"}
   suppressSleep 0
   target-serial 3004218712
   target-susyid 378
   timeout    30
   verbose    0


Wenn es nun einfach nur an den fehlenden Attr gelegen hat finde ich die Commandref aber auch etwas ungenau.

target-susyid : Im Falle eines Multigate kann die Ziel-SUSyID definiert werden. Ist mehr als ein Wechselrichter installiert, muß die Wechselreichter-SUSyID gesetzt werden um den Wechselrichter der Device-Definition eindeutig zuzuweisen. Default ist 0xFFFF (=keine Einschränkung)
target-serial : Im Falle eines Multigate kann die Ziel-Seriennummer definiert werden. Ist mehr als ein Wechselrichter installiert, muß die Wechselreichter-Seriennummer gesetzt werden um den Wechselrichter der Device-Definition eindeutig zuzuweisen. Default ist 0xFFFFFFFF (=keine Einschränkung)


Denn ich habe ja nur einen WR installiert.

Jedenfalls bin ich nun sehr glücklich mit dem Modul :) Und kann weiter machen mit der Integration. Danke für eure Hilfe, habe ja nun auch etwas über modul-debugging lernen dürfen.

Grüße
Dirk

Waldmensch

#601
Ich habe beide Attribute NICHT gesetzt, bei meinem ollen STP10000TL-10 und es funktioniert trotzdem. Eventuell sind die neuen WR diesbezüglich etwas picky, wenn man FFFF.... hinschickt, sie also nicht mit ihrer Seriennummer anspricht?


Gesendet von iPhone mit Tapatalk

DS_Starter

ZitatIch habe beide Attribute NICHT gesetzt, bei meinem ollen STP10000TL-10 und es funktioniert trotzdem.
Ist bei mir auch so. Deswegen waren die Attribute ursprünglich nur bei mehreren vorhandenen WR nötig.
Aber ich denke wenn ich die Attribute automatisiert setze (wenn sie nicht vorhanden sind!), wird es kein Problem geben.

Bisschen Geduld, habe noch ein bisschen zu tun. Stelle euch dann aber eine Testversion zur Verfügung.

LG,
Heiko
ESXi@NUC+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

Waldmensch

Teste das aber bitte erst mal. Ich habe dunkel in Erinnerung (4 Jahre her) das es gerade mit der serial Probleme bei den alten gab und dann erst das mit den FF rausgefunden wurde. Notfalls halt einfach einen Vermerk für die Nachwelt in die Commandref, dass es nötig sein KANN, das die Attribute gesetzt werden müssen.


Gesendet von iPhone mit Tapatalk

DS_Starter

ZitatTeste das aber bitte erst mal.
Ja, klar. Aber weißt du was, habe gerade festgestellt dass mein STP5000-TL20 auch nicht mehr antwortet wenn ich die Attribute lösche. Waren bei bei mir doch gesetzt.
Wenn alles läuft, schaut man da nicht mehr so hin ...
ESXi@NUC+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

So, in meinem contrib (Footer) liegt die Version 2.11.0.
Die besagten Attribute werden automatisch gesetzt falls es sie nicht gibt. Bei meinem STP klappt das prima. Man muß dann natürlich noch save drücken.
Ich mußte etwas mehr als gedacht machen, weil wir uns ja in einem BlockingCall befinden und von dort aus Attribute im Device setzen müssen. Aber dafür gibt es ja auch Methoden.

Habe dabei auch festgestellt, dass das Modul etwas "in die Jahre" gekommen ist. Heißt die Commandref müsste neu aufgebaut werden für die direkte Attributehilfe und die Meta-Unterstützung fehlt auch.
Also irgendwann muss ich mir das mal vornehmen ...

Testet bitte mal wie es bei euch damit aussieht.

Grüße,
Heiko
ESXi@NUC+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

Dersch

#606
Ich habe folgende Fehler im LOG. Ist wohl doch noch nicht so ganz korrekt am laufen mit den neuen WR:

2019.08.17 17:08:04 1: PERL WARNING: Loaded DateTime::TimeZone::Europe::Berlin, which is from a different version (2019b) of the Olson database than this installation of DateTime::TimeZone (2019a).
2019.08.17 17:08:04 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:08:04 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:08:04 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1121.
2019.08.17 17:08:04 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in division (/) at ./FHEM/76_SMAInverter.pm line 712.
2019.08.17 17:09:04 1: PERL WARNING: Loaded DateTime::TimeZone::Europe::Berlin, which is from a different version (2019b) of the Olson database than this installation of DateTime::TimeZone (2019a).
2019.08.17 17:09:04 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:09:04 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:09:04 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1121.
2019.08.17 17:09:05 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in division (/) at ./FHEM/76_SMAInverter.pm line 712.
2019.08.17 17:10:06 1: PERL WARNING: Loaded DateTime::TimeZone::Europe::Berlin, which is from a different version (2019b) of the Olson database than this installation of DateTime::TimeZone (2019a).
2019.08.17 17:10:07 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:10:07 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:10:07 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1121.
2019.08.17 17:10:07 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in division (/) at ./FHEM/76_SMAInverter.pm line 712.
2019.08.17 17:11:10 1: PERL WARNING: Loaded DateTime::TimeZone::Europe::Berlin, which is from a different version (2019b) of the Olson database than this installation of DateTime::TimeZone (2019a).
2019.08.17 17:11:10 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:11:10 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:11:10 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1121.
2019.08.17 17:11:10 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in division (/) at ./FHEM/76_SMAInverter.pm line 712.
2019.08.17 17:12:15 1: PERL WARNING: Loaded DateTime::TimeZone::Europe::Berlin, which is from a different version (2019b) of the Olson database than this installation of DateTime::TimeZone (2019a).
2019.08.17 17:12:15 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:12:15 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1120.
2019.08.17 17:12:15 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1121.
2019.08.17 17:12:16 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in division (/) at ./FHEM/76_SMAInverter.pm line 712.


das Reading etoday wird auch wirklich nicht gefüllt :(

Xguide

Könnte das mit dem DateTime Problem zusammenhängen? Vermutlich kann er den Tag nicht genau errechnen - nur so eine Vermutung.
Google mal nach dem Perl Fehler, den hatte ich auch schon mal. Ggf. das Paket auf Linux-Ebene aktualisieren oder fhem aktualisieren.



Gesendet von iPhone mit Tapatalk
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

Dersch

Nee das war es leider nicht. Der Date::Time Fehler ist nun weg:

2019.08.18 08:56:38 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1112.
2019.08.18 08:56:38 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1112.
2019.08.18 08:56:38 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1113.
2019.08.18 08:56:39 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in division (/) at ./FHEM/76_SMAInverter.pm line 704.


Mit SBFSpot habe ich eine Tablle mit DayData:


SELECT * FROM `DayData` LIMIT 50 OFFSET 350
Ändern         TimeStamp Serial       TotalYield Power PVoutput
bearbeiten 1566109200 2147483647 150036 468 NULL
bearbeiten 1566109500 2147483647 150100 768 NULL
bearbeiten 1566109800 2147483647 150203 1236 NULL
bearbeiten 1566110100 2147483647 150287 1008 NULL
bearbeiten 1566110400 2147483647 150421 1608 NULL
bearbeiten 1566110700 2147483647 150527 1272 NULL
bearbeiten 1566111000 2147483647 150703 2112 NULL
bearbeiten 1566111300 2147483647 150931 2736 NULL


Woran könnte das im Modul liegen?

Grüße
Dirk

DS_Starter

Hallo Dirk,

das sind inkompatibilitäten des Moduls mit dem WR-Typ.
Da muss man mit verbose 5 sich durchhangeln und versuchen es zu beseitigen.
Diese Problematik war ja der Anlass zum Einwand von Wzut weiter oben.

Es müsste nach dem verbose 5 Logeintrag:

  SMATRIPOWER - Data identifier 33310

ein Logeintrag

SMATRIPOWER - Data identifier 9729

geben. Kommt der ?

Grüße,
Heiko

ESXi@NUC+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

Dersch

Ja das ist korrekt:

2019.08.18 09:48:31 5: SMATRIPOWER - Data identifier 33310
2019.08.18 09:48:31 5: SMATRIPOWER - Found Data CLASS=8001 and TYPE=9346
2019.08.18 09:48:31 3: SMATRIPOWER - Send request 0002005400012600FF222600 to 192.168.10.70 on port 9522
2019.08.18 09:48:31 5: SMATRIPOWER - send: 534D4100000402A00000000100260010606509A07A0158BD10B30000E90023BB590700000000000003800002005400012600FF22260000000000
2019.08.18 09:48:32 5: SMATRIPOWER - Received: 534d4100000402a0000000010036001060650da0e90023bb590700a07a0158bd10b3000000000000038001020054000000000000000001012600cd02595d7a5302000000000000000000
2019.08.18 09:48:32 5: SMATRIPOWER - Data identifier 9729
2019.08.18 09:48:32 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1112.
2019.08.18 09:48:32 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1112.
2019.08.18 09:48:32 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1113.
2019.08.18 09:48:32 5: SMATRIPOWER - Found Data SPOT_ETOTAL=152442 and SPOT_ETODAY=

DS_Starter

Ja, hier sieht man:

Zitat
2019.08.18 09:48:32 5: SMATRIPOWER - Data identifier 9729
2019.08.18 09:48:32 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1112.

D.h. das Modul erwartet einen Antwortaufbau den dein WR nicht bzw. geändert liefert.
Da müssen wir in die WR-Kommunikation bzw. Protokoll einsteigen. Vllt. kann Waldmensch weiterhelfen, ich selbst tue mich damit etwas schwer momentan.
Ich schreibe Thomas mal mit PN an. Kommt mir etwas komisch vor dass er schon so lange nichts mehr hat von sich hören lassen. Frage ist ob er noch am Modul mitarbeitet oder mitarbeiten möchte.

Grüße,
Heiko
ESXi@NUC+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

Waldmensch

Also nach DS_Starters contrib Version müsste das in 1121 krachen, nicht in 1112. Die Stelle ist folgende

$inv_SPOT_ETODAY = unpack("V*", substr $data, 78, 4);

$data ist also zu kurz um bei Position 78 vier Zeichen rauszupicken

Pack doch mal in das if ein Logoutput mit rein, das wir sehen, was da kommt. Zum Beispiel so, das sollte genau vor dem Fehler noch den $data String raushauen

if($data_ID eq 0x2601) {
Log3 $name, 5, "SPOT_ETOTAL 62,4 & SPOT_ETODAY 78,4 --- $data";
     $inv_SPOT_ETOTAL = unpack("V*", substr($data, 62, 4));
$inv_SPOT_ETODAY = unpack("V*", substr $data, 78, 4);
Log3 $name, 5, "$name - Found Data SPOT_ETOTAL=$inv_SPOT_ETOTAL and SPOT_ETODAY=$inv_SPOT_ETODAY";
return (1,$inv_SPOT_ETODAY,$inv_SPOT_ETOTAL,$inv_susyid,$inv_serial);
}



Dersch

Hmm... Das sieht nun komisch aus:

19.08.18 10:40:06 5: SMATRIPOWER - Data identifier 9729
2019.08.18 10:40:06 5: SPOT_ETOTAL 62,4 & SPOT_ETODAY 78,4 --- SMA�6`e
��#�Y�zX���T&�Y]�`
2019.08.18 10:40:06 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1113.
2019.08.18 10:40:06 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1113.
2019.08.18 10:40:06 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1114.
2019.08.18 10:40:06 5: SMATRIPOWER - Found Data SPOT_ETOTAL=155784 and SPOT_ETODAY=

Waldmensch

Ah, dann ändere das mal in (statt der einen also diese beiden Zeilen)

my $received = unpack("H*", $data);
Log3 $name, 5, "SPOT_ETOTAL 62,4 & SPOT_ETODAY 78,4 --- $received";