Hi.
Mit HTTPMOD habe ich bei Regex schon eineige Dinge gelöst, aber bei JSON scheitere ich kläglich.
Ich versuche aus der Antwort verschiedene Readings herauszubekommen.
#Wiener Linien Abfahrtsmonitor
define WLabfahrtsmonitor HTTPMOD http://www.wienerlinien.at/qando-fpa/monitor?aD=1&aflT=1&diva=60200726&time=2016-12-16T22%3A38%3A33.231%2B0100 86400
attr WLabfahrtsmonitor userattr get01JSON get01Name get02JSON get02Name getData getHeader1 getHeader2
attr WLabfahrtsmonitor getData 1
attr WLabfahrtsmonitor getHeader1 Content-Type: application/json
attr WLabfahrtsmonitor getHeader2 Accept: */*
via extractJAllASON klappt das alles wunderbar, ist aber ein bisl viel zu viel.
attr WLabfahrtsmonitor extractAllJSON
Laut Verbose=5 kommt das auch an:
2016.12.17 01:16:03 5: WLabfahrtsmonitor: JSON Flatter sets data_monitors_01_locationStop_properties_title to Kugelmanngasse
2016.12.17 01:16:03 5: WLabfahrtsmonitor: JSON Flatter in hash while, key = lines, value = ARRAY(0x3962aa0)
2016.12.17 01:16:03 5: WLabfahrtsmonitor: JSON Flatter doing recursion because value is a ARRAY
also hab ich es eingeschränkt und so versucht:
attr WLabfahrtsmonitor get01Name Haltestellenname01
attr WLabfahrtsmonitor get01JSON data_monitors_01_locationStop_properties_title
aber die Zuweisung funktioniert nicht
2016.12.17 01:16:03 5: WLabfahrtsmonitor: Read starts parsing response to update with defined readings:
2016.12.17 01:16:03 3: WLabfahrtsmonitor: Read response to update didn't match any Reading
2016.12.17 01:16:03 5: WLabfahrtsmonitor: HandleSendQueue called, qlen = 0
Hat jemand einen Tipp für mich, wie ich die Zuweisung von data_monitors_01_locationStop_properties_title hinbekomme?
Greetings,
Tbone
warum hast du get01 ... gesetzt und nicht reading01...?
Danke, mit readings funktioniert es.
Zeigt deutlich, das ich das Beispiel im Wiki "Parsing JSON" nicht verstanden habe.
Mir ist der Unterschied get/readings nicht klar. Kannst Du mich erhellen?
attr test2 get01JSON data_34.4008.value
attr device reading01JSON modes
Danke,
Tbone
Im Kurzstil: Es gibt wohl drei Varianten
set... -> definiert ein set Befehl
get... -> definiert ein get Befehl
reading... --> definiert ein Reading
Die ersten beiden werden explizit aufgerufen
das Reading wird durch polling gefüllt
Danke,
Tbone