FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: rogerknop am 13 Januar 2023, 09:21:18

Titel: MQTT2_CLIENT Device updates unterdrücken
Beitrag von: rogerknop am 13 Januar 2023, 09:21:18
Hallo,
ich habe verschiedene Zähler über MQTT an fhem angebunden.
Manchmal wird allerdings von den Zählern ein ErrorCode gesendet.
Genau in diesem Fall möchte ich das Update des eigentlichen Wertes auf 0 verhindern, da sonst auch die Werte in meinem statistics Device falsch berechnet werden.
Gibt es hier die Möglichkeit die eingehenden Events abzufangen und das Update zu verhindern?
Danke & Grüße,
Roger
Titel: Antw:MQTT2_CLIENT Device updates unterdrücken
Beitrag von: rudolfkoenig am 13 Januar 2023, 09:40:22
Ueber userreadings.
Titel: Antw:MQTT2_CLIENT Device updates unterdrücken
Beitrag von: Otto123 am 13 Januar 2023, 09:51:48
Hallo Roger,

Du willst am IO bestimmte Nachrichten abfangen und verwerfen, so dass sie nicht zum MQTT2_DEVICE gelangen?

Geht das eventuell hiermit?
ZitatrawEvents <topic-regexp>
send all messages as events attributed to this MQTT2_CLIENT instance. Should only be used, if there is no MQTT2_DEVICE to process the topic.

Liest sich allerdings so, als ob es auf topics beschränkt ist und die Werte keine Rolle spielen?

Gruß Otto
Titel: Antw:MQTT2_CLIENT Device updates unterdrücken
Beitrag von: rogerknop am 13 Januar 2023, 10:04:07
Hallo Otto,
ja so lese ich es auch und ausserdem ist ja noch die Abhängigkeit zwischen 2 Werten.
Also wenn ErrorCode = OK, dann schreibe die Werte x, y und z aus der Nachricht in das Device.
Im Fehlerfall keine Änderung der Werte.
Danke & Grüße,
Roger
Titel: Antw:MQTT2_CLIENT Device updates unterdrücken
Beitrag von: Otto123 am 13 Januar 2023, 10:22:54
Am DEVICE selbst geht es über userReadings (ich wüsste nicht wie es am CLIENT über userReadings gehen kann und ob Rudi das wirklich gemeint hat?) oder Du greifst in der readingList selbst den Event ab und behandelst den mit einer Logik. Beispiel aus der tasmota Ecke:
tele/tasmota_5E32CA/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
Titel: Antw:MQTT2_CLIENT Device updates unterdrücken
Beitrag von: rogerknop am 13 Januar 2023, 10:25:59
Also im Prinzip in einem Notify die neuen Werte prüfen und x, y und z in weitere UserReadings schreiben nur falls kein Fehler aufgetaucht ist.
Und dann das statistics entsprechend auf die UserReadings umsetzen.
Korrekt?
Titel: Antw:MQTT2_CLIENT Device updates unterdrücken
Beitrag von: Otto123 am 13 Januar 2023, 10:27:31
userReadings ist ein attribute direkt am Device und braucht kein extra notify
Titel: Antw:MQTT2_CLIENT Device updates unterdrücken
Beitrag von: rudolfkoenig am 13 Januar 2023, 10:28:52
Ich meinte userReadings fuer MQTT2_DEVICE.
Im readingsList fuer das MQTT2_DEVICE geht es auch, ist aber ein bisschen Hack, im Sinne dass es nicht offensichtlich ist.
Titel: Antw:MQTT2_CLIENT Device updates unterdrücken
Beitrag von: rogerknop am 13 Januar 2023, 14:08:13
OK ich glaube ich habe es verstanden.
Das userReadings setze ich in Abhängigkeit von ErrorCode und statistics switche ich auf das userReadings.
DANKE! Wieder mal super Support hier :-)
Grüße, Roger