Eigenes Mqtt Signal filtern / beschränken

Begonnen von flummy1978, 17 Januar 2026, 07:56:27

Vorheriges Thema - Nächstes Thema

flummy1978

Hallo zusammen,

Ich hab da mal ein Problemchen mit einem Device, dass ich nicht beeinflussen kann. Es sendet (gefühlt sekündlich) alle Werte per mqtt. Diese möchte ich gern filtern und beschränken.

Das Muster nach dem die Signale kommen ist immer gleich:

MQTT2_Ext:systa-bridge/monitor/temperatureSetFlowCircuit2:.* { "value":111}
MQTT2_Ext:systa-bridge/monitor/temperatureSetHotWater:.* { "value":62.6}
MQTT2_Ext:systa-bridge/monitor/temperatureSetRoomCircuit1:.* { "value":1}
usw... Ca 50 Werte (momentan nur Zahlenwerte)

Readings list auf
readingList


MQTT2_Ext:systa-bridge/monitor/timestamp:.*  {json2nameValue($EVENT,"timestamp",$JSONMAP)}
Ergibt schon mal
timestampvalue 1768632304 2026-01-17 07:45:09
Warum hängt er hier das value dran? Wo liegt hier mein Gedankenfehler? 🤔

Nun zu meinen Fragen :
1. Gibt es nach dem Muster eine Möglichkeit readingslist eigenständig auslesen zu lassen, welche readings er anlegt nachdem jeder Wert nach dem gleichen Schema ist nämlich
topic/readingname {"value" :readingwert}
ohne für jedes reading eine Zeile anzulegen?

2. Ich habe leider keinen Zugriff auf die gesendeten Daten. Gibt es eine Möglichkeit die Datenflut zu beschränken - AUSSER der von FHEM verfügbaren Standard event Beschränkungen? Auch wenn ich die Events beschränke, wird der Broker ja dauerhaft zu gespamt.
(optionale Idee mit einem "zwischen broker" wäre aktuell das Einzige, das mir einfällt)

Würde mich sehr über eine Hilfestellung freuen und danke schon mal im voraus  :)
VG
Andreas

rudolfkoenig

Zitatjson2nameValue($EVENT,"timestamp",$JSONMAP)
[...]
Warum hängt er hier das value dran?
Die json2nameValue Parameter sind $in, $prefix, $map, $filter, $negFilter.
Wenn man als $prefix timestamp angibt, dann wird das vor allen gefundenen Werte vorangestellt.

Frage #1:
Moegliche Loesungen:
attr systa readingList MQTT2_Ext:systa-bridge/monitor/.* { "$TOPIC:$EVENT" =~ m,/([^/]+):\{\s*"value":\s*([^\s]+)\s*\},;; return { $1=>$2 } }
oder
attr systa readingList MQTT2_Ext:systa-bridge/monitor/.* { "$TOPIC" =~ m,/([^/]+)$,;; return { $1=>json2nameValue($EVENT)->{value} } }

Frage #2:
ich habe bei den gegebenen Einschraenkungen keine Idee.
Ich wuesste nichtmal, wie man die "optionale Idee" verwirklicht.