FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mkraus81 am 30 Januar 2022, 13:12:04

Titel: MQTT Reading falsche Werte ignorieren
Beitrag von: mkraus81 am 30 Januar 2022, 13:12:04
Hi,

ich habe für die Experten hier eine ganz einfache Frage...
Ich habe eine IR WIFI Lesekopf für den Stromzähler mit Tasmota...
funktioniert alles....
Ich habe ein MQTT2 Device und folgendes Reading "STROM_Pges"

Ich möchte das der Wert nur aktualisiert wird wenn Größer NULL (0)
das Gerät schickt ab und an 0-Werte und dann kommt das Statistics-Modul durcheinander...
und ich erhalte dann Minus-Werte für die "Last-Werte"...

Wer kann mir sagen wie ich das verhindern kann?
DANKE
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: TomLee am 30 Januar 2022, 13:53:17
Bestimmt nicht die optimale Lösung, aber eine simple Möglichkeit, mein ich, könnte event-on-change-reading mit der Angabe einer Schwelle sein ?

Sowas wie STROM_Pges:0.01

könnt ich mir vorstellen oder noch kleiner, irgendeinen Wert halt von dem auszugehen ist das er immer kleiner ist wie der der vom Lesekopf gesendet wird.

Gruß

Thomas
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: mkraus81 am 30 Januar 2022, 13:59:02
danke... aber verstehe ich nicht ganz...
0.01??? der lesekopf scheint (z.b. nach neustart) mal 0 zu schicken... 0 ist ja kleiner als 0.01

oder meinst du 0.01 zu setzen... weil wenn 0 kommt... event-on-change nicht aufgerufen wird... und somit die "Stats" Werte nicht neuberechnet werden?
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: TomLee am 30 Januar 2022, 14:07:12
Zitat von: commandrefevent-on-change-reading
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten "readings" identisch sind, wird kein Ereignis generiert.
Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird das Event nur getriggert wenn die Änderung grösser als diese Schwelle ist.

Klarer ? Oder steh ich auf dem Schlauch ?
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: Sany am 30 Januar 2022, 14:21:30
ZitatKlarer ? Oder steh ich auf dem Schlauch ?
Schlauch... ;)
Zitatwenn die Änderung grösser als diese Schwelle ist.

Mit gesetztem event-on-change-reading MUSS sich der Wert ÄNDERN, damit ein Event durchkommt. Die schwelle gibt an, wie groß diese Änderung sein muss. Es verhindert aber keinen 0-Wert, denn z.B. alter Wert 0.2, neuer Wert 0. Bei einer Schwelle 0.1 wäre die Änderung größer als die Schwelle, also geht diese Änderung als Event durch.

Um das Problem zu lösen könnte ich mir ein userReadings vorstellen, welche nur Werte ungleich 0 in ein neues Reading schreibt, das dann das Statistics-Modul triggert.

Gruß

Sany
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: Beta-User am 30 Januar 2022, 14:27:25
Perl-Vorverarbeitung in der readingList? Kommt das als Klartext oder JSON-verpackt...?
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: mkraus81 am 30 Januar 2022, 14:45:12
Hi,

ich denke es wird nur mit UserReading funktionieren oder?

Habe mal fix folgendes gemacht

UserReading: CurCounterVal {if(ReadingsVal($name,"STROM_Pges",0) > 0) {return ReadingsVal($name,"STROM_Pges",0)}}

das sollte ja dann, wenn der Wert von Strom_Pges... was vom Lesekopf per MQTT kommt...
größer 0 ist das UserReading mit dem Namen CurCounterVal setzten oder habe ich was übersehen?

Damit kann ich dann das StatisticsModul füttern, oder?
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: Beta-User am 30 Januar 2022, 14:49:46
Zitat von: mkraus81 am 30 Januar 2022, 14:45:12
Hi,

ich denke es wird nur mit UserReading funktionieren oder?

Nö! Mal im wiki "Schritt für Schritt" suchen.
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: mkraus81 am 30 Januar 2022, 14:52:38
@Beta-User

wenn ich da was gefunden hätte, was mir weitergeholfen hätte... würde ich dann fragen?
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: Beta-User am 30 Januar 2022, 14:58:05
Zum einen: hier steht nicht, was du gefunden hättest, dann fehlt ein list, und dann ist mobiles coden auch noch keine Freude...Vielleicht Jann jemand anderes daraus eine Langversion machen...
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: Sany am 30 Januar 2022, 15:52:41
es gibt ja immer viele Wege, die nach Rom führen...
vor dem userReadings wäre Beta-Users Lösung natürlcih besser: direkt da, wo die Daten herkommen, es entsprechend einrichten.
Noch besser wäre allerdings eine Lösung, die gleich die richtigen Daten liefert. Ich habe auch einen IR-Lesekopf am Zähler, zusammen mit einem ESP8266, allerdings nicht mit Tasmota sondern mit:
https://github.com/mruettgers/SMLReader (https://github.com/mruettgers/SMLReader)

der liefert ordenlich Daten, keine Nullen.

Nochmal zurück zu userReadings:
es fehlt ein Trigger, bzw. würde das Reading bei JEDEM Event Deines Devices gerechnet. Eher so:
Zitatattr <deinDevice> userReadings CurCounterVal:STROM_Pges.* {if(ReadingsVal($name,"STROM_Pges",0) > 0) {return ReadingsVal($name,"STROM_Pges",0)}}
(das in {} sieht für mich ok aus, geht vermutlich noch eleganter, hab ich nicht getestet.)

Gruß


Sany
Titel: Antw:MQTT Reading falsche Werte ignorieren
Beitrag von: mkraus81 am 30 Januar 2022, 16:00:05
DANKE

der Teil ":STROM_Pges.*"... den hatte ich nicht auf dem Schirm!
DANKE!
Sollte so mit dem User-Readings klappen, mal schauen ob die Stats nun sinnvolle Werte enthalten..