Moin,
ich habe eine Webadresse, die ich per HTTPMOD Abfrage, die mir folgende Ausgabe liefert (Auszug)
{
"data": {
"sensors": [
{
"id": "viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5",
"type": "SPEED_SIGN",
"datasources": [
{
"id": "viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5",
"name": "Speed Limit",
"stringValue": "50",
"numberValue": 50,
"datasourceType": "SPEED_LIMIT",
"unit": "km/h",
"__typename": "Datasource"
},
{
"id": "viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5",
"name": "Average Speed",
"stringValue": "48",
"numberValue": 48,
"datasourceType": "AVERAGE_SPEED",
"unit": "km/h",
"__typename": "Datasource"
},
Ich kann darauf natürlich jetzt ganz "normal" mit JSON drauf zugreifen
reading01JSON data_sensors_01_datasources_01_numberValue
reading01Name SpeedLimitWas aber eigentlich gerne hätte, wäre die id und den Typ des Sensors als eindeutige id in meinem Reading. So das ich ein Reading hätte, das ungefähr wie folgt aussieht
data_sensors_8bd1fb1c_b3d9_4132_83f7_1909219615b5_datasources_speed_limit_numberValueDas wird HTTPMOD wahrscheinlich nicht alleine können, aber gibt es von jemanden eine Idee, wie ich das umsetzen könnte?
Gruß,
Tim
Womoeglich kann dabei json2nameValue helfen: https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#json2nameValue.28.29
json2reading baut auf diese Funktion auf, und erzeugt aus JSON die Readings.
Vielleicht wäre auch JsonMod statt HTTPMOD die bessere Wahl.
Schon mit complete() in der readinglist gehen die Namen in Richtung Deiner Wunschvorstellung.
Wenn man die Aufbereitung der Namen dann noch ein bisschen verfeinert, lässt sich Dein Wunsch vermutlich erfüllen.
defmod tj JsonMod file:///tmp/test.json
attr tj readingList complete()
setstate tj 2025-12-16 10:51:59 .computedReadings data.sensors.0.datasources.1.numberValue,data.sensors.0.datasources.1.__typename,data.sensors.0.datasources.0.name,data.sensors.0.datasources.0.__typename,data.sensors.0.datasources.1.name,data.sensors.0.datasources.0.unit,data.sensors.0.datasources.0.stringValue,data.sensors.0.datasources.0.datasourceType,data.sensors.0.type,data.sensors.0.datasources.0.id,data.sensors.0.datasources.1.stringValue,data.sensors.0.datasources.1.id,data.sensors.0.datasources.0.numberValue,data.sensors.0.datasources.1.unit,data.sensors.0.datasources.1.datasourceType,data.sensors.0.id
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.__typename Datasource
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.datasourceType SPEED_LIMIT
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.id viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.name Speed Limit
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.numberValue 50
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.stringValue 50
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.unit km/h
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.__typename Datasource
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.datasourceType AVERAGE_SPEED
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.id viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.name Average Speed
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.numberValue 48
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.stringValue 48
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.unit km/h
setstate tj 2025-12-16 10:51:59 data.sensors.0.id viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5
setstate tj 2025-12-16 10:51:59 data.sensors.0.type SPEED_SIGN
In der Datei /tmp/test.json steht der Json-Auszug, den Du oben gepostet hattest.