SMAUtils mit funktionierendem event-on-change-reading

Begonnen von Hefferwolf, 30 Dezember 2018, 22:12:44

Vorheriges Thema - Nächstes Thema

Hefferwolf

Hallo,

da mein SMA Wechselrichter nur per Bluetooth erreichbar ist, bin ich nach wie vor auf das 99_SMAUtils.pm Modul angewiesen und kann nicht das SMAInverter-Modul nutzen. Da das SMAUtils-Modul allerdings eine große Menge an readings erzeugt und die daraus resultierenden events mein fhem regelrecht geflutet haben, habe ich hier ein event-on-change-reading vermisst. Daher habe ich mir erlaubt, dass im bisherigen Modul mal zu fixen. Die gefixte Version gibt es bei Interesse auf github: https://github.com/irockel/fhem-utils/blob/master/98_SMAUtils.pm


Gruss,


   Ingo

DS_Starter

Hallo Ingo,

da hast du aber eine ganz alte Version als Grundlage genommen.

Es gibt schon lange dieses Modul als non-Blocking Variante. Natürlich bereits mit den event-on-Attributen und ein disable.

Hier:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter  (Downloadbutton benutzen)

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

Hefferwolf

Hallo Heiko,

vielen Dank für Deine Antwort und das aktualisierte Modul. Das Non-Blocking-Thema wäre das nächste gewesen, was ich mir anschauen wollte, das brauche ich dann ja nicht mehr. Es wäre glaube ich ganz sinnvoll, wenn man auf der Wiki-Seite[1] zum SMA Wechselrichter auf die aktuelle Version des Moduls verweisen würde, dort wird noch auf die alte Version in einem Forumsthread[2] verwiesen und es ist auch noch das "delay" Attribut in der Doku enthalten.

Mir ist nicht ganz klar, wie der Prozess ist, das Wiki zu aktualisieren, sonst würde ich mich auch selbst darum kümmern.

Grüße,

   Ingo

[1] https://wiki.fhem.de/wiki/SMAWechselrichter
[2] http://forum.fhem.de/index.php/topic,14624.msg153006.html#msg153006

DS_Starter

#3
Guten Morgen,

naja, ich weiß auch nicht ob meine Version die aktuellste ist. Seinerzeit gab es dafür relativ viele Mitmacher und einer davon war ich und hatte das non-blocking usw. eingebaut. Letztens hatte schon ein User nach der aktuellsten Version gefragt und nicht gefunden. Deshalb habe ich sie mal im contrib bei mir zur Verfügung gestellt.
Wegen SMAInverter hat das Modul für mich an Bedeutung verloren, halte es aber dennoch für sehr sinnvoll und sollte vllt. weiterentwickelt werden.
Wenn du das machen möchtest, nimm am besten diese Version als Grundlage. Und wenn du ein neues Release hast, würde ich es auch wieder bei mir im contrib zur Verfügung stellen.

Thema Wiki. Du musst dir nur einen User besorgen , siehe -> https://wiki.fhem.de/wiki/FHEMWiki:Administratoren

Dann kannst du Artikel schreiben / bearbeiten und Hilfe ist immer willkommen !

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

Hefferwolf

Hallo Heiko,

danke für die Infos. Einen Wiki-Nutzer habe ich mal direkt beantragt. Funktionell sieht deine Version gut aus, funktioniert bei mir prima, insbes. das non-blocking ist natürlich klasse. Ggf. ist ein Cleanup und weitere Anpassungen an die normalen Modulkonventionen sinnvoll. Hatte mir dies Dokument hier durchgelesen: https://wiki.fhem.de/wiki/DevelopmentModuleIntro

Der hard-verdrahtete Pfad auf das SBFspot ist auch etwas unpraktisch. Ich schaue mal, was ich hinbekomme, meine Perlkenntnisse sind schon etwas angestaubt.

Grüße,

   Ingo

DS_Starter

Ich freue mich wenn das Modul etwas modernisiert wird und als Alternative zu 76_SMAInverter genutzt werden kann. SMAInverter kann ja nicht in jedem Fall eingesetzt werden. So gibt es ein vollwertiges Fallback.

Wenn du Fragen hast helfe ich dir gerne.
Vielleicht machen wir daraus sogar mal ein offizielles Modul ... mal schauen.

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

Hefferwolf

Hallo Heiko,

ich habe das Modul jetzt etwas überarbeitet, im einzelnen:


  • Das Interval wird jetzt als Attribut angegeben, was den Vorteil hat, das man es zur Laufzeit ändern kann (in dem Fall wird auch der Timer neu gesetzt und gestartet)
  • Delete und Set für Attribute ist jetzt auch implementiert (in SMAUtils_Attr).
  • Der Pfad zu SBFspot ist jetzt im define konfigurierbar und wird dann als internal gesetzt
  • Ein HTML Block für DE und EN beschreibt das Modul.

Getestet habe ich das in meiner lokalen Installation mit einem SB 3000TL-21

Das Modul findet sich hier:
https://github.com/irockel/fhem-utils/blob/master/98_SMAUtils.pm

Schau mal drüber, was du meinst.

Grüße,

   Ingo

DS_Starter

Hallo Ingo,

habe gerade gesehen dass du etwas getan hast. Irgendwie habe ich keine Benachrichtigung bekommen.
Naja, egal ... ich schaus mir mal an.
Dummerweise habe ich keine Testumgebung mehr dafür. Aber die baue ich wieder auf. Kann also etwas dauern.  ;)

Danke und 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

Hefferwolf

Hallo Heiko,

Danke. Die angepasste Version läuft bei mir ohne Probleme, ich hatte noch eine Anpassung gemacht im Falle einer Änderung des modes wurde der Timer nicht korrekt initialisiert.

Die Wikiseite konnte ich noch nicht anpassen, es gibt da ein Problem mit dem Mailversand aus dem Wiki.

Gruss,

   Ingo

DS_Starter

Hallo Ingo,

jetzt habe ich mal eine Umgebung aufgebaut und das Modul eingesetzt.
Was mir zunächst aufgefallen ist:

* Ist das Attribut "interval" nicht gesetzt (das ist ja der Standard) laufen ständig Blockingcalls los mit entsprechenden Fehlermeldungen in Log. Es müsste also ein Standrdwert (z.B. 60s) greifen wenn nichts gesetzt ist. In meinem Release war es beim Define zwingend anzugeben. Deswegen stand die Frage nicht.
* Der Hinweis zur Definition auf der Hilfeseite ist falsch. Dort steht "...<path-to-sbfspot> gibt den Pfad zum externen SBFspot an..." Es ist aber auch die ausführbare Datei mit anzugeben, also "...<path-to-sbfspot>/SBFSpot gibt die ausführbare SBFSpot-Datei inklusive deren Pfad an..."

Damit bei der Dunkelheit Daten kommen habe ich den Aufruf um "-finq" ergänzt. Vielleicht könnte man ein Attribut dafür einbauen. Bei SMAInverter heißt es "suppressSleep". Wenn gesetzt, liefert der WR Daten unabhängig von der Tageszeit.
Zur Zeit liefert SBFSpot:


Sun Jan 13 17:38:47 2019: INFO: Starting...
sunrise: 08:12
sunset : 16:28
Nothing to do... it's dark. Use -finq to force inquiry.


Ich hätte noch die Idee sunrise bzw. sunset in ein Reading zu übernehmen. Dann würde der Nutzer sehen, in welcher Zeit der Inverter arbeiten wird.

Dann könnte man noch einbauen dass nur ein disabled-Event kommt, wenn das Device disabled ist. Sonst kommt der Event bei jedem Zyklus.

Soweit für das Erste...

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

Hefferwolf

Hallo Heiko,

ich habe das Modul angepasst:

  • Der Default ist jetzt mode=manual, damit wird überhaupt kein Timer gesetzt, bisher war hier der Default automatic, was ohne gesetztes interval Murks ist. Damit werden jetzt nicht direkt irgendwelche Abrufe abgesetzt.
  • Die Dokumentation habe ich angepasst (DE und EN)
  • Ein Attribute "suppressSleep" ist ergänzt. Ist der das Attibut auf "1" gesetzt, wird der Parameter "finq" mit ans SBFspot übergeben.
Bzgl. deines Vorschlages zu Sunset: das kann problematisch sein, dass diese Werte von SBFspot in Abhängigkeit von latitude und longitude ermittelt werden, die in der SBFspot.cfg stehen. Ich habe hier auch nichts gefunden, dass man diese Werte übergeben könnte. Ich habe aber einen Hinweis in der commandref-Hilfe ergänzt.

Das geänderte Modul ist bei mir aktiv und die genannten Punkte haben funktioniert.

Dein Hinweis zum disabled-Event verstehe ich leider nicht.

Grüße,

   Ingo

DS_Starter

ZitatDein Hinweis zum disabled-Event verstehe ich leider nicht.
Ich meinte damit, dass bei jedem Anstarten der internen Abfrageschleife (bei automatic) ein "disabled"-Event erzeut wird sofern das Device disabled ist.
Besser wäre natürlich wenn die Schleife überhaupt nicht laufen würde wenn das Device disabled ist. D.h. die Schleife müsste erst wieder aktiviert werden wenn man das disabled-Attribut auf 0 setzt oder löscht.

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

cornelius fillmore

Hallo Heiko, hallo Ingo, ich klinke mich mal hier ein weil ich einen SB abfragen will.

Wenn ich dieses Modul
Zitathttps://github.com/irockel/fhem-utils/blob/master/98_SMAUtils.pm
und den SBFSpot 3.5.0 benutze steht sich das Modul immer auf manuel.
Kann mir einer von euch bitte beschreiben, wie ihr dies aktiviert


THX
3 x Fhem 5.9 mit RPI

DS_Starter

#13
Guten Morgen,

es gibt das Attribute "mode", das stellst du auf "manual".
Dann kannst du ein "get <device> data" die Daten vom WR abfragen.
Die Abfrage brauchst du dann nur noch in ein AT, Notify o.ä. verpacken.

Wenn du es auf automatisch stellen willst, dann stelle "mode" auf "automtic" oder löschen, weil dieser mode der default ist.

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

Hefferwolf

Hallo,

nein, der Mode muss jetzt explizit auf "automatic" gestellt werden, damit verhindere ich das unkontrollierte Loslaufen nach Einrichtung wenn noch kein Interval gesetzt ist. Ggf. macht es Sinn diesen Mode ganz auszubauen. Wenn das interval gesetzt ist, dann wird aktualisiert, sonst eben nicht. Ich schaue mir das mal an, habe nur aktuell wenig Zeit.

Gruss,

   Ingo