[erledigt] mqtt-subscription umwandeln in lesbares Format

Begonnen von AnBad, 19 Februar 2022, 21:09:43

Vorheriges Thema - Nächstes Thema

AnBad

Hallo,

ich habe via MQTT2_CLIENT mittels MQTT2_DEVICE Wetterdaten von meinem mqtt-Server subscripted.

Nun bekomme ich diese wie folgt angezeigt. Kann mir bitte jemand helfen, dass dies in einem vernünftigen Format angezeigt wird? Wie geht das json-Format besser anzeigen/auseinander nehmen?

readinglist:
attr mqtt_tfa6969 readingList tfa_dostmann/tfa/30.3180.it/6969/json:.* themo_aussen

Ausgabe:
themo_aussen { "sensor_id":"6969", "temperature":11.3, "humidity":72, "lowbat":0, "rssi":71 }

Zielausgabe:
Außen_temp: 11,3 °C
Außen_hum:_ 72 Rel
Außen_lowbat: 0=OK,1=leer
Außen_rssi: 71


xenos1984

Z.B. so:


attr mqtt_tfa6969 readingList tfa_dostmann/tfa/30.3180.it/6969/json:.* {json2nameValue($EVENT)}

AnBad

Zitat von: xenos1984 am 19 Februar 2022, 21:26:25
Z.B. so:


attr mqtt_tfa6969 readingList tfa_dostmann/tfa/30.3180.it/6969/json:.* {json2nameValue($EVENT)}


Das ist ja schon mal super!!! Könnte man vor jedem Reading noch ein prefix zum Beipsiel "Außen" hinzufügen? So dass dann das Reading als "Außen_humidity" usw. angezeigt wird? Das hätte dann den Vorteil, dass ich alle Sensoren in ein fhem Gerät anzeigen lassen kann.

Auf jeden Fall: Tausend Dank!!

TomLee

#3
So, verstehe ich es, erhältst du deine gewünschten Readingnamen:

attr mqtt_tfa6969 readingList tfa_dostmann/tfa/30.3180.it/6969/json:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr mqtt_tfa6969 jsonMap temperature:Außen_temp humidity:Außen_hum rssi:Außen_rssi lowbat:Außen_lowbat


Vor der Übergabe des JSON ($EVENT) an json2namevalue kann man den Json noch "manipulieren" => den Wert von lowbat mappen auf einen anderen, muss ich aber selbst wieder schauen und hab auf die Schnelle kein Beispiel parat, ist aber auch kein Hexenwerk.

edit:

einfach nur den Prefix davorstellen (ohne jsonMap):
attr mqtt_tfa6969 readingList tfa_dostmann/tfa/30.3180.it/6969/json:.* { json2nameValue($EVENT,'Außen_',$JSONMAP) }

Beta-User

Hier der Versuch, allgemeine Hilfsmittel und Hinweise für solche Fälle zu geben: https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#readingList_optimieren

Anmerkung noch zu den gewünschten Readingnamen: Die sind m.e. nicht zu empfehlen, weil "externe Lösungen" (Sprachsteuerung, fhemApp, whatever...) für bestimmte "typische" Sachverhalte typisierte Namen erwarten, so dass es nicht zu empfehlen ist, "temperature" oder "humidity" durch was "besseres" zu ersetzen. Für die Lsbarkeit kann man stateFormat verwenden, dann sieht man auch im deviceOverview direkt, was gemeint ist...
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

AnBad

Zitat von: Beta-User am 20 Februar 2022, 09:06:12
Anmerkung noch zu den gewünschten Readingnamen: Die sind m.e. nicht zu empfehlen, weil "externe Lösungen" (Sprachsteuerung, fhemApp, whatever...) ...

OK, verstehe. Damit war der Gedanke wohl falsch nur ein Device für mehrere Sender mit jeweiligen Reading (Außen_temp, Whz_temp, ...) anzulegen falsch.
Für jedes Hardwaregerät also ein Device in FHEM.

Thx.

Beta-User

"Falsch" ist m.E. zu hart formuliert; letztlich kommt es ja darauf an, was man mit den Daten anstellen will. Prinzipiell finde ich es "standardisiert" einfacher, sowohl was die Darstellung angeht, wie auch, was die Automatisierung betrifft.
Kann schon sein, dass andere das anders sehen und ihre Gründe dafür haben...
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