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

DS_Starter

Ich glaube es geht einfacher.
Der EM bzw. HM < 2.03.4.R Version sendet 600 Bytes, der HM >= 2.03.4.R sendet 608 Bytes.
D.h. über ein Attribut "firmWare" könnte man die Anzahl der empfangenen Bytes differenzieren und darüber den offset und die auszuwertenden Meter selektieren. Das Modul misst dann entweder alle EM oder alle HM mit der entsprechenden Firmware.
So zumindest die Theorie  ;)

Ich probiere es mal zu codieren ...
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

Ich würde die Möglichkeit mit der Seriennummer  super finden, dann könnte man auch mehrere Devices anlegen und man hätte nicht hunderte Readings zu durchforsten...
Bei einem Home Manager und 3 Energy Metern ist das wirklich schon sehr unübersichtlich bei mir.

DS_Starter

So, habe es umgesetzt und bei mir angetestet. Beim EM läuft alles wie gehabt sauber weiter.
Mit den Attributen firmwareVersion und serialNumber kann man die Einstellung entsprechend vornehmen.

Testversion in meinem contrib.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben:

"wget -qO ./FHEM/77_SMAEM.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/77_SMAEM.pm"


Danach wie gehabt reload bzw. restart.
Probier mal ...

EDIT: mehrere Devices zu definieren wird vermutlich nicht gehen da alle mit dem Port 9522 arbeiten würden.
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

Wenn ich das nun nicht falsch verstanden habe, haben wir den gleichen Stand wie bei dem Offset...
Wenn ich die Firmware > auswähle, funktioniert mein Homemanager, aber die ENergy Meter nicht mehr. Mache ich es umgekehrt, streikt der Home Manager.
Brauchen wir nicht pro Seriennummer eine Firmwareangabe? Oder habe ich was völlig falsch verstanden?
Gruß Michael

DS_Starter

Nee, ich habe einen Knoten im Hirn.  :o
Du hast natürlich recht. Man braucht zwei Devices, die man dann entspechend einstellen kann mit den jetzigen Möglichkeiten.
Vermutlich wird das aber auf denselben Port nicht klappen.
Hmm ...

Das Problem ist, dass man die Seriennummer nicht weiß bevor man sie nicht gelesen hat. Die kann man aber nur lesen wenn man die richtige Anzahl Bytes entsprechend der Firmwareversion empfangen hat. Irgendwie wie Katze und Schwanz ..
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 Heiko (DS_Starter)

Wie wär's damit
->> Weder Seriennummerfilterung noch "hartes" setzten eines Offsets löst (automatisch) das Problem.

Aber :
Bevor der Offset<>0 "gesetzt" wird Logik einbauen

IF  (am Ende des Datagrammes  siehe FETT markiert die Version "020304")
THEN Offset = XY

........
003d040000000338003d08000000000093c071d0
003e040000000000003e08000000000000000000
003f040000000000003f08000000000003167328
004004000000062d0040080000000001970e83a8
00450400000006f70045080000000001d116c3f8
0046040000000000004608000000000000000000
0047040000000311
0048040000039c0a
00490400000001ce
900000000203045200000000





Oder alternativ:

IF (am Anfang des Datagrammes  siehe FETT markiert       14   1:14.4.0   Netzfrequenz   (FW HM20: >=2.03.4.R))


......
'0001040000000ff60001080000000002bd9b6e18
0002040000000000000208000000000215c8a160
0003040000000000000308000000000000ddc250
000404000000163600040800000000058dbeaf68
0009040000001b5a0009080000000004f73e9f08
000a040000000000000a080000000003a04bfa70
000d040000000248
000e04000000c378
00150400000002ef0015080000000000f73af370
0016040000000000001608000000000000000000
001704000000000000170800000000000bee0330
00180400000002a8

THEN Offset = XY



Aber auch jedesmal wieder beim Schleifenbeginn Offset = 0

8)    :)


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

Jo, danke 300P. In der Zwischenzeit habe ich es so umgebaut, dass abhängig von der Anzahl der empfangenen Bytes 600 vs. 608 die Entscheidung getroffen wird. Vorher wurde fix 600 abgerufen.

Probierts mal bitte aus. Wieder in meinem conrtrib. Das Attr firmwareVersion gibt es nicht mehr.

Ich probiere auch gleich noch deinen Vorschlag 300P ....
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 12 Dezember 2019, 20:39:51
Jo, danke 300P. In der Zwischenzeit habe ich es so umgebaut, dass abhängig von der Anzahl der empfangenen Bytes 600 vs. 608 die Entscheidung getroffen wird. Vorher wurde fix 600 abgerufen.

Probierts mal bitte aus. Wieder in meinem conrtrib. Das Attr firmwareVersion gibt es nicht mehr.

Ich probiere auch gleich noch deinen Vorschlag 300P ....

Vorteil bei Alternative B wäre, das es allein davon abhängig ist ,das "wenn denn der Wert 14.04 (HEX 0E04) geliefert würde ein Offset hinzugerechnet würd... 
Das wäre dann für die Zukunft ausbaufähig .. ??!!!
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 es mit dem Suchstring HEX 0E04 realisiert. Bin gespannt ob es 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

300P

Zitat von: DS_Starter am 12 Dezember 2019, 21:42:20
Jetzt habe ich es mit dem Suchstring HEX 0E04 realisiert. Bin gespannt ob es funktioniert.  ;)

Beim EM ist es alles okay

Kleiner Wunsch als "Kontrollfreak"

   if($1 eq "000e04") {
        $grid_freq = hex($2)/1000;
        $offset = 16;
    }   
   Log3 ($name, 4, "SMAEM $name - Offset = $offset");


Gruß
300P

   

Ps:Feierabend für Heute   
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

Habs erledigt. Es wird noch die Internals MODEL und FIRMWARE aus dem Parsing erstellt. Zumindest für EM klappts schonmal.
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

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

Hab noch eine Meldung "not initialized" und einen verbose 1 Logeintrag entfernt.
Liegt im contrib.

Bitte  :D

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

MiVo69

Guten Morgen,
muß ich noch ein Attribut setzen, oder sollte es automatisch gehen?
Meine Energy Meter funktionieren, mein Home Manager leider nicht. Das Internal Model scheint korrekt auf HM > xxxx zu wechseln, die Auswertung scheint aber nach altem, falschem Energy Muster ohne Offset zu sein.


Ich habe übrigens mir einmal das Modul als 77_SMAHM.pm kopiert, und im Modul an allen Stellen SMAEM durch SMAHM ersetzt. Dieses Modul habe ich mir auf den Nuc kopiert und dort ein eigenes Device "HomeManager" angelegt. Dieses Device habe ich mit der Seriennummer meines HM gefüttert und es sieht so aus als wenn aktuell beide Devices klaglos mit dem Multicast umgehen. Zwar ist wiegesagt anscheinend der Offset im Modul noch falsch, aber auswerten tun beide Module. Dann kann man sich doch idealerweise für ein SMA Gerät immer ein eigenes Device machen und das mit der jeweiligen Seriennummer füttern, oder habe ich da einen Denkfehler?
Gruß Michael


DS_Starter

Guten Morgen,

du brauchst keine Attribute mehr setzen Michael, aber die Offseterkennung funktioniert dann noch nicht wie gewünscht.
Heute Nachmittag kann ich weitermachen.
ZitatDann kann man sich doch idealerweise für ein SMA Gerät immer ein eigenes Device machen und das mit der jeweiligen Seriennummer füttern, oder habe ich da einen Denkfehler?
Das kann man so machen, deswegen würde ich das attr serialNumber auch im Modul lassen. Ist von Vorteil denke ich.
Aber das funtioniert m.M. nach nur wenn sich diese Devices auf verschiedenen FHEM Servern befinden. Sollte ich mich täuschen wäre es umso besser.

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