Domoticz MQTT Wert json_decode

Hallo zusammen,

ich habe das Problem, dass ich bei einem durch ein ESP8266 mit ESPEASY empfangenen Wert per MQTT, mehrere Angaben in einer Variable habe und diese nicht zerpflückt bekomme.

Vielleicht hat einer von euch ne Idee und kann helfen?

Hier mein Skript:


<?
$Wetter = GetValue(29587);

$obj = json_decode($Wetter);

$idx = $obj->{'idx'}; // Adressierung

$svalue = $obj->{'svalue'}; // s-Variable

$nvalue = $obj->{'nvalue'}; // n-Variable


if (($idx) == '1') {

SetValue(41758,$nvalue);

} 
if (($idx) == '2') {

SetValue(24254,$svalue[0]); //mit 0 dachte ich mir den ersten Wert der svalue, ausgegeben wird jedoch 6
SetValue(11488,$svalue[1]); //mit 1 dachte ich mir den zweiten Wert der svalue, ausgegeben wird jedoch .
} 

if (($idx) == '5') {

SetValue(37016,$svalue);

} 

?>

klappt alles super, bis auf beim Zerprlücken von idx 2

Der von MQTT Empfangene Wert lautet wie folgt:

{„idx“:2,„RSSI“:2,„nvalue“:0,„svalue“:„6.92;1016.52;0;0“}

in der Variable „svalue“ steckt also: Temperatur;Luftdruck;ohne Info;ohne info;

Ich würde gern die beiden einzelnen Werte Temperatur und Luftdruck in die jeweiligen Variablen schreiben, nur weiß ich nicht wie.

Danke vorab

$svalue ist noch ein String und kein Array.
Du musst den String mit explode auf das Semikolon in ein Array zerlegen.
Dann hast du die Werte einzeln.
Michael

ich habs.

<?
$Wetter = GetValue(29587);

$obj = json_decode($Wetter);

$idx = $obj->{'idx'}; // Adressierung

$svalue = $obj->{'svalue'}; // s-Variable

$nvalue = $obj->{'nvalue'}; // n-Variable


if (($idx) == '1') {

SetValue(41758,$nvalue);

} 
if (($idx) == '2') {

$var = explode(";", $svalue);

SetValue(24254,$var[0]);
SetValue(11488,$var[1]);
} 

if (($idx) == '5') {

SetValue(37016,$svalue);

} 



?>

Besten Dank:loveips: