Autor Thema: [gelöst] MQTT2_device nur werte mit bestimmten Inhalten in readings schreiben  (Gelesen 766 mal)

Offline pula

  • Sr. Member
  • ****
  • Beiträge: 740
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
« Letzte Änderung: 28 November 2020, 01:41:09 von pula »
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBox, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, dash, HomeConnect, Sonoff/Tasmota, espRGBWW, Telegram

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14068
  • "Developer"?!? Meistens doch eher "User"
Antw:MQTT2_device nur werte mit bestimmten Inhalten in readings schreiben
« Antwort #1 am: 20 November 2020, 12:23:05 »
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-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, Twilight,  AttrTemplate => {mqtt2, mysensors, zwave}

Offline pula

  • Sr. Member
  • ****
  • Beiträge: 740
Antw:MQTT2_device nur werte mit bestimmten Inhalten in readings schreiben
« Antwort #2 am: 20 November 2020, 12:42:46 »
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, FritzBox, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, dash, HomeConnect, Sonoff/Tasmota, espRGBWW, Telegram

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14068
  • "Developer"?!? Meistens doch eher "User"
Antw:MQTT2_device nur werte mit bestimmten Inhalten in readings schreiben
« Antwort #3 am: 20 November 2020, 13:01:38 »
 :)

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-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, Twilight,  AttrTemplate => {mqtt2, mysensors, zwave}
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline pula

  • Sr. Member
  • ****
  • Beiträge: 740
Antw:MQTT2_device nur werte mit bestimmten Inhalten in readings schreiben
« Antwort #4 am: 27 November 2020, 12:49:29 »
Erst jetzt gesehen....
Danke für das Statement!
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBox, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, dash, HomeConnect, Sonoff/Tasmota, espRGBWW, Telegram

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14068
  • "Developer"?!? Meistens doch eher "User"
Antw:MQTT2_device nur werte mit bestimmten Inhalten in readings schreiben
« Antwort #5 am: 27 November 2020, 12:55:39 »
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-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, Twilight,  AttrTemplate => {mqtt2, mysensors, zwave}

Offline pula

  • Sr. Member
  • ****
  • Beiträge: 740
Antw:MQTT2_device nur werte mit bestimmten Inhalten in readings schreiben
« Antwort #6 am: 28 November 2020, 01:40:51 »
kann das leider momentan nicht testen - daher auf gelöst....
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBox, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, dash, HomeConnect, Sonoff/Tasmota, espRGBWW, Telegram