mruettgers / SMLReader

ESP8266 based smart meter (SML) to MQTT gateway
GNU General Public License v3.0
295 stars 69 forks source link

Sending Intervall #45

Closed kitt2011 closed 1 year ago

kitt2011 commented 2 years ago

Hello,

thanks for the programm! What is the standard sending intervall to the mqtt server and is there a way to change it? Thank you, great work!

mruettgers commented 2 years ago

Hey,

by default, SMLReader sends MQTT messages as often as data is received from the smart meter. You can limit the messages by adjusting the interval value (seconds) in the config.h (https://github.com/mruettgers/SMLReader/blob/develop/src/config.h#L23).

geronet1 commented 1 year ago

Würde doch reichen wenn er nur sendet wenn sich der Wert ändert, das würde auch das Problem mit den festen Strings umgehen daß die ständig mitgesendet werden. Außerdem kann man es so einfach in die Datenbank schreiben, sonst steht dort zu oft der gleich Wert drin. Soll ich das mal integrieren? Vielleicht sogar auswählbar in der Config

mruettgers commented 1 year ago

Gerne, PRs sind jederzeit willkommen :). Wobei das mit dem Senden nur bei Änderung beim Auswerten des Momentanverbrauchs eher kontraproduktiv ist. Vielleicht dann so konfigurierbar, dass es nur für bestimmte OBIS-Identifier gilt? Beachte aber bitte, dass es bald eine Web-basierte Konfiguration gibt (https://github.com/mruettgers/SMLReader/pull/54), also würde es sich anbieten, diesen Branch dann als Vorlage zu nehmen.

geronet1 commented 1 year ago

Du meinst den Bezugswert. Den Momentanverbrauch berechne ich mit der PV-Anlage (Summe) und das geht sehr gut bis jetzt mit einem Python Script das den letzten empfangenen Wert verwendet, bis ein Timeout (30 sek.) den Wert auf 0 setzt (Wechselrichter defekt, offline, kein Licht etc). Das baue ich gerade auf NodeRed um, ist aber im Prinzip das gleiche.

mruettgers commented 1 year ago

Ja genau, den Bezugswert meinte ich. Den lasse ich nämlich gerade per Telegraf und MQTT-Input-Plugin an InfluxDB weitergeben. Da würde ich die fehlenden Werte nämlich vermissen, wenn es keine Änderung gibt. Zumal ich da dann nicht so einfach mit Timeouts unterscheiden kann, ob es ein Problem gibt.

geronet1 commented 1 year ago

Hab mir das mal genauer angeschaut und versucht zu implementieren auf Basis von #54. Ist aber nicht trivial da es keine einfache Möglichkeit gibt innerhalb deines Codes die Werte von jedem Sensor und jedem Obis-Wert zwischenzuspeichern um ihn beim nächsten mal zu vergleichen ohne die libsml zu ändern. Im Prinzip hast du für Echtzeitanzeigen auch Recht daß das ständige senden eher besser ist, per NodeRED kann man ja einen Filter auf Wertänderung setzen um es dann in Influx zu speichern. Edit: Vielen Dank für das coole Projekt, ich hab dir mal 10 € gespendet.