76_SMAInverter.pm - Abfrage von SMA Wechselrichter

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

Vorheriges Thema - Nächstes Thema

DS_Starter

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

Wzut

also schaut bis jetzt gut aus.
Wenn du mal wirklich nicht mehr weisst was du noch tun sollst oder extreme Langweile hast :
%SMAInverter_devtypes aufbohren das dort ausser dem Namen noch Felder für Anzahl Phasen und Strings dazukommen und dann bei den Readings nicht vorhandene Werte aufgrund der Bauart des WS erst gar nicht angezeigt werden :)
Bsp. der SB1500 hat nur eine Phase und einen String Eingang aber Readings für drei Phasen und zwei Eingänge.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

DS_Starter

#692
Hi Wzut,

schöne Idee, danke. Ist mal was für lange Winterabende.  :)

EDIT: Habe es auf meine ToDo-Liste gesetzt.

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

Xguide

Zitat von: Xguide am 27 August 2019, 14:01:36
Hallo Heiko,

das Ganze wird von meiner SMA Infrastruktur hervorgerufen, kommt aber nicht vom Portal. OT, aber vielleicht kann ich es ja dennoch mit deinem Tipp sofort abstellen.
Es beginnt im Log mit dem Erreichen der opertime_stop und endet um 23:59:59. Deute ich den stacktrace nun richtig, das es am notify liegt?


2019.08.26 21:08:34 1: PERL WARNING: Use of uninitialized value $_ in substitution (s///) at /opt/fhem//FHEM/Blocking.pm line 238.
2019.08.26 21:08:34 1: eval: my $EVTPART0='Einspeisung_Wirkleistung:';my $SELF='Notify_SMA_EnergyMeter';my $EVTPART1='2.1';my $EVENT='Einspeisung_Wirkleistung: 2.1';my $NAME='SMA_EnergyMeter';my $TYPE='SMAEM';{ 
  Log 5, "Notify_SMA_EnergyMeter: Notify triggert with event: ".$EVENT;
  my $tsNow = sprintf("%02d:%02d:%02d",$hour, $min, $sec);
  my $tsInvDayStart = substr(ReadingsVal("SMA_TriPower10","opertime_start","06:00:00"),11,8);
  my $tsInvDayEnd = substr(ReadingsVal("SMA_TriPower10","opertime_stop","23:00:00"),11,8);
  Log 5, "Notify_SMA_EnergyMeter: timestamp now: ".$tsNow;
  Log 5, "Notify_SMA_EnergyMeter: opertime_start: ".$tsInvDayStart;
  Log 5, "Notify_SMA_EnergyMeter: opertime_stop: ".$tsInvDayEnd; 
  if (($tsNow gt $tsInvDayStart) &&  ($tsNow lt $tsInvDayEnd))
  {
    if (ReadingsVal("Dummy_PVprocessing","state", 0) eq "1")
    {
      Log 3, "Notify_SMA_EnergyMeter: Processing PV & Battery Inverter data!"; 
      fhem "set Dummy_PVprocessing 2";
    }
    fhem "get SMA_TriPower10 data;sleep 1.0;get SMA_SunnyIsland data";
  }
  else
  {
    if (ReadingsVal("Dummy_PVprocessing","state", 0) eq "2")
    {
      Log 3, "Notify_SMA_EnergyMeter: Processing Battery Inverter data only!";
      fhem "set Dummy_PVprocessing 1";
    } 
    fhem "get SMA_SunnyIsland data";
  }
}
2019.08.26 21:08:34 1: stacktrace:
2019.08.26 21:08:34 1:     main::__ANON__                      called by /opt/fhem//FHEM/Blocking.pm (238)
2019.08.26 21:08:34 1:     main::BlockingInformParent          called by /opt/fhem//FHEM/76_SMAInverter.pm (578)
2019.08.26 21:08:34 1:     main::SMAInverter_getstatusDoParse  called by /opt/fhem//FHEM/Blocking.pm (194)
2019.08.26 21:08:34 1:     main::BlockingStart                 called by /opt/fhem//FHEM/Blocking.pm (107)
2019.08.26 21:08:34 1:     main::BlockingCall                  called by /opt/fhem//FHEM/76_SMAInverter.pm (499)
2019.08.26 21:08:34 1:     main::SMAInverter_GetData           called by /opt/fhem//FHEM/76_SMAInverter.pm (391)
2019.08.26 21:08:34 1:     main::SMAInverter_Get               called by fhem.pl (3753)
2019.08.26 21:08:34 1:     main::CallFn                        called by fhem.pl (1958)
2019.08.26 21:08:34 1:     main::CommandGet                    called by fhem.pl (1236)
2019.08.26 21:08:34 1:     main::AnalyzeCommand                called by fhem.pl (1089)
2019.08.26 21:08:34 1:     main::AnalyzeCommandChain           called by fhem.pl (3793)
2019.08.26 21:08:34 1:     main::fhem                          called by (eval 30026) (25)
2019.08.26 21:08:34 1:     (eval)                              called by fhem.pl (1135)
2019.08.26 21:08:34 1:     main::AnalyzePerlCommand            called by fhem.pl (1160)
2019.08.26 21:08:34 1:     main::AnalyzeCommand                called by fhem.pl (1089)
2019.08.26 21:08:34 1:     main::AnalyzeCommandChain           called by /opt/fhem//FHEM/91_notify.pm (121)
2019.08.26 21:08:34 1:     main::notify_Exec                   called by fhem.pl (3753)
2019.08.26 21:08:34 1:     main::CallFn                        called by fhem.pl (3673)
2019.08.26 21:08:34 1:     main::DoTrigger                     called by fhem.pl (4736)
2019.08.26 21:08:34 1:     main::readingsEndUpdate             called by /opt/fhem//FHEM/77_SMAEM.pm (673)
2019.08.26 21:08:34 1:     main::SMAEM_ParseDone               called by (eval 30014) (1)
2019.08.26 21:08:34 1:     (eval)                              called by fhem.pl (1135)
2019.08.26 21:08:34 1:     main::AnalyzePerlCommand            called by fhem.pl (1160)
2019.08.26 21:08:34 1:     main::AnalyzeCommand                called by fhem.pl (1089)
2019.08.26 21:08:34 1:     main::AnalyzeCommandChain           called by /opt/fhem//FHEM/98_telnet.pm (255)
2019.08.26 21:08:34 1:     main::telnet_Read                   called by fhem.pl (3753)
2019.08.26 21:08:34 1:     main::CallFn                        called by fhem.pl (748)
2019.08.26 21:08:34 1: PERL WARNING: Use of uninitialized value $_ in concatenation (.) or string at /opt/fhem//FHEM/Blocking.pm line 238.
2019.08.26 21:08:34 1: eval: my $EVTPART0='Einspeisung_Wirkleistung:';my $SELF='Notify_SMA_EnergyMeter';my $EVTPART1='2.1';my $EVENT='Einspeisung_Wirkleistung: 2.1';my $NAME='SMA_EnergyMeter';my $TYPE='SMAEM';{ 
  Log 5, "Notify_SMA_EnergyMeter: Notify triggert with event: ".$EVENT;
  my $tsNow = sprintf("%02d:%02d:%02d",$hour, $min, $sec);
  my $tsInvDayStart = substr(ReadingsVal("SMA_TriPower10","opertime_start","06:00:00"),11,8);
  my $tsInvDayEnd = substr(ReadingsVal("SMA_TriPower10","opertime_stop","23:00:00"),11,8);
  Log 5, "Notify_SMA_EnergyMeter: timestamp now: ".$tsNow;
  Log 5, "Notify_SMA_EnergyMeter: opertime_start: ".$tsInvDayStart;
  Log 5, "Notify_SMA_EnergyMeter: opertime_stop: ".$tsInvDayEnd; 
  if (($tsNow gt $tsInvDayStart) && ($tsNow lt $tsInvDayEnd))
  {
    if (ReadingsVal("Dummy_PVprocessing","state", 0) eq "1")
    {
      Log 3, "Notify_SMA_EnergyMeter: Processing PV & Battery Inverter data!"; 
      fhem "set Dummy_PVprocessing 2";
    }
    fhem "get SMA_TriPower10 data;sleep 1.0;get SMA_SunnyIsland data";
  }
  else
  {
    if (ReadingsVal("Dummy_PVprocessing","state", 0) eq "2")
    {
      Log 3, "Notify_SMA_EnergyMeter: Processing Battery Inverter data only!";
      fhem "set Dummy_PVprocessing 1";
    } 
    fhem "get SMA_SunnyIsland data";
  }
}
2019.08.26 21:08:34 1: stacktrace:
2019.08.26 21:08:34 1:     main::__ANON__                      called by /opt/fhem//FHEM/Blocking.pm (238)
2019.08.26 21:08:34 1:     main::BlockingInformParent          called by /opt/fhem//FHEM/76_SMAInverter.pm (578)
2019.08.26 21:08:34 1:     main::SMAInverter_getstatusDoParse  called by /opt/fhem//FHEM/Blocking.pm (194)
2019.08.26 21:08:34 1:     main::BlockingStart                 called by /opt/fhem//FHEM/Blocking.pm (107)
2019.08.26 21:08:34 1:     main::BlockingCall                  called by /opt/fhem//FHEM/76_SMAInverter.pm (499)
2019.08.26 21:08:34 1:     main::SMAInverter_GetData           called by /opt/fhem//FHEM/76_SMAInverter.pm (391)
2019.08.26 21:08:34 1:     main::SMAInverter_Get               called by fhem.pl (3753)
2019.08.26 21:08:34 1:     main::CallFn                        called by fhem.pl (1958)
2019.08.26 21:08:34 1:     main::CommandGet                    called by fhem.pl (1236)
2019.08.26 21:08:34 1:     main::AnalyzeCommand                called by fhem.pl (1089)
2019.08.26 21:08:34 1:     main::AnalyzeCommandChain           called by fhem.pl (3793)
2019.08.26 21:08:34 1:     main::fhem                          called by (eval 30026) (25)
2019.08.26 21:08:34 1:     (eval)                              called by fhem.pl (1135)
2019.08.26 21:08:34 1:     main::AnalyzePerlCommand            called by fhem.pl (1160)
2019.08.26 21:08:34 1:     main::AnalyzeCommand                called by fhem.pl (1089)
2019.08.26 21:08:34 1:     main::AnalyzeCommandChain           called by /opt/fhem//FHEM/91_notify.pm (121)
2019.08.26 21:08:34 1:     main::notify_Exec                   called by fhem.pl (3753)
2019.08.26 21:08:34 1:     main::CallFn                        called by fhem.pl (3673)
2019.08.26 21:08:34 1:     main::DoTrigger                     called by fhem.pl (4736)
2019.08.26 21:08:34 1:     main::readingsEndUpdate             called by /opt/fhem//FHEM/77_SMAEM.pm (673)
2019.08.26 21:08:34 1:     main::SMAEM_ParseDone               called by (eval 30014) (1)
2019.08.26 21:08:34 1:     (eval)                              called by fhem.pl (1135)
2019.08.26 21:08:34 1:     main::AnalyzePerlCommand            called by fhem.pl (1160)
2019.08.26 21:08:34 1:     main::AnalyzeCommand                called by fhem.pl (1089)
2019.08.26 21:08:34 1:     main::AnalyzeCommandChain           called by /opt/fhem//FHEM/98_telnet.pm (255)
2019.08.26 21:08:34 1:     main::telnet_Read                   called by fhem.pl (3753)
2019.08.26 21:08:34 1:     main::CallFn                        called by fhem.pl (748)


Danke für die Unterstützung,

Marcel

UPDATE:

Habe das Notify schon mal angepasst, denke aber nicht das es den Fehler verursacht....


SMA_EnergyMeter:Einspeisung_Wirkleistung:.* { 
  Log 5, "Notify_SMA_EnergyMeter: Notify triggert with event: ".$EVENT;
  my $modulstate = ReadingsVal("SMA_TriPower10","modulstate","undef");
  if ($modulstate eq "normal")
  {
    fhem "get SMA_TriPower10 data;sleep 1.0;get SMA_SunnyIsland data";
  }
  elsif ($modulstate eq "sleep")
  {
    fhem "get SMA_SunnyIsland data";
  }
  else
  {
    Log 1, "Notify_SMA_EnergyMeter: Unexpected modulstate: ".$modulstate; 
  }
}


Zitat von: DS_Starter am 27 August 2019, 14:59:11
Hallo Marcel,

es hat mit ziemlicher Sicherheit etwas mit meiner kürzlichen Implementierung der ETODAY Berechnung im Invertermodul zu tun.
Allerdings kommt das Prob wohl erst durch dein Konstrukt zum Vorschein denn bei mir gibt es keine Fehler im Log.
Schaue ich mir heute Abend an.

Grüße,
Heiko

Ich ziehe dann mal mit dem Thema in den richtigen Thread, oder kann jemand die Beiträge aus "76_SMAPortal - Integration SMA Sunny Portal - Ideen & Modulweiterentwicklung" verschieben?

@Heiko, da bin ich ja mal gespannt, ich kann mir gar keinen Reim darauf machen...
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 -

DS_Starter

Hi Marcel,

Ursache habe ich (vermutlich) gefunden. Es konnte unter Umständen ein "undef" dem BlockingInformParent übergeben werden wenn kein Reading etotal oder SPOT_ETOTAL vorhanden ist.
Eins von beiden sollte eigentlich immer existieren, aber vielleicht gibt es Fälle wo dies nicht so ist. Vielleicht bei deinem SMA_SunnyIsland ?

Das Prob sollte mit der Version 2.13.2 in meinem contrib behoben sein. Teste mal bitte.

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

Xguide

Hallo Heiko,

werde ich gleich (ca. 20 Min) ausprobieren. Sleep ist heute ab 21:05. Wollte erst kurz das Notify testen, bzw. die Änderungen daran.
Melde mich gleich dazu. Danke schon mal für deine Bemühungen...

Gruß Marcel
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 -

Xguide

Hallo Heiko,

das hat geholfen! Funktioniert super  :)

Gruß Marcel
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 -

DS_Starter

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

B.Stromberg

Hallo!
Hat jemand mit dem Modul einen Sunny Tripower 8.0 bzw. 10.0 am Laufen?

Bekomme im Moment (okay, es ist Nacht) nur folgende Readings angezeigt:


modulstate sleep 2019-08-28 03:51:13
opertime_start 28.08.2019 05:50:56 2019-08-28 03:51:13
opertime_stop 28.08.2019 20:56:33 2019-08-28 03:51:13
state done 2019-08-28 03:51:13
Tripower10.0


Oder kommen da erst Readings wenn es wieder hell wird?
Ich weiß nicht ob bekannt, der WR hat sowohl einen Benutzer sowie einen Installateur Zugang.
Habe beide versucht, die Readings sind immer gleich


DS_Starter

ZitatOder kommen da erst Readings wenn es wieder hell wird?
Nachts ist der Sleep-Modus aktiv. Du kannst suppressSleep=1 setzen um trotzdem der WR abzufragen.
Nach dem Beginn der Operation Time (Reading opertime_start) sollte sich das Bild ändern.

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

Xguide

Zitat von: B.Stromberg am 28 August 2019, 03:54:37
Hat jemand mit dem Modul einen Sunny Tripower 8.0 bzw. 10.0 am Laufen?

Hallo B.Stromberg,

sind die Daten jetzt gekommen?
Ja, ich habe einen STP-10000-TL20 und der läuft super mit dem Modul. Der hintere Teil "TL20" gibt Auskunft über die Generation des Geräts, sei so nett und lass uns doch mal wissen welchen Du genau hast.
Der Typ sollte dann auch im Reading INV_TYPE angezeigt werden, insofern richtig hinterlegt.

@Heiko, könnten wir nicht die $inv_TYPE ID vor Umwandlung irgendwo anzeigbar machen, meines erachtens nach ist die ID nur im Log(5) für den Benutzer zu sehen.

    Log3 $name, 5, "$name - Found Data CLASS=$inv_CLASS and TYPE=$inv_TYPE";

Somit könnten die Benutzer relativ schnell die Informationen zur Vervollständigung der %SMAInverter_devtypes bereitstellen.

Gruß Marcel
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 -

DS_Starter

Moin Marcel,

gibts schon. Solte der Typ nicht ermittelt werden können, steht statt dessen die ID im INV_TYPE.
Dann kann man das problemlos nachtragen.

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

Xguide

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 -

B.Stromberg

Hallo!
Bekomme leider folgende Fehlermeldung:

2019-08-28 11:29:12 SMAInverter Tripower10.0 Login failed
2019-08-28 11:29:12 SMAInverter Tripower10.0 modulstate: login failed


Habe beide Zugänge versucht, also einmal das Passwort vom Benutzer und einmal das von Installateur.
Hängt es evtl. auch damit zusammen?
Zum Login benötige ich einen User?

Hier mal die Daten vom WR:

Zitat
Gerätename   STP10.0-3AV-40 298         
Geräteklasse   Solar-Wechselrichter         
Gerätetyp   SUNNY TRIPOWER 10.0         
Nennstrom   14,500 A         
Neues Update verfügbar   -------         
Hersteller   SMA         
Softwarepaket   1.1.18.R

Xguide

Ufff, das ist schon so lange her und das Passwortprozeder hat sich stark verändert.

Hast du das hier gelesen?


pin: password of the inverter. Default is 0000.
inverter without webinterface: The password for the inverter can be changed by "Sunny Explorer" Client Software
inverter with webinterface: The password changed by the webinterface is also valid for the device definition.
hostname/ip: Hostname or IP-Adress of the inverter (or it's speedwire piggyback module).
The Speedwire port is 9522 by default. A Firewall has to allow connection on this port if present !
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 -