MQTT - Daten (String) in Array zerlegen

Hi,

ich experientiere gerade mit einem ESP8266/CCS811 der mir über die tasmota-firmware die Sensordaten per MQTT nach IPS schickt.

Nun kommen die Werte leider nicht einzeln an, sondern nur im kompakten String. Der sieht dann wie folgt aus beispielhaft aus:

{"Time":"2019-10-05T12:01:49","SI7021":{"Temperature":27.9,"Humidity":40.3},"BMP280":{"Temperature":28.0,"Pressure":995.4},"CCS811":{"eCO2":491,"TVOC":13},"PressureUnit":"hPa","TempUnit":"C"}

Letztlich hätte ich die Daten gern z.B. in einem Array in folgender Art:

Time…2019-10-05T12:01:49
SI7021
…Temperature…27.9
…Humidity…40.3
BMP280
…Temperature…28.0
…Pressure…995.4
CCS811
…eCO2…491
…TVOC…13
PressureUnit…hPa
TempUnit…C

Ich bekomme es aber nicht hin. Kann mir jemand helfen?

Gruß

hardlog

Hallo,

versuchs mal mit:


$s = '{"Time":"2019-10-05T12:01:49","SI7021":{"Temperature":27.9,"Humidity":40.3},"BMP280":{"Temperature":28.0,"Pressure":995.4},"CCS811":{"eCO2":491,"TVOC":13},"PressureUnit":"hPa","TempUnit":"C"}';
$a = json_decode($s);
var_dump($a);

Grüße, Gerhard

Cool!

Und, ich hab mich mit diversen String-Manipulations-Funktionen einen abgebrochen…

Wie kann ich jetzt einen einzelnen Wert gezielt abfragen?
Z.B. „Pressure“?

habs hinbekommen:

$s = '{"Time":"2019-10-05T12:01:49","SI7021":{"Temperature":27.9,"Humidity":40.3},"BMP280":{"Temperature":28.0,"Pressure":995.4},"CCS811":{"eCO2":491,"TVOC":13},"PressureUnit":"hPa","TempUnit":"C"}';
$a = json_decode($s,true);
echo $a['BMP280']['Pressure'];

Danke

hardlog