76_SMAInverter.pm - Abfrage von SMA Wechselrichter

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

Vorheriges Thema - Nächstes Thema

Xguide

Danke für für die Erklärung! Das passt!


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 -

Waldmensch

@Dersch: Da die Antwort einfach nicht lang genug ist, kannst Du nur den Fehler umschiffen und ETODAY erstmal auf 0 setzen

ungetestet:

if($data_ID eq 0x2601) {
$inv_SPOT_ETOTAL = unpack("V*", substr($data, 62, 4));
if (length($data) >= 82){
$inv_SPOT_ETODAY = unpack("V*", substr ($data, 78, 4));
} else {
$inv_SPOT_ETODAY = 0;
}
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);
}


@DS_Starter: wenn das so lauffähig ist, kannst Du das erst mal so ins contrib packen. Du siehst ja was der Code machen soll.

Xguide

@Waldmensch, hast du noch mal die Chance mit SBFspot zu vergleichen, dort hat es bei Dersch ja funktioniert.


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

Zitat von: Waldmensch am 18 August 2019, 13:39:40
@Dersch: Da die Antwort einfach nicht lang genug ist, kannst Du nur den Fehler umschiffen und ETODAY erstmal auf 0 setzen

ungetestet:

if($data_ID eq 0x2601) {
$inv_SPOT_ETOTAL = unpack("V*", substr($data, 62, 4));
if (length($data) >= 82){
$inv_SPOT_ETODAY = unpack("V*", substr ($data, 78, 4));
} else {
$inv_SPOT_ETODAY = 0;
}
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);
}


@DS_Starter: wenn das so lauffähig ist, kannst Du das erst mal so ins contrib packen. Du siehst ja was der Code machen soll.

Ja so bleibt zumindest die Fehlermeldung im Log aus.

Dersch

Zitat von: Xguide am 18 August 2019, 13:45:10
@Waldmensch, hast du noch mal die Chance mit SBFspot zu vergleichen, dort hat es bei Dersch ja funktioniert.


Gesendet von iPhone mit Tapatalk

Da muss ich mich wohl nochmal korrigieren. Habe mir die SPFSpot Daten nochmal genau angesehen und vorhin nicht richtig interpretiert:

EToday ist auch hier empty...

SELECT * FROM `SpotData` LIMIT 50

Ändern TimeStamp     Serial     Pdc1 Pdc2 Idc1 Idc2 Udc1 Udc2 Pac1 Pac2 Pac3 Iac1 Iac2 Iac3 Uac1 Uac2 Uac3 EToday ETotal Frequency OperatingTime FeedInTime BT_Signal Status GridRelay Temperature
bearbeiten 1565947489 2147483647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ? ? 0
bearbeiten 1565948608 2147483647 629 629 1.954 1.951 322.26 322.75 408 409 415 1.762 1.756 1.775 232.59 234.08 235.13 0 111726 50.01 56.6567 54.4917 0 OK Closed 0
bearbeiten 1565948806 2147483647 2096 2162 5.39 5.553 388.9 389.62 1388 1400 1405 5.955 5.953 5.994 233.45 235.59 234.97 0 111872 50 56.7114 54.5464 0 OK Closed 0
bearbeiten 1565949002 2147483647 917 924 2.81 2.868 326.95 322.52 601 603 605 2.576 2.585 2.598 234.22 234.3 234.12 0 112090 50 56.7661 54.6011 0 OK Closed 0
bearbeiten 1565949301 2147483647 2071 2188 5.807 6.122 356.8 357.52 1397 1400 1403 5.991 5.985 6.019 233.44 234.45 233.65 0 112419 50.02 56.8492 54.6842 0 OK Closed 0
bearbeiten 1565949602 2147483647 898 925 2.667 2.915 336.94 317.53 592 593 597 2.535 2.541 2.562 234.2 234.31 233.98 0 112763 50.03 56.9328 54.7678 0 OK Closed 0

Waldmensch

SFBSpot funktioniert etwas anders. Das "stolpert" alle Antworten byteweise durch und versucht indikatoren zu finden (im Screenshot blau, zu finden in SPFSpot.h). Es kann also sein, dass der WR den ETODAY in einem anderen command liefert. Das Plugin sucht aber nur in genau diesem Command. SPFSpot würde den Indikator auch in jedem anderen command finden. Das ist ein Designproblem im Plugin, das sich wohl ohne grundlegenden Umbau nicht lösen lässt.

Man könnte sich allerdings in den anderen Antworten mal auf die Suche nach 2226 machen. Sollte was zu finden sein, muss ETODAY halt an dieser Stelle befüllt werden.



Dersch


Xguide

Hmmm, nur überflogen aber geht daraus nicht hervor, dass der WR bei falscher firmware den Wert nicht liefert?


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

Ja wird an einer Stelle gesagt. Aber ich habe die aktuellste 2.13.33.R

SPFspot sagt dort auch das:

SBFspot takes Total Yield from daydata table, not from spotdata. PVOutput calculates power and generation from this value (over 5min time span)
Spotdata is only used for temperture (if available) and AC/DC voltage and current.
Don't know if it is really necessary to calculate EToday?


Das waren die Werte bei denen ich vorhin annahm es wäre EToday... Aber im Modul hier habe ich das nicht.

Xguide

Wenn der WR das nicht liefert, dann können wir da auch nichts dran ändern. Allerdings ist das kein Weltuntergang, da wir den Gesamtzähler haben. Ergo kann man den Wert selber im notify bilden oder es wird entschieden, das für betroffene WR mit im Modul zu integrieren.

Beides kein Hexenwerk...

Mit den Erkenntnissen darf die  Fehlermeldung in der vorliegenden Form nicht auftauchen.


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 -

Waldmensch

Jopp, ETODAY ist ja immer die Differenz von ETOTAL now zu ETOTAL 0:00 Uhr


Gesendet von iPhone mit Tapatalk

DS_Starter

In meinem contrib befindet sich die Version 2.12.0.
Sollte kein ETOTAL oder ETODAY vom WR geliefert werden, wird eine Warning im Log mit verbose 3 generiert (damit der User Bescheid weiß) und der Wert auf 0 gesetzt damit kein Fehler kommt.

<name> - WARNING - SPOT_ETOTAL wasn't deliverd ... set it to "0" !
<name> - WARNING - SPOT_ETODAY wasn't deliverd ... set it to "0" !

Man kann dann verbose auf 2 setzen sobald man sich klar ist über die Situation.

Außerdem habe ich die Commandref überarbeitet. Die direkte Attributhilfe funktioniert und das neue Verhalten zum automatischen setzen der target-* Attribute ist dokumentiert.

Probiert mal.

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

Mit dem Modul aus deinem Contrib sieht es mit Verbose 3 so aus:

2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00020058001E8200FF208200 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 0002005400012600FF222600 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 1: PERL WARNING: substr outside of string at ./FHEM/76_SMAInverter.pm line 1127.
2019.08.18 18:47:00 1: PERL WARNING: Use of uninitialized value in unpack at ./FHEM/76_SMAInverter.pm line 1127.
2019.08.18 18:47:00 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in concatenation (.) or string at ./FHEM/76_SMAInverter.pm line 1132.
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00028053001E2500FF1E2500 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 0002005100404600FF424600 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00020051003F2600FF3F2600 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00020051005A2900FF5A2900 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Format of inverter response does not fit.
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00028053001F4500FF214500 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 0002005100484600FF554600 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00020051001E4900FF5D4900 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Format of inverter response does not fit.
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 0002005100574600FF574600 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00020054002E4600FF2F4600 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 0002005200772300FF772300 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Format of inverter response does not fit.
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00020051001E4100FF204100 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 00020051002A8300FF2A8300 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Format of inverter response does not fit.
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 0002805100644100FF644100 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 3: SMATRIPOWER - Send request 0002805100482100FF482100 to 192.168.10.70 on port 9522
2019.08.18 18:47:00 1: PERL WARNING: Use of uninitialized value $inv_SPOT_ETODAY in division (/) at ./FHEM/76_SMAInverter.pm line 715.

DS_Starter

Hast du eventuell ein reload oder restart vergessen ?
Der Fehler darf nicht mehr kommen da über ein eval abgefangen und der Log-Eintrag fehlt auch.
Habe das Modul auch nochmal hochgeladen, nicht das ich das falsche erwischt habe  ???
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

Ich würde versuchen, 0:00 das ETOTALyesterday in einem Reading abzulegen. Falls kein ETODAY verfügbar ist, dann einfach die Differenz aus ETOTAL und dem gemerkten ETOTALyesterday in ETODAY schreiben. Den Enduser interessiert doch eigentlich gar nicht, wie der Wert zustande kommt. Im Ergebnis sollte ja der gleiche Wert rauskommen.


Gesendet von iPhone mit Tapatalk