Smart Meter MT175 braucht kleinere MQTT Reportfrequenz

  • Hi


    ich denk mal das kommt davon das der Sensor alle 2 Sekunden seine Daten aktualisiert und die Sensordaten werden eben bei jeder Änderung übertragen. Das ist unabhängig von der teleperiod.


    Hängt der Sensor an nem ESP01?


    Spontan wäre mir eingefallen, den ganzen ESP für ne gewisse Zeit in nen Deepsleep zu schicken, nach Zeit X aufzuwecken und nach übermittlung wieder Schlafen zu legen. Allerdings fehlt dem ESP01 der GPIO16 für den wakup

    benzino77 Tasmocompiler

    Gitpod Master Release


    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/4xGoogle-Home-Mini

  • Hi,

    ich habe am WE meine "Prozesskette" fertiggestellt: MT175 --> IR auf ESP8266 --> MQTT Broker (Mosquitto) --> InfluxDB. Läuft alles in Docker Containern auf meiner Synology. Web Station aktiviert. So kann ich über den Webserver die Daten sehen. Jetzt kommen nach und nach noch mehr Daten in das System rein.

    Ich hatte allerdings dabei keine Probleme wie Du, das, was ich eingestellt Telemetry Period steht auf 30 und er schickt auch nur alle 30s was.

    Was wird denn bei Dir alle 2 sek gesendet. Die Sensordaten oder evtl. der Status? Hast Du andere Logging Parameter aktiviert, die evtl. hier was senden?

  • Puhh- komme jetzt erst zum Anworten:

    HoerMirAuf: Ich habe den Sensor bei Hichi gekauft. Das Teil ist sauber aufgebaut und hat den Magnet zur Befestigung gleich mit eingebaut. Ist somit kein Selbstbau (https://www.ebay.de/itm/313892218073). Funktioniert aber sonst eeecht prima!

    hans-smart: Ich habe keine anderen Logging parameter aktiviert (ausser WebLogLevel 2). Hier mein Script


    Der output:

    Die SW rev ist 9.5...

  • Mit Script kann ich leider nicht weiterhelfen und ob es da eine Möglichkeit gibt den Output zu reduzieren.


    Wie gesagt ein Ansatz wäre den ESP01 durch nen ESP12F zu ersetzen und den ESP12 dann für eine Zeit(x) in Deepsleep zu schicken damit er nur ab und an Werte sendet. Wie das dann aber mit Script geht weiß ich nicht. Mit Rule wäre das kein Problem.


    Aber evtl gibt es mit Script da bessere Möglichkeiten. Da müsstest Du Dich mal an die Script Profis wenden. Der User gemu2015 hier im Forum ist der Entwickler von Script. Vielleicht weiß der was dazu.

    benzino77 Tasmocompiler

    Gitpod Master Release


    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/4xGoogle-Home-Mini

  • Der output:

    Code
    16:25:11.061 MQT: tele/Stromzaehler/STATE = {"Time":"2022-03-20T16:25:11","Uptime":"13T20:34:39","UptimeSec":1197279,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":67,"POWER":"OFF","Wifi":{"AP":1,"SSId":"WLS1924","BSSId":"DC:15:C8:5C:92:CC","Channel":11,"Mode":"11n","RSSI":48,"Signal":-76,"LinkCount":1,"Downtime":"0T00:00:03"}}
    16:25:11.070 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:11","MT175":{"E_in":5194.0,"E_out":7854.3,"P":-2424.00,"L1":-877.00,"L2":-484.00,"L3":-1038.00,"Server_ID":"090149534b000485d342"}}
    16:25:11.395 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:11","MT175":{"P":-2404.00}}
    16:25:11.417 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:11","MT175":{"L1":-863.00}}

    Die SW rev ist 9.5...

    Was mich bei Dir wundert ist das doppelte Wegschreiben. um 16:25:11.070 published er ein ordentliches MQTT-Protokoll mit dem gewünschten Inhalt, wie im Script vorgegeben (E_in, E_out, P, L1, L2, L3, Server_ID) und dann haut er nochmal die Werte einzeln raus. Da musst Du noch mal schauen, normalerweise sollte er in der telemetry period nur das "lange" Protokoll raushauen. Prüfe doch mal, in welcher Periode er das "lange" Protokoll abfeuert.

    Dann ein wenig Ausprobieren, wie im Script mal ein Wert z.B. für P auskommentieren und dann mal schauen, ob der immer noch als Einzelwert in der Console auftaucht. Wenn ja, dann feuert irgendwoher irgendwas quer =O

  • Hallo,


    ich bin über gleiches Verhalten beim gleichen Zähler gestolpert. Die Lösung fand ich im Beitrag D0 Zähler SML auslesen mit Tasmota.

    Der Intervall in welchem die Werte per MQTT übermittelt werden kann mit dem letzten Wert der Meter Metrics Zeile beeinflusst werden.

    Code
    <precision>    number of decimal places. Add 16 to transmit the data immediately. Otherwise it is transmitted on TelePeriod only.

    Primär dient der Wert dazu die Anzahl der Nachkommastellen sowohl in Tasmoata als auch für MQTT einzustellen. Addiert man 16 zu seinem Wert hinzu wird der Messwert dieser Zeile sofort per MQTT gemeldet. Hat man also eine oder mehrere Zeilen mit x+16 im Script definiert wird dieser Wert sofort gesendet. Im iobroker taucht dann nur der letzte übertragene Wert auf, obwohl alle per MQTT gesendet wurden (siehe Console).

    Dass dann im iobroker zu parsen ist etwas unschön.


    Ich habe ebenfalls einen ISKRA M175 und bei dessen Script werden die Teil- und Gesamtleistung, mit 2 Nachkommastellen + 16 = 18, sofort übertragen was nur alle 10 Sekunden zu einer "vollständigen" Meldung führt. Ich habe die 4 Teilen auf ",0" geändert da mein Zähler gar keine Nachkommastellen dort meldet. Somit nur von vollständige Meldungen im iobroker. Der Intervall kann in Tasmota in den Logging-Einstellungen angepasst werden.