FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Brot am 03 Januar 2020, 18:31:07

Titel: HTTPMOD - parsing JSON - Wert "mittendrin" extrahieren
Beitrag von: Brot am 03 Januar 2020, 18:31:07
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
Titel: Antw:HTTPMOD - parsing JSON - Wert "mittendrin" extrahieren
Beitrag 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 (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é
Titel: Antw:HTTPMOD - parsing JSON - Wert "mittendrin" extrahieren
Beitrag von: Brot am 03 Januar 2020, 21:51:42
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 (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.  :(