Shelly-Pro Geräte haben gegenüber der 1. Generation einen großen Vorteil. Sie können sowohl in die Shelly-Cloud eingebunden werden als auch gleichzeitig Nachrichten per mqtt senden. Letzteres hat allerdings auch einige Grenzen, denn man kann das Update-Intervall nicht einstellen. Das bedeutet zum Beispiel bei einem 3EM-PRO (3-Phasen-Energiezähler), dass jede Veränderung zum Broker gesendet wird. Das passiert ca. alle 10 Sekunden. Eigentlich gut so, denn dem Broker macht das schlicht nichts aus.

Die weitere Logik sorgte aber bisher dafür, dass jeder Wert der am Broker ankommt auch in der Datenbank gespeichert wird. Das führt dann bei Aktualisierungen alle 10 Sekunden schlicht zu jeder Menge Daten (Müll).

Wir haben daher die Logik zur Aufnahme der Werte in der Datenbank verändert. Auf Datenbankseite wird nunmehr gespeichert, in welchem Intervall eine Aktualisierung der Werte zulässig ist. Standardwert sind 60 Sekunden. Möchte man eine kürzere (oder längere) Aktualisierungsdauer, trägt man in der Tabelle Konfigurationstabelle _mqtt_topic_interval einfach die gewünschte Zeit in Sekunden ein.

Vor der Übergabe der Daten (durch das python_script) vom Broker an die Datenbank wird mit einer stored function bei der Datenbank die Aktualisierungszeit angefragt und mit dem Zeitstempel des letzten Schreibvorgangs verglichen. Ist die Aktualisierungszeit verstrichen wird geschrieben, ansonsten wird dieser Wert einfach verworfen. Neue Topics bekommen automatisch das Aktualisierungsintervall 60 Sekunden. Wer einen anderen Wert braucht, muss diesen zunächst auf der Datenbankseite festlegen.