[gelöst] MQTT2_device nur werte mit bestimmten Inhalten in readings schreiben

Begonnen von pula, 20 November 2020, 12:14:41

Vorheriges Thema - Nächstes Thema

pula

Hallo,

wahrscheinlich steh ich grad auf dem Schlauch, aber ich habe auch mit verschiedenen Suchen nichts gefunden.

Ich habe ein OPnsense am laufen und das dort aktivierte telegraf schickt per mqtt Werte zu den verschiedenen definierten Interfaces.
Das sieht dann zb so aus:
opnsense/OPNsense.fritz.box/net {"fields":{"bytes_recv":42991672202,"bytes_sent":1348287572,"drop_in":0,"drop_out":0,"err_in":0,"err_out":0,"packets_recv":31389815,"packets_sent":11032161},"name":"net","tags":{"host":"OPNsense.fritz.box","interface":"vtnet1"},"timestamp":1605870670}

opnsense/OPNsense.fritz.box/net {"fields":{"bytes_recv":27482695844,"bytes_sent":532102094,"drop_in":0,"drop_out":56450,"err_in":0,"err_out":0,"packets_recv":20785545,"packets_sent":9347658},"name":"net","tags":{"host":"OPNsense.fritz.box","interface":"ovpnc3"},"timestamp":1605870670}

opnsense/OPNsense.fritz.box/net {"fields":{"bytes_recv":0,"bytes_sent":0,"drop_in":0,"drop_out":0,"err_in":0,"err_out":0,"packets_recv":0,"packets_sent":0},"name":"net","tags":{"host":"OPNsense.fritz.box","interface":"ovpns1"},"timestamp":1605870670}


Soweit so gut. Nun ist es aber so, daß Werte für verschiedene Interfaces unter dem gleichen topic kommen (kann man auch nicht umstellen soweit ich weiß).
Was in fhem mit einer einfachen readinglist
fhem:opnsense/OPNsense\x2efritz\x2ebox/net:.* { json2nameValue($EVENT) }
passiert, ist daß hier die Werte des einen Interfaces mit den Werten des nächsten (in chronologischer Reihenfolge) überschrieben werden.
Hat jemand eine Idee, wie man die Werte in fhem vereinzeln oder zumindest nur die Werte eines bestimmten interfaces übernehmen lassen kann?

Danke im voraus und cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Beta-User

Na ja, da alles über denselben Topic kommt, ist es nicht ganz trivial, aber du kannst $EVENT in readingList per regex parsen und z.B. das, was nach "interface" kommt als Präfix für json2nameValue() verwenden.

Ein paar solcher "Vorbereitungs"-Beispiele kannst du in mqtt2.template finden, wenn du darin nach "$EVENT =~" suchst, allerdings wird da "$1" teils sehr unterschiedlich genutzt.

Hoffe, das reicht als Schubs, sonst bitte nochmal nachfragen ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

pula

Super, danke für den RASCHEN schubs!
so scheint es zu klappen:
fhem:opnsense/OPNsense\x2efritz\x2ebox/net:.* { $EVENT =~ 'vtnet0' ? json2nameValue($EVENT) : return }
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Beta-User

 :)

Hier noch die (ungetestete) Präfix-Variante für den universellen Einsatz (alles in einem Device):
opnsense/OPNsense\x2efritz\x2ebox/net:.* { $EVENT =~ m,interface...([^"]+), ? json2nameValue($EVENT, "${1}_" ) : return }

Wenn dich nur Teile interessieren, würde ich dir noch den 4. Parameter "filter" in json2nameValue() zum Test empfehlen ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

pula

fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Beta-User

Gerne :) .

Falls das paßt, wäre eine Rückmeldung nett, dann baue ich es vielleicht in den "workshop" ein, sowas kommt sturkturell doch häufiger vor und hier ist es evtl. noch etwas einfacher nachzuvollziehen wie beim OpenMQTTGateway...

Ansonsten: [gelöst]?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

pula

kann das leider momentan nicht testen - daher auf gelöst....
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram