Neu: 77_SMAEM - Modul für SMA Energie Meter. Alternative zum Sunny Home Manager.

Begonnen von Volker Kettenbach, 30 März 2016, 12:42:05

Vorheriges Thema - Nächstes Thema

300P

Hallo MiVo69,

->> Ja, aber "nur" dann wenn Du auf 2 verschiedenen Rechnern FHEM mit jeweils einen Device 77_..... laufen läßt.

Dann lauscht der eine Rechner mittels FHEM-Device auf Port 9522 für die EM und auf dem anderen Rechner mittels FHEM-Device für den HM auf dem 9522.
Aber 2 FHEM Device auf einem Rechner wird nicht sauber klappen weil beide auf dem gleichen Port lauschen wollen.


@DS_Starter:
Der Firmwarestand wird bei mir nicht ganz richtig berechnet.
Ich habe auf dem EM aktuell die Firmware-Version: 2.0.16.R
Mit dem letzten Stand wird   "FIRMWARE         02.00.10" ermittelt


Gruß
300 P



EDIT:
UPS war zu lahm beim schreiben

FHEM 6.3 - Raspberry Pi 3 / Pi 4 - VControl300 mit VITOVALOR 300P - SMAEM - SMAInverter - DbLog/DbRep - MariaDB/QNAP - div. HTTPMOD - div. Modbus ser+TCP - SolarForecast - Tibber + Ladung mit SMA-SBS25

DS_Starter

Schauen wir heute Nachmittag weiter.
Ihr könnt mal bitte verbose 5 im SMAEM einschalten. Dann wird der gesamte decoded Bytestream (600 bzw. 608 Bytes)
ins Log geschrieben.
Wenn ihr den mal postet, kann ich heute Nachmittag checken an welcher Stelle die Regex versagen und im Modul korrigieren.
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

MiVo69

Also ich habe mir nun die Mühe gemacht und 4 Module erstellt: 77_SMAEM1.pm, 77_SMAEM2.pm, 77_SMAEM3.pm und 77_SMAHM.pm.
Daraufhin habe ich auf meinem NUC 4 verschiedene Devices erstelt: TestEM1 arbeitet mit 77_SMAEM1.pm, TestEM2 arbeitet mit 77_SMAEM2.pm, TestEM3 arbeitet mit 77_SMAEM3.pm und HomeManager arbeitet mit 77_SMAHM.pm. Jedes der Devices hat eine eigene Seriennummer und ein 10s Interval
Was soll ich sagen, seit einer halben Stunde läuft jedes Device sauber im 10 Sekunden Interval...

Im Log File findeen sich zwar ein paar "Timeout for SMAEM_DoParse reached, terminated process 1097" Meldungen, die hatte ich aber vorher mit einem Device auch...
Ist mein Fhem etwas Besonderes oder kann es vielleicht doch sein das es auf dem gleichen Port funktioniert?
Gruß Michael

DS_Starter

Also die Praxis ist der Prüfstein der Theorie.  ;)
Nach meinem Verständnis _sollte_ es eigentlich Probleme geben wenn mehrere Devices denselben Port verwenden. Ich hätte jetzt vermutet, schon beim initialisieren hätte es Späne geben sollen. Aber wenn es doch funktioniert (darüber freuen wir uns) liegt es mit Sicherheit nicht an einer speziellen Hardware bei dir sondern am Coding.
Vielleicht finden wir noch eine Begründung dass es doch funktioniert.

Vergiss bitte das verbose 5 Log nicht.  :)
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

300P

Hallo Zusammen,



Vielleicht finden wir noch eine Begründung dass es doch funktioniert.


1 X / Sek sendet ein EM / HM die Broadcast-Nachricht...
...das sollte dann wohl am Coding (warte bis das Zeit XY vorbei ist) liegen das das "nächste wartende" SMAEM-Device dann wegen "Lauerstellung" dran ist und die Daten von Port 9522 zieht.

Wenn bei 4 Geräten alle 10 Sekunden - das könnte sauber klappen (10/4 =>>> 4 Device-Läufe werden benötigt - Alle könnten theoretisch 2,5 mal in 10 Sekunden drankommen )

Auswertung mit Verbose 5:
(ich habe aber nur 1 SMAEM-Device)

2019.12.13 13:45:21 4: SMAEM SMA_Energymeter -> BlockingCall SMAEM_ParseDone finished
2019.12.13 13:45:21 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:22 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:23 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:24 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:25 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:26 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:27 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:28 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:29 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:31 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:32 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:33 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:34 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:35 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:36 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:37 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:38 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired.
2019.12.13 13:45:39 5: SMAEM SMA_Energymeter: - received 600 bytes but interval 60s isn't expired..............

Gruß
300P
FHEM 6.3 - Raspberry Pi 3 / Pi 4 - VControl300 mit VITOVALOR 300P - SMAEM - SMAInverter - DbLog/DbRep - MariaDB/QNAP - div. HTTPMOD - div. Modbus ser+TCP - SolarForecast - Tibber + Ladung mit SMA-SBS25

DS_Starter

Jetzt habe ich mein SMAEM-Device so wie es ist auf ein zweites kopiert und lauft parallel auf dem gleichen Rechner mit exakt den gleichen Werten sauber neben dem anderen Device. Bisschen erstaunlich, aber wir wollen nicht meckern  :D

300P, kannst du mir bitte noch deinen verbose 5 String senden:


2019.12.13 15:25:21.165 5: SMAEM SMA_Energymeter - Buffer length 600 ready to parse:
534d4100000402a000000001024400106069010e7142eff53d49ee78000104000000112800010800000000086648ee780002040000000000000208000000000cb63d19500003040000000000000308000000000071e87ff800040400000005c50004080000000003b8958f10000904000000121a00090800000000094d51e3b0000a040000000000000a08000000000cdc157820000d0400000003b400150400000000c3001508000000000178adef70001604000000000000160800000000050b94134800170400000000000017080000000000a11d48f800180400000001250018080000000000cde66888001d040000000160001d080000000001faf85f60001e040000000000001e0800000000052ccd0ad8001f0400000001560020040000038f27002104000000022a00290400000007290029080000000003b6b55a18002a040000000000002a080000000003e51c5b90002b0400000001ee002b08000000000078c1d478002c040000000000002c0800000000007830ba60003104000000076b0031080000000003e139564000320400000000000032080000000003ec3d9ab0003304000000036100340400000390dd00350400000003c6003d04000000093c003d0800000000039d79d498003e040000000000003e0800000000042c20da20003f040000000000003f080000000000013bceb8004004000000068e00400800000000031bb0d6f00045040000000b5300450800000000047c7569a00046040000000000004608000000000456c36270004704000000062500480400000392c10049040000000330900000000102045200000000



Ich möchte das Parsing korrigieren.

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

300P

Zitat von: DS_Starter am 13 Dezember 2019, 15:30:48
Jetzt habe ich mein SMAEM-Device so wie es ist auf ein zweites kopiert und lauft parallel auf dem gleichen Rechner mit exakt den gleichen Werten sauber neben dem anderen Device. Bisschen erstaunlich, aber wir wollen nicht meckern  :D

300P, kannst du mir bitte noch deinen verbose 5 String senden:


2019.12.13 15:25:21.165 5: SMAEM SMA_Energymeter - Buffer length 600 ready to parse:
534d4100000402a000000001024400106069010e7142eff53d49ee78000104000000112800010800000000086648ee780002040000000000000208000000000cb63d19500003040000000000000308000000000071e87ff800040400000005c50004080000000003b8958f10000904000000121a00090800000000094d51e3b0000a040000000000000a08000000000cdc157820000d0400000003b400150400000000c3001508000000000178adef70001604000000000000160800000000050b94134800170400000000000017080000000000a11d48f800180400000001250018080000000000cde66888001d040000000160001d080000000001faf85f60001e040000000000001e0800000000052ccd0ad8001f0400000001560020040000038f27002104000000022a00290400000007290029080000000003b6b55a18002a040000000000002a080000000003e51c5b90002b0400000001ee002b08000000000078c1d478002c040000000000002c0800000000007830ba60003104000000076b0031080000000003e139564000320400000000000032080000000003ec3d9ab0003304000000036100340400000390dd00350400000003c6003d04000000093c003d0800000000039d79d498003e040000000000003e0800000000042c20da20003f040000000000003f080000000000013bceb8004004000000068e00400800000000031bb0d6f00045040000000b5300450800000000047c7569a00046040000000000004608000000000456c36270004704000000062500480400000392c10049040000000330900000000102045200000000



Ich möchte das Parsing korrigieren.



2019.12.13 13:46:21 5: SMAEM SMA_Energymeter - Buffer length 600 ready to parse:
534d4100000402a000000001024400106069015d71551b9fff4bb48c000104000000000000010800000000021d0e3de00002040000000b260002080000000002861ee1e0000304000000000000030800000000002e2bdaf80004040000000eb00004080000000003654ee86000090400000000000009080000000002dcefb800000a040000001270000a080000000003bd308778000d04000000025d00150400000009560015080000000002a64b7c80001604000000000000160800000000000000000000170400000000000017080000000000014e0e4800180400000004200018080000000001068ff168001d040000000a34001d080000000002ddcd17e0001e040000000000001e08000000000000000000001f0400000005db0020040000038b23002104000000039300290400000000ce002908000000000146e34d00002a040000000000002a080000000001ed2c9bd0002b040000000000002b0800000000003acf75f8002c040000000716002c0800000000015d5508f800310400000007210031080000000001dceeea480032040000000000003208000000000211c0b918003304000000045300340400000390cc0035040000000071003d040000000000003d0800000000012f43def8003e04000000154a003e0800000000039856b7b0003f040000000000003f0800000000002313d9e0004004000000037b0040080000000001326f6cf0004504000000000000450800000000015803bc5000460400000015920046080000000003bf914548004704000000099f004804000003881b00490400000003db900000000200105200000000



Geräteklasse Stromzähler
Gerätetyp SMA Energy Meter
Hersteller SMA
Softwarepaket 2.0.16.R
Update-Version des Softwarepakets -------



Version des WebUI
Software-Version 1.3.57.R
FHEM 6.3 - Raspberry Pi 3 / Pi 4 - VControl300 mit VITOVALOR 300P - SMAEM - SMAInverter - DbLog/DbRep - MariaDB/QNAP - div. HTTPMOD - div. Modbus ser+TCP - SolarForecast - Tibber + Ladung mit SMA-SBS25

DS_Starter

Hi,

habe die Versionserkennung gecheckt, sieht aber so aus dass das Modul richtig erkennt bzw. der EM/HM eine abweichende Softwareversion schickt (ganz hinten):

Zitat
534d4100000402a000000001024400106069015d71551b9fff4bb48c000104000000000000010800000000021d0e3de00002040000000b260002080000000002861ee1e0000304000000000000030800000000002e2bdaf80004040000000eb00004080000000003654ee86000090400000000000009080000000002dcefb800000a040000001270000a080000000003bd308778000d04000000025d00150400000009560015080000000002a64b7c80001604000000000000160800000000000000000000170400000000000017080000000000014e0e4800180400000004200018080000000001068ff168001d040000000a34001d080000000002ddcd17e0001e040000000000001e08000000000000000000001f0400000005db0020040000038b23002104000000039300290400000000ce002908000000000146e34d00002a040000000000002a080000000001ed2c9bd0002b040000000000002b0800000000003acf75f8002c040000000716002c0800000000015d5508f800310400000007210031080000000001dceeea480032040000000000003208000000000211c0b918003304000000045300340400000390cc0035040000000071003d040000000000003d0800000000012f43def8003e04000000154a003e0800000000039856b7b0003f040000000000003f0800000000002313d9e0004004000000037b0040080000000001326f6cf0004504000000000000450800000000015803bc5000460400000015920046080000000003bf914548004704000000099f004804000003881b00490400000003db900000000200105200000000

d.h. die 02.00.10 so wie geparst.
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

Habe eine neue Version ins contrib geladen.
@MiVo69, schau mal ob bei dir jetzt die offset-Erkennung richtig funktioniert.

Du brauchst also eigentlich das Modul nicht kopieren, sondern nur 4 Devices erstellen, hatte es vorhin bei mir probiert. Hat (erstaunlicherweise) funktioniert.
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

Bei der Versionserkennung hat noch die hex-Umwandung gefehlt -> habe ich korrigiert.  ???
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

300P

Zitat von: DS_Starter am 13 Dezember 2019, 16:58:25
Bei der Versionserkennung hat noch die hex-Umwandung gefehlt -> habe ich korrigiert.  ???

Die Firmware wird jetzt richtig erkannt:

Anzeige Explorer->>EM2.0

Geräteklasse   Stromzähler         
Gerätetyp   SMA Energy Meter         
Hersteller   SMA         
Softwarepaket   2.0.16.R         
Update-Version des Softwarepakets   -------   

Anzeige im FHEM-Device SMAEM:   

FIRMWARE 2.0.16.    (R) ??

Ich schau ob ich für das "R" einen Vorschlag machen kann  ;)

Gruß
300P
FHEM 6.3 - Raspberry Pi 3 / Pi 4 - VControl300 mit VITOVALOR 300P - SMAEM - SMAInverter - DbLog/DbRep - MariaDB/QNAP - div. HTTPMOD - div. Modbus ser+TCP - SolarForecast - Tibber + Ladung mit SMA-SBS25

DS_Starter

Sieht gut aus.
Ich überlege auch noch, ob es nicht besser wäre, die FW Version als Reading zu gestalten. Wenn man mehrere EM ausliest mit einem Device hat man gleich die Zuordnung über die angehängte  Seriennummer. Eigentlich müsste ich wohl auch noch die FW Version zweisttellig ausgeben, etwa so 1.02.04.R (ist mein Release).

Das "R" kommt nicht mit. Ich meine ich könnte es freilich einfach anhängen.
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

300P

Zitat von: DS_Starter am 13 Dezember 2019, 19:48:13
Sieht gut aus.
Ich überlege auch noch, ob es nicht besser wäre, die FW Version als Reading zu gestalten. Wenn man mehrere EM ausliest mit einem Device hat man gleich die Zuordnung über die angehängte  Seriennummer. Eigentlich müsste ich wohl auch noch die FW Version zweisttellig ausgeben, etwa so 1.02.04.R (ist mein Release).

Das "R" kommt nicht mit. Ich meine ich könnte es freilich einfach anhängen.


$hex =~ /.*90000000(.{6})5200000000$/;                            # Firmware Version extrahieren



  • "R" = HEX 52 (in meinem Fall)
  • "S" = HEX 53
  • "A" = HEX 41
  • "B" = HEX 42
  • "E" = HEX 45
  • "N" = HEX 4E
[/b]


Firmware / Softwareversion:
Die SMA Softwareversion wird wie folgt dargestellt:
Major.Minor.Build.Revision
Die Revision wird wie folgt unterschieden:
• S–SpezialVersion
• A–Alpha(nochkeinFeatureComplete,VersionfürVerifizierungundValidierung)
• B–Beta(FeatureComplete,VersionfürVerifizierungundValidierung)
• R–ReleaseCandidate/Release(VersionfürVerifizierung,ValidierungundFeldtest/öffentlicheVersion)
• E–ExperimentalVersion(dientzurlokalenVerifizierung)
• N–KeineRevision
Jede Revision ,,S", ,,A", ,,B", ,,R" und ,,E" kann innerhalb eines Tupels (Major.Minor) ihren eigenen Build-Nummernkreis verwalten. Die Revisionen ,,A", ,,B" und ,,R" werden in streng serieller Abfolge verwendet und zählen die Build-Nummer zwingend hoch. Experimental Versionen ,,E" zählen die Build-Nummer nicht hoch.


EDIT:
"E" übersehen....
FHEM 6.3 - Raspberry Pi 3 / Pi 4 - VControl300 mit VITOVALOR 300P - SMAEM - SMAInverter - DbLog/DbRep - MariaDB/QNAP - div. HTTPMOD - div. Modbus ser+TCP - SolarForecast - Tibber + Ladung mit SMA-SBS25

DS_Starter

Ach na freilich "52" .... Kommt gleich.
Werde es als Reading umbauen.
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

Habe es entsprechend umgebaut. Die Firmware Version wird nun als Reading dargestellt. Außerdem wird auch ein Reading SerialNumber generiert wenn das Attribut disableSernoInReading nicht gesetzt ist. Im anderen Fall wird die Seriennummer ja immer vor die Readingnamen integriert. Somit weiß man nun immer ob der richtige EM gelesen wird.
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