HTTPMOD - parsing JSON - Wert "mittendrin" extrahieren

Begonnen von Brot, 03 Januar 2020, 18:31:07

Vorheriges Thema - Nächstes Thema

Brot

Hallo zusammen,

ich habe hier JSON-Rohdaten:
{"7892478927892349593995484839":{"Pizzaofen":{"model":"Pizzacoli 5000","max":321.03,"min":183.82,"timestamp":1577988701,"energylevel":2221,"boost":0,"accuracy":25.73,"minutes":8,"alert":0,"error":null}}}

Will ich jetzt so etwas wie den timestamp als Reading haben, bekommt man das ganz wundervoll hin, wenn man in die HTTPMOD-Definition so was da schreibt:
defmod htpPizzaOfen HTTPMOD https://192.168.1.38/pizzacoli5000/api/getjson/7892478927892349593995484839 60
attr htpPizzaOfen userattr reading01JSON reading01Name
attr htpPizzaOfen reading01JSON .*timestamp
attr htpPizzaOfen reading01Name timestamp


...oder von mir aus auch beim reading01JSON die lange Version:
attr htpPizzaOfen reading01JSON 7892478927892349593995484839_Pizzaofen_timestamp
(timestamp ist in dieser Wurst ganz am Schluss)

Was ich aber nicht hin bekomme, ist, dass ich aus dieser Wurst, mittendrin, den Wert "Pizzaofen" heraus bekomme. Würde ich schreiben..:
attr htpPizzaOfen reading01JSON 7892478927892349593995484839
attr htpPizzaOfen reading01Name deviceName

...in der Hoffnung, dass er mir den nachgelagerten "Pizzaofen" im Reading deviceName übergibt, bekomme ich so was da:
     2020-01-03 18:13:25   deviceName-1    8
     2020-01-03 18:13:25   deviceName-2    2221
     2020-01-03 18:13:25   deviceName-3    25.73
     2020-01-03 18:13:25   deviceName-4    321.03
     2020-01-03 18:13:25   deviceName-5    183.82
     2020-01-03 18:13:25   deviceName-6    0
     2020-01-03 18:13:25   deviceName-7    1578070433
     2020-01-03 18:13:25   deviceName-8    Pizzacoli 5000

Also irgendwie alles und durchnummeriert, nur nicht den Wert "Pizzaofen".

Wie bekomm' ich denn den raus?

MfG,
Eiweißabendbrot
diverse Raspberry Pis, Orange Pi 3, Odroid N2, Alexa, jede Menge ESP8266er
Raspbian, FHEM, NextCloud, Pi-Hole, OctoPrint, MagicMirror²
Tasmota, Eqiva Bluetooth Thermo, Senseo-ESP8266-Mod, Conbee-II HUE, Z-Wave, BTLE_FlowerSens...

fireball

Hi,

ich habe mich auch über XMAS viel mit HTTPMOD beschäftigt und ich glaube ich kann dir hier helfen.
Schau mal hier https://wiki.fhem.de/wiki/HTTPMOD#JSON_Lists

if you don't want several subreadings but one reading that contains the list of modes, you can specify a recombine expression:

attr device reading01Name Modes
attr device reading01RecombineExpr join ",", @matchlist


Das sollte dir helfen.
VG
René

Brot

Zitat von: fireball am 03 Januar 2020, 19:33:56
Hi,

ich habe mich auch über XMAS viel mit HTTPMOD beschäftigt und ich glaube ich kann dir hier helfen.
Schau mal hier https://wiki.fhem.de/wiki/HTTPMOD#JSON_Lists

if you don't want several subreadings but one reading that contains the list of modes, you can specify a recombine expression:

attr device reading01Name Modes
attr device reading01RecombineExpr join ",", @matchlist


Das sollte dir helfen.
VG
René

Leider nein. Das generiert nur eine transponierte Liste der Readings, als ein Reading, nach dem "Pizzaofen":
     2020-01-03 21:43:44   deviceName      48.24,8,2221,321.03,183.82,0,1578070433,Pizzacoli 5000
Der Wert "Pizzaofen" selbst..:
{"7892478927892349593995484839":{"Pizzaofen":{"model":"Pizzacoli 5000","max":321.03,"min":183.82,"timestamp":1577988701,"energylevel":2221,"boost":0,"accuracy":25.73,"minutes":8,"alert":0,"error":null}}}
(der zweite Wert von links, zwischen "7892478927892349593995484839" und "model")
...wird wieder nicht ausgegeben.  :(
diverse Raspberry Pis, Orange Pi 3, Odroid N2, Alexa, jede Menge ESP8266er
Raspbian, FHEM, NextCloud, Pi-Hole, OctoPrint, MagicMirror²
Tasmota, Eqiva Bluetooth Thermo, Senseo-ESP8266-Mod, Conbee-II HUE, Z-Wave, BTLE_FlowerSens...