Ich erhalte die Werte aus einer Url in Form einer Json-Datei.
Das Ergebnis sieht so aus:
{
[ul]
[li]"software_version": "NRZ-2018-103", [/li][li]"age": "39", [/li][li]"sensordatavalues": [[/li][LIST]
[li]{[/li][LIST]
[li]"value_type": "SDS_P1", [/li][li]"value": "8.13" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "SDS_P2", [/li][li]"value": "7.30" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "temperature", [/li][li]"value": "26.10" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "humidity", [/li][li]"value": "44.00" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "BME280_temperature", [/li][li]"value": "28.67" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "BME280_humidity", [/li][li]"value": "34.26" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "BME280_pressure", [/li][li]"value": "99551.61" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "samples", [/li][li]"value": "635610" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "min_micro", [/li][li]"value": "221" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "max_micro", [/li][li]"value": "1116184" [/li][/ul]
},
[li]{[/li][ul]
[li]"value_type": "signal", [/li][li]"value": "-63" [/li][/ul]
}
[/LIST]
]
[/LIST]
}
Mit dem folgenden Script speichere ich die Daten in die entsprechnenden Variablen.
$url = "Http://192.168.1.198/data.json";
$data = file_get_contents($url);
$data = json_decode($data,true);
//Speicherung der Werte in die entsprechenden Variablen
SetValue(53432 /*[Feinstaub\Abfragen\SDS_P1]*/, $data['sensordatavalues'][0]['value']);
SetValue(52483 /*[Feinstaub\Abfragen\SDS_P2]*/, $data['sensordatavalues'][1]['value']);
SetValue(12544 /*[Feinstaub\Abfragen emperature]*/, $data['sensordatavalues'][2]['value']);
SetValue(32848 /*[Feinstaub\Abfragen\humidity]*/, $data['sensordatavalues'][3]['value']);
SetValue(55898 /*[Feinstaub\Abfragen\BME280_temperature]*/, $data['sensordatavalues'][4]['value']);
SetValue(12944 /*[Feinstaub\Abfragen\BME280_humidity]*/, $data['sensordatavalues'][5]['value']);
SetValue(22570 /*[Feinstaub\Abfragen\BME280_pressure]*/, $data['sensordatavalues'][6]['value']);
SetValue(50797 /*[Feinstaub\Abfragen\samples]*/, $data['sensordatavalues'][7]['value']);
Die Zuordnung erfolgt durch die Positionen in der Json-Datei.
Funktioniert ganz gut, es gibt aber ein Problem.
In der Programmierung des Feinstaubsensors sind die einzelen Werte an- und abschaltbar, sodass sich die Positionen in der Json-Datei ändern können.
Ich würde gerne anstelle „$data[‚sensordatavalues‘][0][‚value‘]“ die Zuordnung über „value_type“: „SDS_P1“ , usw. vornehmen.
Leider komme ich hier nicht weiter und bitte um einen Tip.