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
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
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
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
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