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

Bruno_123

Hallo zusammen,

habe erfolgreich Energy Meter und Wechselrichter in FHEM eingebunden.
Jetzt möchte ich noch zwei weitere SMA Energy Meter in FHEM einbinden?
Wie kann ich es machen?
Über eure Unterstützung würde ich mich sehr freuen!

Danke und viele Grüße
Bruno


MiVo69

Hallo,
ich habe 2 Energy Meter in einem Netzwerk installiert, habe aber das Problem, dass entweder das eine oder das andere Energy Meter kontinuirlich ausgelesen wird. Manchmal gibt es trotz 2 Sekunden Intervall fast 10 Minuten keine neuen Daten. Dann wird es plötzlich wieder aktualisiert, dafür dann aber das andere wieder nicht...
Hat jemdand eine Idee woran das liegen könnte?
Wäre es vielleicht nicht auch sinnvoller zu dem Device eine SMA Seriennummer zu hinterlegen und wer dann mehrere Energy Meter installiert hat dann einfach mehrere Devices definiert?
Dann gibt es auch nicht so viele Readings unter einem Gerät...
Gruß Michael

DS_Starter

Hallo Bruno und Michael,

eigentlich sind eure beiden Fragen im Zusammenhang zu sehen.
Das Modul SMAEM öffnet einen Netzwerksocket für den Port 9522/UDP. Das klappt aber nur einmal pro Rechner. Es wird wahrscheinlich mit Fehler enden wenn man versucht 2 SMAEM-Devices parallel auf einem Rechner zu definieren.
Das Device lauscht dann ständig auf diesen Port und die Multicast-Adresse 239.12.255.254 auf der alle SMAEM ihre Werte senden. Die Meter unterscheiden sich dann lediglich durch ihre Serialnummer. Diese wird den Readings vorangesetzt um die Unterscheidung herbeizuführen (wenn man mehrere SMA-Meter hat).

Wir hatten bis jetzt, glaube ich, noch nicht den Fall dass mehrere Meter installiert waren. Wenn ich die Beschreibung von Michael richtig deute, wird hier eine Schwäche des Moduls deutlich. Die Intervall-Einstellung arbeitet nicht sensitiv bezüglich der Seriennummer, d.h. wurde der Wert des SMAEM1 empfagen, wird solange nichts mehr aktualisiert bis das Intervall abgelaufen ist, unabhängig davon ob SMAEM2 in dier Zeit Werte aussendet und aktualisiert wurde. Das kann m.M. nach zu diesem beschriebenen Fehlerbild führen.

Allerdings fällt mir addhoc keine Lösungsmöglichkeit  ein.
Vielleicht hat Volker (der Modulowner) eine Idee.
Ich denke trotzdem noch darüber nach....

Grüße
Heiko

Proxmox+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

Volker Kettenbach

Heikos Theorie klingt gut: es müsste pro Seriennummer ein Timer geführt werden.
Ich habe aber keine Zeit, das zu implementieren. Heiko?

DS_Starter

Hi Volker,

Zitates müsste pro Seriennummer ein Timer geführt werden.
Ja, sehe ich auch so. Aber ich weiß nicht wie wir das umsetzen können.

Es müsste nämlich aus dem Datenfluss des Meter jedesmal erst die Seriennummer extrahiert werden um dann zu entscheiden ob das Interval abgelaufen ist oder nicht. Prinzipiell auch nicht das Problem ... aber die Daten werden jede Sekunde pro Meter gesendet. D.h. das Modul (fhem) müßte jede Sekunde den Datenstrom auswerten um dann zu entscheiden.
Das sollte ja eigentlich mit dem Intervalltimer unterbunden werden aus Performancegründen. Vermutlich macht der FHEM-Server (meist ja ein Raspi) in diesem Fall dann nichts anderes mehr als diese Daten auszuwerten.
Hmm... irgendiwe nicht befriedigend und deshalb bin ich etwas ideenlos ....

EDIT: Ich glaube ich habe einen Lösungsansatz. Ich probiere mal was und dann schauen wir ob das performancetechnisch auch gut funktioniert.
         Habt aber ein bisschen Gedumld, wird sicherlich erst am WE.

Grüße
Heiko
Proxmox+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 Heiko & Volker,
toll dass ihr euch so schnell kümmert.
Gerne würde ich helfen, leider bin ich aber programmiertechnisch noch ziemlich unterentwickelt.
Sollte es zum Wochenende bereits einen Lösungsansatz geben, werde ich anschließend gerne den Tester spielen, denn mit mehreren Energy Metern scheine ich ja fast mit Bruno alleine auf weiter Flur zu sein.
Gruß Michael


DS_Starter

Hallo Bruno und Michael, @all,

ich habe euch eine Testversion angehängt.
Mit der sollte zumindest erst einmal das Update bzw. Readingserstellung für jeden Meter grundsätzlich funktionieren. Es sollten dann auch mehrere Internals LASTUPDATE, ergänzt um die SerialNumber, auftauchen (z.b. LASTUPDATE_1900212213).
@Bruno, bei dir sollten dann entsprechend für alle drei Meter die Readings erswcheinen (wird dann ziemlich viel).
Die Version ist noch nicht ausprogrammiert, z.b. werden die Differenz-Readings (*_Diff) nicht richtig funktionieren.

Aber mir kommt es erst einmal darauf an zu sehen ob der von mir eingeschlagene Weg zielführend ist.

Ladet euch mal bitte diese Version, benennt sie um (77_SMAEM.pm) und startet FHEM durch. Bei mir, mit einem Meter, ist die V abwärtskompatibel.

Schaut euch auch mal die Performance mit apptime an:

apptime funktion all

und sucht dann nach "SMAEM_Read". Bei mir sind es max. 14 ms und im Durchschnitt 0.19

SMA_Energymeter                          SMAEM_Read                              14  46382     8930     0.19

Gebt mir bitte Feedback. Wenn das soweit wie gewünscht klappt, mache ich mich daran die Version rund zu programmieren. Ihr könnt sie natürlich dann solange weiternutzen wenn ihr die *-Diff-Readings nicht benötigt.

Grüße
Heiko
Proxmox+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

Hallo Heiko,
habe soeben die Version mal eingespielt.
Die Lastupdate Internals sind da, die Aktualisierung der Readings scheint aber weiterhin purer Zufall zu sein, wobei mein SMAEM1900244380 anscheinend vor dem SMAEM1900211638 immer Vorrang zu haben scheint.
Interessant für dich vielleicht, dass trotz Internal Aktualisierung die Readings auf altem Stand verblieben.
Habe mal einige Screenshots gemacht...
Gruß Michael


Edit:

SMAEM EM1 - cycle discarded due to allowed diff GRIDOUT exceeding

Diese Fehlermeldung erhalte ich überigens bei jedem Durchlauf (Interval)

DS_Starter

Morgen Michael,

danke für den Test. Dass verschiedene Fehler passieren ist nicht weiter dramatisch weil eben erst eine absolute Studienversion.
Aber dass die Aktualisierung nicht so funktioniert wie von mir angedacht ist echt unschön.
Da muss ich nochmal in mich gehen ...

ZitatInteressant für dich vielleicht, dass trotz Internal Aktualisierung die Readings auf altem Stand verblieben.
Ja, ist interessant. Wie meinst du das genau weil du einen Satz vorher geschrieben hast dass die Aktualisierung zwar funktioniert aber scheinbar weiter purer Zufall scheint ?

EDIT: Vielleicht ist das der Schlüssel
ZitatSMAEM EM1 - cycle discarded due to allowed diff GRIDOUT exceeding
. Mal schauen ...
         Melde mich wieder wenn ich eine nächste Testversion erstellt habe.

Grüße
Heiko
Proxmox+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 meine die beiden Internals

LASTUPDATE_1900211638 28.09.2017 / 09:03:26
LASTUPDATE_1900244380 28.09.2017 / 09:03:26

werden sauber nach dem eingestellten Interval aktualisiert, die Readings vom 1900211638 aber anscheinend nach Zufallsprinzip. Mal klappt es alle 2s, mal kommt fast eine Stunde nichts.
Eben hatte ich den Fall das 1 Stunde lange keine neuen Readings kamen, dann habe ich verbose auf 5 gestellt und sofort danach aktualisierten sich die Reading wieder. 
Merkwürdig...für mich als Laien.

Gruß Michael

DS_Starter

Hallo Michael,

wie sieht es aus wenn du das Attr "diffAccept"auf eine seeeehr hohen Wert setzt.
z.B. 9999999999999

Grüsse
Heiko
Proxmox+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

diffAccept=9999999999999

seit 20 Minuten keine Fehlermeldung mehr und saubere Aktualisierung alle 2s

Lasse mal 2 Stunden laufen und schaue mir dann das LOG-File an.
Melde mich...

Danke & Gruß Michael


Edit:

Also bislang läuft alles fehlerfrei.
Hut ab, Heiko.
Noch weiß ich zwar nicht was diffAccept bewirkt, werde mich da aber noch reinarbeiten.
Heiko & Volker, nochmals vielen Dank für dieses tolle Modul,
Gruß Michael

DS_Starter

Hallo Michael,

das sieht schon mal gut aus.  :)

diffAccept ist ein wichtiges Attr um einen Plausibilitätscheck von aufeinanderfolgenden Meßwerten durchführen zu können. Damit wird zum Beispiel ein Stromausfall (der Energy Meter wird dadurch resettet) logisch abgefangen.
Für den Test haben wir das Attr jetzt "mißbraucht".

Aber nun weiß ich dass der Weg richtig ist. Ich prgrammiere das Modul jetzt richtig aus und stelle die neue Version zum Test zur Verfügung wenn ich soweit bin.
Du kannst die jetzige Version gerne weiterverwenden wenn du die *_diff Readings nicht brauchst.

Grüße
Heiko
Proxmox+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

Volker Kettenbach

Heiko, melde Dich mal per email bei mir.
Ich gebe Dir Zugriff auf github.

DS_Starter

Hallo zusammen,

ging nun doch etwas schneller als gedacht.
Anbei die gefeilte Testversion. Weil wir eine neue Qualität erreicht haben, ist diese Version nun 3.0.0.

Spielt die bitte bei euch ein, benennt sie um und macht auf jeden Fall einen FHEM-Restart !

@Michael, lösche bei dir bitte das diffAccept-Attribut wieder.

Wie ihr vielelicht wißt speichert SMAEM in der Datei /FHEM/FhemUtils/cacheSMAEM regelmäßig Werte.
Wer eine saubere Datei haben möchte (ohne Altleichen), kann diese Datei löschen wenn FHEM gestoppt ist und danach FHEM wieder starten. Dann wird die Datei neu sauber angelegt.

Viel Spass beim Test und bitte Feedback ob alles klappt !

Grüße
Heiko
Proxmox+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