HTTPMOD JSON auslesen und eine Liste im Reading erstellen

Begonnen von rvideobaer, 04 März 2019, 02:03:29

Vorheriges Thema - Nächstes Thema

rvideobaer

Hallo,

ich versuche von meinem Yamaha Receiver eine Liste der Presets (gespeicherte Netradio Stationen) zu extrahieren.
Leider komme ich nicht weiter, nach viel mühe habe ich es geschafft für die Presets einzelne Readings zu erstellen. Mir wäre aber eine Liste in einem Reading lieber. Meine Kenntnisse reichen hier leider nicht weiter, in den vielen Postings die ich gelesen habe werden leider immer wieder verschiedene Attribute verwendet die es bei mir nicht gibt und sich auch nicht erstellen lassen. Ich find das verwirrend und das Wiki ist mir auch keine Hilfe.
Vielleicht hat jemand soviel Kenntnisse der Materie das er mir helfen könnte.
Hier das List:
Internals:
   BUSY       0
   DEF        http://192.168.178.112/YamahaExtendedControl/v1/netusb/getPresetInfo
   FUUID      5c7bada6-f33f-0fd2-0690-ae77599bfbd862ab
   Interval   300
   JSONEnabled 1
   LASTSEND   1551659036.62743
   MainURL    http://192.168.178.112/YamahaExtendedControl/v1/netusb/getPresetInfo
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       Rx_601_presets
   NOTIFYDEV  global
   NR         309
   NTFY_ORDER 50-Rx_601_presets
   STATE      1
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://192.168.178.112:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.112/YamahaExtendedControl/v1/netusb/getPresetInfo
   header     
   host       192.168.178.112
   httpbody   {"response_code":0,"preset_info":[{"input":"net_radio","text":"HIT RADIO FFH","attribute":0},{"input":"net_radio","text":"ffn 103.1 Aurich","attribute":0},{"input":"net_radio","text":"Cinemix","attribute":0},{"input":"net_radio","text":"RADIO PSR 90.8 Chemnitz","attribute":0},{"input":"net_radio","text":"RADIO PSR Relax","attribute":0},{"input":"net_radio","text":"RADIO PSR Deutschpop Nonstop","attribute":0},{"input":"net_radio","text":"ANTENNE BAYERN","attribute":0},{"input":"net_radio","text":"FFH SOUNDTRACK","attribute":0},{"input":"net_radio","text":"FFH iTUNES TOP 40","attribute":0},{"input":"net_radio","text":"FFH ACOUSTIC HITS","attribute":0},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""},{"input":"unknown","text":""}],"func_list":["clear","move"]}
   httpheader HTTP/1.1 200 OK
Server: Network_Module/1.0 (RX-S601)
Content-Type: application/json
Content-Length: 1588
   httpversion 1.0
   hu_blocking 0
   hu_filecount 24
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /YamahaExtendedControl/v1/netusb/getPresetInfo
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.112/YamahaExtendedControl/v1/netusb/getPresetInfo
   value      0
   OLDREADINGS:
   QUEUE:
   READINGS:
     2019-03-03 23:33:58   LAST_ERROR      read from http://192.168.178.112:80 timed out
     2019-03-04 00:07:41   LAST_REQUEST    update
     2019-03-04 01:23:58   preset_info_01_text HIT RADIO FFH
     2019-03-04 01:23:58   preset_info_02_text ffn 103.1 Aurich
     2019-03-04 01:23:58   preset_info_03_text Cinemix
     2019-03-04 01:23:58   preset_info_04_text RADIO PSR 90.8 Chemnitz
     2019-03-04 01:23:58   preset_info_05_text RADIO PSR Relax
     2019-03-04 01:23:58   preset_info_06_text RADIO PSR Deutschpop Nonstop
     2019-03-04 01:23:58   preset_info_07_text ANTENNE BAYERN
     2019-03-04 01:23:58   preset_info_08_text FFH SOUNDTRACK
     2019-03-04 01:23:58   preset_info_09_text FFH iTUNES TOP 40
     2019-03-04 01:23:58   preset_info_10_text FFH ACOUSTIC HITS
     2019-03-04 01:23:58   preset_info_11_text
     2019-03-04 01:23:58   preset_info_12_text
     2019-03-04 01:23:58   preset_info_13_text
     2019-03-04 01:23:58   preset_info_14_text
     2019-03-04 01:23:58   preset_info_15_text
     2019-03-04 01:23:58   preset_info_16_text
     2019-03-04 01:23:58   preset_info_17_text
     2019-03-04 01:23:58   preset_info_18_text
     2019-03-04 01:23:58   preset_info_19_text
     2019-03-04 01:23:58   preset_info_20_text
     2019-03-04 01:23:58   preset_info_21_text
     2019-03-04 01:23:58   preset_info_22_text
     2019-03-04 01:23:58   preset_info_23_text
     2019-03-04 01:23:58   preset_info_24_text
     2019-03-04 01:23:58   preset_info_25_text
     2019-03-04 01:23:58   preset_info_26_text
     2019-03-04 01:23:58   preset_info_27_text
     2019-03-04 01:23:58   preset_info_28_text
     2019-03-04 01:23:58   preset_info_29_text
     2019-03-04 01:23:58   preset_info_30_text
     2019-03-04 01:23:58   preset_info_31_text
     2019-03-04 01:23:58   preset_info_32_text
     2019-03-04 01:23:58   preset_info_33_text
     2019-03-04 01:23:58   preset_info_34_text
     2019-03-04 01:23:58   preset_info_35_text
     2019-03-04 01:23:58   preset_info_36_text
     2019-03-04 01:23:58   preset_info_37_text
     2019-03-04 01:23:58   preset_info_38_text
     2019-03-04 01:23:58   preset_info_39_text
     2019-03-04 01:23:58   preset_info_40_text
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.112/YamahaExtendedControl/v1/netusb/getPresetInfo
     value      0
   defptr:
     readingBase:
       preset_info_01_text reading
       preset_info_02_text reading
       preset_info_03_text reading
       preset_info_04_text reading
       preset_info_05_text reading
       preset_info_06_text reading
       preset_info_07_text reading
       preset_info_08_text reading
       preset_info_09_text reading
       preset_info_10_text reading
       preset_info_11_text reading
       preset_info_12_text reading
       preset_info_13_text reading
       preset_info_14_text reading
       preset_info_15_text reading
       preset_info_16_text reading
       preset_info_17_text reading
       preset_info_18_text reading
       preset_info_19_text reading
       preset_info_20_text reading
       preset_info_21_text reading
       preset_info_22_text reading
       preset_info_23_text reading
       preset_info_24_text reading
       preset_info_25_text reading
       preset_info_26_text reading
       preset_info_27_text reading
       preset_info_28_text reading
       preset_info_29_text reading
       preset_info_30_text reading
       preset_info_31_text reading
       preset_info_32_text reading
       preset_info_33_text reading
       preset_info_34_text reading
       preset_info_35_text reading
       preset_info_36_text reading
       preset_info_37_text reading
       preset_info_38_text reading
       preset_info_39_text reading
       preset_info_40_text reading
     readingNum:
       preset_info_01_text
       preset_info_02_text
       preset_info_03_text
       preset_info_04_text
       preset_info_05_text
       preset_info_06_text
       preset_info_07_text
       preset_info_08_text
       preset_info_09_text
       preset_info_10_text
       preset_info_11_text
       preset_info_12_text
       preset_info_13_text
       preset_info_14_text
       preset_info_15_text
       preset_info_16_text
       preset_info_17_text
       preset_info_18_text
       preset_info_19_text
       preset_info_20_text
       preset_info_21_text
       preset_info_22_text
       preset_info_23_text
       preset_info_24_text
       preset_info_25_text
       preset_info_26_text
       preset_info_27_text
       preset_info_28_text
       preset_info_29_text
       preset_info_30_text
       preset_info_31_text
       preset_info_32_text
       preset_info_33_text
       preset_info_34_text
       preset_info_35_text
       preset_info_36_text
       preset_info_37_text
       preset_info_38_text
       preset_info_39_text
       preset_info_40_text
     readingOutdated:
     requestReadings:
       update:
         preset_info_01_text reading
         preset_info_02_text reading
         preset_info_03_text reading
         preset_info_04_text reading
         preset_info_05_text reading
         preset_info_06_text reading
         preset_info_07_text reading
         preset_info_08_text reading
         preset_info_09_text reading
         preset_info_10_text reading
         preset_info_11_text reading
         preset_info_12_text reading
         preset_info_13_text reading
         preset_info_14_text reading
         preset_info_15_text reading
         preset_info_16_text reading
         preset_info_17_text reading
         preset_info_18_text reading
         preset_info_19_text reading
         preset_info_20_text reading
         preset_info_21_text reading
         preset_info_22_text reading
         preset_info_23_text reading
         preset_info_24_text reading
         preset_info_25_text reading
         preset_info_26_text reading
         preset_info_27_text reading
         preset_info_28_text reading
         preset_info_29_text reading
         preset_info_30_text reading
         preset_info_31_text reading
         preset_info_32_text reading
         preset_info_33_text reading
         preset_info_34_text reading
         preset_info_35_text reading
         preset_info_36_text reading
         preset_info_37_text reading
         preset_info_38_text reading
         preset_info_39_text reading
         preset_info_40_text reading
   sslargs:
Attributes:
   enableControlSet 1
   extractAllJSON 1
   extractAllJSONFilter text
   reading01Name text
   reading01RecombineExpr join ",", @matchlist
   room       Haus
   showBody   1
   showError  1
   userReadings Liste {InternalVal($name,"httpbody",'none') =~ m/(?<=text":")[a-zA-Z .0-9]*(?=","attribute)/; $1 }
   userattr   reading01Name reading01RecombineExpr


Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

StefanStrobel

Hallo Rolf,

Welche Attribute, die es bei Dir nicht gibt, meinst Du denn?

Du hast ein Reading mit reading01Name definiert, ihm aber weder eine Regex noch ein JSON-Objekt zugewiesen. Das kann dann auch nicht funktionieren. Auch die RecombineExpr hängt so in der Luft.

Mit extractAllJSON wird jedes Objekt zu einem Reading. Um daraus dann wieder ein Liste zu erzeugen, benötigst Du ein passendes UserReading. RecombineExpr etc. haben damit nichts zu tun.

Alternativ kannst Du ohne UserReading ein eigenes Reading im Modbus-Modul definieren. Dazu gehört aber ein reading01JSON o.ä.
Wenn es das so definierte JSON-Objekt nicht gibt, versucht das Modul den String als Regex zu matchen und liefert eine Liste, die dann entweder mehrere durchnummerierte Reafings erzeugt oder per RecombineRegex zu einem Reading zusammengefügt werden kann.

Gruß
    Stefan

rvideobaer

Hallo,

ja ich weiß das das alles nicht so recht zusammen past, deshalb habe ich alles noch einmal neu gemacht.

Internals:
   BUSY       0
   DEF        http://192.168.178.112/YamahaExtendedControl/v2/netusb/getPlayInfo 30
   FUUID      5c7bbe93-f33f-0fd2-e1fe-2caef803328dcfaa
   Interval   30
   JSONEnabled 1
   LASTSEND   1551742333.54968
   MainURL    http://192.168.178.112/YamahaExtendedControl/v2/netusb/getPlayInfo
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       Rx_601_S
   NOTIFYDEV  global
   NR         310
   NTFY_ORDER 50-Rx_601_S
   STATE      ???
   TRIGGERTIME 1551742363.5463
   TRIGGERTIME_FMT 2019-03-05 00:32:43
   TYPE       HTTPMOD
   addr       http://192.168.178.112:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.112/YamahaExtendedControl/v2/netusb/getPlayInfo
   header     
   host       192.168.178.112
   httpbody   {"response_code":0,"input":"net_radio","play_queue_type":"system","playback":"play","repeat":"off","shuffle":"off","play_time":317,"total_time":0,"artist":"HIT RADIO FFH","album":"","track":"Madcon - Beggin'","albumart_url":"/YamahaRemoteControl/AlbumART/AlbumART3744.jpg","albumart_id":3744,"usb_devicetype":"unknown","auto_stopped":false,"attribute":16785411,"repeat_available":[],"shuffle_available":[]}
   httpheader HTTP/1.1 200 OK
Server: Network_Module/1.0 (RX-S601)
Content-Type: application/json
Content-Length: 406
   httpversion 1.0
   hu_blocking 0
   hu_filecount 2
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /YamahaExtendedControl/v2/netusb/getPlayInfo
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.112/YamahaExtendedControl/v2/netusb/getPlayInfo
   value      0
   OLDREADINGS:
   QUEUE:
   READINGS:
     2019-03-05 00:32:13   Preset          HIT RADIO FFH:ffn 103.1 Aurich:Cinemix:RADIO PSR 90.8 Chemnitz:RADIO PSR Relax:RADIO PSR Deutschpop Nonstop:ANTENNE BAYERN:FFH SOUNDTRACK:FFH iTUNES TOP 40:FFH ACOUSTIC HITS::::
     2019-03-05 00:32:13   albumart        /YamahaRemoteControl/AlbumART/AlbumART3744.jpg
     2019-03-05 00:32:13   albumart_url    http://192.168.178.112/YamahaRemoteControl/AlbumART/AlbumART3744.jpg
     2019-03-05 00:00:43   preset_info_01_text HIT RADIO FFH
     2019-03-05 00:00:43   preset_info_02_text ffn 103.1 Aurich
     2019-03-05 00:00:43   preset_info_03_text Cinemix
     2019-03-05 00:00:43   preset_info_04_text RADIO PSR 90.8 Chemnitz
     2019-03-05 00:00:43   preset_info_05_text RADIO PSR Relax
     2019-03-05 00:00:43   preset_info_06_text RADIO PSR Deutschpop Nonstop
     2019-03-05 00:00:43   preset_info_07_text ANTENNE BAYERN
     2019-03-05 00:00:43   preset_info_08_text FFH SOUNDTRACK
     2019-03-05 00:00:43   preset_info_09_text FFH iTUNES TOP 40
     2019-03-05 00:00:43   preset_info_10_text FFH ACOUSTIC HITS
     2019-03-05 00:00:43   preset_info_11_text
     2019-03-05 00:00:43   preset_info_12_text
     2019-03-05 00:00:43   preset_info_13_text
     2019-03-05 00:00:43   preset_info_14_text
     2019-03-05 00:00:43   preset_info_15_text
     2019-03-05 00:00:43   preset_info_16_text
     2019-03-05 00:00:43   preset_info_17_text
     2019-03-05 00:00:43   preset_info_18_text
     2019-03-05 00:00:43   preset_info_19_text
     2019-03-05 00:00:43   preset_info_20_text
     2019-03-05 00:00:43   preset_info_21_text
     2019-03-05 00:00:43   preset_info_22_text
     2019-03-05 00:00:43   preset_info_23_text
     2019-03-05 00:00:43   preset_info_24_text
     2019-03-05 00:00:43   preset_info_25_text
     2019-03-05 00:00:43   preset_info_26_text
     2019-03-05 00:00:43   preset_info_27_text
     2019-03-05 00:00:43   preset_info_28_text
     2019-03-05 00:00:43   preset_info_29_text
     2019-03-05 00:00:43   preset_info_30_text
     2019-03-05 00:00:43   preset_info_31_text
     2019-03-05 00:00:43   preset_info_32_text
     2019-03-05 00:00:43   preset_info_33_text
     2019-03-05 00:00:43   preset_info_34_text
     2019-03-05 00:00:43   preset_info_35_text
     2019-03-05 00:00:43   preset_info_36_text
     2019-03-05 00:00:43   preset_info_37_text
     2019-03-05 00:00:43   preset_info_38_text
     2019-03-05 00:00:43   preset_info_39_text
     2019-03-05 00:00:43   preset_info_40_text
     2019-03-04 10:30:58   vtuner_id       00A0DED2E4B5
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.112/YamahaExtendedControl/v2/netusb/getPlayInfo
     value      0
   defptr:
     readingBase:
       Text       reading
       albumart   reading
       func_list_0 get
       func_list_1 get
       preset_info_01_attribute get
       preset_info_01_input get
       preset_info_01_text get
       preset_info_02_attribute get
       preset_info_02_input get
       preset_info_02_text get
       preset_info_03_attribute get
       preset_info_03_input get
       preset_info_03_text get
       preset_info_04_attribute get
       preset_info_04_input get
       preset_info_04_text get
       preset_info_05_attribute get
       preset_info_05_input get
       preset_info_05_text get
       preset_info_06_attribute get
       preset_info_06_input get
       preset_info_06_text get
       preset_info_07_attribute get
       preset_info_07_input get
       preset_info_07_text get
       preset_info_08_attribute get
       preset_info_08_input get
       preset_info_08_text get
       preset_info_09_attribute get
       preset_info_09_input get
       preset_info_09_text get
       preset_info_10_attribute get
       preset_info_10_input get
       preset_info_10_text get
       preset_info_11_input get
       preset_info_11_text get
       preset_info_12_input get
       preset_info_12_text get
       preset_info_13_input get
       preset_info_13_text get
       preset_info_14_input get
       preset_info_14_text get
       preset_info_15_input get
       preset_info_15_text get
       preset_info_16_input get
       preset_info_16_text get
       preset_info_17_input get
       preset_info_17_text get
       preset_info_18_input get
       preset_info_18_text get
       preset_info_19_input get
       preset_info_19_text get
       preset_info_20_input get
       preset_info_20_text get
       preset_info_21_input get
       preset_info_21_text get
       preset_info_22_input get
       preset_info_22_text get
       preset_info_23_input get
       preset_info_23_text get
       preset_info_24_input get
       preset_info_24_text get
       preset_info_25_input get
       preset_info_25_text get
       preset_info_26_input get
       preset_info_26_text get
       preset_info_27_input get
       preset_info_27_text get
       preset_info_28_input get
       preset_info_28_text get
       preset_info_29_input get
       preset_info_29_text get
       preset_info_30_input get
       preset_info_30_text get
       preset_info_31_input get
       preset_info_31_text get
       preset_info_32_input get
       preset_info_32_text get
       preset_info_33_input get
       preset_info_33_text get
       preset_info_34_input get
       preset_info_34_text get
       preset_info_35_input get
       preset_info_35_text get
       preset_info_36_input get
       preset_info_36_text get
       preset_info_37_input get
       preset_info_37_text get
       preset_info_38_input get
       preset_info_38_text get
       preset_info_39_input get
       preset_info_39_text get
       preset_info_40_input get
       preset_info_40_text get
       response_code get
       vtuner_id  reading
     readingNum:
       Text       1
       albumart   03
       func_list_0 01
       func_list_1 01
       preset_info_01_attribute 01
       preset_info_01_input 01
       preset_info_01_text 01
       preset_info_02_attribute 01
       preset_info_02_input 01
       preset_info_02_text 01
       preset_info_03_attribute 01
       preset_info_03_input 01
       preset_info_03_text 01
       preset_info_04_attribute 01
       preset_info_04_input 01
       preset_info_04_text 01
       preset_info_05_attribute 01
       preset_info_05_input 01
       preset_info_05_text 01
       preset_info_06_attribute 01
       preset_info_06_input 01
       preset_info_06_text 01
       preset_info_07_attribute 01
       preset_info_07_input 01
       preset_info_07_text 01
       preset_info_08_attribute 01
       preset_info_08_input 01
       preset_info_08_text 01
       preset_info_09_attribute 01
       preset_info_09_input 01
       preset_info_09_text 01
       preset_info_10_attribute 01
       preset_info_10_input 01
       preset_info_10_text 01
       preset_info_11_input 01
       preset_info_11_text 01
       preset_info_12_input 01
       preset_info_12_text 01
       preset_info_13_input 01
       preset_info_13_text 01
       preset_info_14_input 01
       preset_info_14_text 01
       preset_info_15_input 01
       preset_info_15_text 01
       preset_info_16_input 01
       preset_info_16_text 01
       preset_info_17_input 01
       preset_info_17_text 01
       preset_info_18_input 01
       preset_info_18_text 01
       preset_info_19_input 01
       preset_info_19_text 01
       preset_info_20_input 01
       preset_info_20_text 01
       preset_info_21_input 01
       preset_info_21_text 01
       preset_info_22_input 01
       preset_info_22_text 01
       preset_info_23_input 01
       preset_info_23_text 01
       preset_info_24_input 01
       preset_info_24_text 01
       preset_info_25_input 01
       preset_info_25_text 01
       preset_info_26_input 01
       preset_info_26_text 01
       preset_info_27_input 01
       preset_info_27_text 01
       preset_info_28_input 01
       preset_info_28_text 01
       preset_info_29_input 01
       preset_info_29_text 01
       preset_info_30_input 01
       preset_info_30_text 01
       preset_info_31_input 01
       preset_info_31_text 01
       preset_info_32_input 01
       preset_info_32_text 01
       preset_info_33_input 01
       preset_info_33_text 01
       preset_info_34_input 01
       preset_info_34_text 01
       preset_info_35_input 01
       preset_info_35_text 01
       preset_info_36_input 01
       preset_info_36_text 01
       preset_info_37_input 01
       preset_info_37_text 01
       preset_info_38_input 01
       preset_info_38_text 01
       preset_info_39_input 01
       preset_info_39_text 01
       preset_info_40_input 01
       preset_info_40_text 01
       response_code 01
       vtuner_id  02
     readingOutdated:
     requestReadings:
       get01:
         Text       reading 1
         func_list_0 get 01
         func_list_1 get 01
         preset_info_01_attribute get 01
         preset_info_01_input get 01
         preset_info_01_text get 01
         preset_info_02_attribute get 01
         preset_info_02_input get 01
         preset_info_02_text get 01
         preset_info_03_attribute get 01
         preset_info_03_input get 01
         preset_info_03_text get 01
         preset_info_04_attribute get 01
         preset_info_04_input get 01
         preset_info_04_text get 01
         preset_info_05_attribute get 01
         preset_info_05_input get 01
         preset_info_05_text get 01
         preset_info_06_attribute get 01
         preset_info_06_input get 01
         preset_info_06_text get 01
         preset_info_07_attribute get 01
         preset_info_07_input get 01
         preset_info_07_text get 01
         preset_info_08_attribute get 01
         preset_info_08_input get 01
         preset_info_08_text get 01
         preset_info_09_attribute get 01
         preset_info_09_input get 01
         preset_info_09_text get 01
         preset_info_10_attribute get 01
         preset_info_10_input get 01
         preset_info_10_text get 01
         preset_info_11_input get 01
         preset_info_11_text get 01
         preset_info_12_input get 01
         preset_info_12_text get 01
         preset_info_13_input get 01
         preset_info_13_text get 01
         preset_info_14_input get 01
         preset_info_14_text get 01
         preset_info_15_input get 01
         preset_info_15_text get 01
         preset_info_16_input get 01
         preset_info_16_text get 01
         preset_info_17_input get 01
         preset_info_17_text get 01
         preset_info_18_input get 01
         preset_info_18_text get 01
         preset_info_19_input get 01
         preset_info_19_text get 01
         preset_info_20_input get 01
         preset_info_20_text get 01
         preset_info_21_input get 01
         preset_info_21_text get 01
         preset_info_22_input get 01
         preset_info_22_text get 01
         preset_info_23_input get 01
         preset_info_23_text get 01
         preset_info_24_input get 01
         preset_info_24_text get 01
         preset_info_25_input get 01
         preset_info_25_text get 01
         preset_info_26_input get 01
         preset_info_26_text get 01
         preset_info_27_input get 01
         preset_info_27_text get 01
         preset_info_28_input get 01
         preset_info_28_text get 01
         preset_info_29_input get 01
         preset_info_29_text get 01
         preset_info_30_input get 01
         preset_info_30_text get 01
         preset_info_31_input get 01
         preset_info_31_text get 01
         preset_info_32_input get 01
         preset_info_32_text get 01
         preset_info_33_input get 01
         preset_info_33_text get 01
         preset_info_34_input get 01
         preset_info_34_text get 01
         preset_info_35_input get 01
         preset_info_35_text get 01
         preset_info_36_input get 01
         preset_info_36_text get 01
         preset_info_37_input get 01
         preset_info_37_text get 01
         preset_info_38_input get 01
         preset_info_38_text get 01
         preset_info_39_input get 01
         preset_info_39_text get 01
         preset_info_40_input get 01
         preset_info_40_text get 01
         response_code get 01
       get02:
         vtuner_id  reading 02
       get03:
         albumart   reading 03
       update:
         albumart   reading 03
   sslargs:
Attributes:
   enableControlSet 1
   extractAllJSON 1
   extractAllJSONFilter text
   get01Name  Presetholen
   get01URL   http://192.168.178.112/YamahaExtendedControl/v1/netusb/getPresetInfo
   get02Name  v_tunerid
   get02URL   http://192.168.178.112/YamahaExtendedControl/v2/system/getNetworkStatus
   get03Name  albumart_url
   get03URL   http://192.168.178.112/YamahaExtendedControl/v2/netusb/getPlayInfo
   reading01JSON text
   reading01Name Preset
   reading02JSON vtuner_id
   reading02Name vtuner_id
   reading03JSON albumart_url
   reading03Name albumart
   room       Haus
   showBody   1
   userReadings albumart_url {"http://".InternalVal($name,"host","").ReadingsVal($name,"albumart","")},

Preset {ReadingsVal($name,"preset_info_01_text","").":".ReadingsVal($name,"preset_info_02_text","")
.":".ReadingsVal($name,"preset_info_03_text","").":".ReadingsVal($name,"preset_info_04_text","")
.":".ReadingsVal($name,"preset_info_05_text","").":".ReadingsVal($name,"preset_info_06_text","")
.":".ReadingsVal($name,"preset_info_07_text","").":".ReadingsVal($name,"preset_info_08_text","")
.":".ReadingsVal($name,"preset_info_09_text","").":".ReadingsVal($name,"preset_info_10_text","")
.":".ReadingsVal($name,"preset_info_11_text","").":".ReadingsVal($name,"preset_info_12_text","")
.":".ReadingsVal($name,"preset_info_13_text","").":".ReadingsVal($name,"preset_info_14_text","")}
   userattr   get01ExtractAllJSON:0,1,2 get01JSON get01Name get01URL get02Name get02URL get03Name get03URL getData getHeader1 getHeader2 getURL reading01JSON reading01Name reading01XPath-Strict reading02JSON reading02Name reading02Regex reading03JSON reading03Name reading03Regex reading1Name reading1Regex


ich kann alle werte holen. Die liste habe ich mit einem Userreadings zusammengestellt, nicht sehr elegant aber ich habe erst einmal eine liste. Da hatte ich halt gehofft das das gleich von einem Jsonreading erledigt werden könnte. Aber da komme ich im Moment nicht weiter. Das Wiki oder die commandref ist mir da auch keine große Hilfe da die Beispiele meist gleich so ins komplizierte gehen das ich gleich aufgebe das zu verstehen. Eine Schritt für Schritt Anleitung die man erst einmal leicht nachvollziehen kann um die zusammenhänge zu begreifen gibt es meist nicht. Aber jetzt habe ich erst einmal ein paar teile begriffen. Schön wäre wenn mir jetzt noch jemand sagen könnte das das was ich mit der liste machen möchte möglich ist, und wie der weg dahin aussehen könnte.

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

StefanStrobel

Hallo Rolf,

Es gibt mehrere Möglichkeiten, mit HTTPMOD JSON-Objekte in Readings zu parsen.
ExtractAllJSON und den expliziten Zugriff auf ein einzelnes Objekt per Reading01JSON hast Du schon verwendet.

Wenn Du bei Reading01JSON etwas angibst, das als JSON-Objekt nicht existiert,
dann versucht HTTPMOD den Text von Reading01JSON (oder entsprechenden Attributen)
als Regex zu interpretieren und die mit _ verketteten Objekt-Namen zu matchen.
Das Ergebnis ist zunächst eine Liste, aus der wieder durchnummerierte Readings erzeugt werden.

Beispiel:

attr jsontest enableControlSet 1
attr jsontest reading01JSON preset_info_.*_text
attr jsontest reading01Name Test


Erzeugt Readings wie

Test-1 HIT RADIO FFH
Test-10 FFH ACOUSTIC HITS
Test-11
Test-12
Test-13
Test-14
Test-15
Test-16
Test-17
Test-18
Test-19
Test-2 ffn 103.1 Aurich


Um so eine Ergebnisliste wieder zusammen zu fassen,
Kannst Du dann eine RecombineExpr verwenden:


attr jsontest reading01RecombineExpr join ",", @matchlist


Dabei kommt dann so etwas heraus:


Test HIT RADIO FFH,ffn 103.1 Aurich,Cinemix,RADIO PSR 90.8 Chemnitz,RADIO PSR Relax,RADIO PSR Deutschpop Nonstop,ANTENNE BAYERN,FFH SOUNDTRACK,FFH iTUNES TOP 40,FFH ACOUSTIC HITS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,


Um die leeren Einträge zu entfernen, musst Du die RecombineExpr mit grep  o.ä. optimieren.
Um die ursprüngliche Reihenfolge zu behalten siehe https://forum.fhem.de/index.php?topic=62624.0

Gruß
    Stefan

rvideobaer

Hallo Stefan,

ich habe jetzt mit etwas Hilfe meines Sohnes ein für mich brauchbares Ergebnis erreicht.
Preset          1 - HIT RADIO FFH:2 - ffn 103.1 Aurich:3 - Cinemix:4 - RADIO PSR 90.8 Chemnitz:5 - RADIO PSR Relax:6 - RADIO PSR Deutschpop Nonstop:7 - ANTENNE BAYERN:8 - FFH SOUNDTRACK:9 - FFH iTUNES TOP 40:10 - FFH ACOUSTIC HITS
mit diesen Attributen

Attributes:
   enableControlSet 1
   extractAllJSON 1
   extractAllJSONFilter text
   get01Name  Presetholen
   get01URL   http://192.168.178.112/YamahaExtendedControl/v1/netusb/getPresetInfo
   get02Name  v_tunerid
   get02URL   http://192.168.178.112/YamahaExtendedControl/v2/system/getNetworkStatus
   get03Name  albumart_url
   get03URL   http://192.168.178.112/YamahaExtendedControl/v2/netusb/getPlayInfo
   reading01JSON preset_info_.*_text
   reading01Name Preset
   reading01RecombineExpr join ":", grep { ! /^\d+ \-\s*$/ } map { ($_)." - ".@matchlist[$_-1] } (1.. (scalar @matchlist))
   reading02JSON vtuner_id
   reading02Name vtuner_id
   reading03JSON albumart_url
   reading03Name albumart
   room       Haus
   showBody   1
   userReadings albumart_url {"http://".InternalVal($name,"host","").ReadingsVal($name,"albumart","")},
   userattr   get01ExtractAllJSON:0,1,2 get01JSON get01Name get01URL get02Name get02URL get03Name get03URL getData getHeader1 getHeader2 getURL reading01JSON reading01Name reading01RecombineExpr reading01XPath-Strict reading02JSON reading02Name reading02Regex reading03JSON reading03Name reading03Regex reading1Name reading1Regex

Damit kann ich erst einmal arbeiten.

Danke Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr