RegisterVariable und Script Problem

Hallo,
ich habe mich per WebSocket auf mein Conbee Stick verbunden um so meine Xiaomi Zigbee Geräte in Symcon anzubinden. Soweit so gut. Allerdings habe ich in meinem Script das Problem, dass wenn in meinem String eine Variable nicht vorkommt die auf 0 gesetzt wird. Ich bin aktuell etwas Ratlos wie ich das am besten umsetze.

Ich bekomme in meine Batterie Variable immer erst 100 und dann wieder 0 gesetzt. Da sie Variable im zweiten String nicht vorhaben ist, was aber auch richtig ist.

Hier zwei Strings die über den Cutter ankommen:

{"config":{"battery":100,"on":true,"reachable":true,"temperature":2500},"e":"changed","id":"5","r":"sensors","t":"event","uniqueid":"00:15:8d:00:02:3a:da:98-01-0500"}

{"e":"changed","id":"5","r":"sensors","state":{"lastupdated":"2019-05-10T20:14:58","lowbattery":false,"tampered":false,"water":false},"t":"event","uniqueid":"00:15:8d:00:02:3a:da:98-01-0500"}
<?
if ($_IPS['SENDER'] == "RegisterVariable")
{

    //$data =json_decode('{'.$_IPS['VALUE'].'}', true);
	$data = json_decode($_IPS['VALUE'],true);
	

	  if($data['id'] == "2")
	  	{
			SetValue(15847 /*[Scripte\Deconz\ID2\Temp]*/, $data['state']['temperature'] /100);
			SetValue(36198 /*[Scripte\Deconz\ID2\last Updated]*/, $data['state']['lastupdated']);
	    }

	  if($data['id'] == "3")
	  	{
			SetValue(46575 /*[Scripte\Deconz\ID3\Hum]*/, $data['state']['humidity'] /100);
			SetValue(57893 /*[Scripte\Deconz\ID3\last Updated]*/, $data['state']['lastupdated']);
	    }

	  if($data['id'] == "4")
	  	{
			SetValue(26009 /*[Scripte\Deconz\ID4\Pres]*/, $data['state']['pressure']);
			SetValue(43480 /*[Scripte\Deconz\ID4\last Updated]*/, $data['state']['lastupdated']);
	    }

      if($data['id'] == "5")
	  	{
	  		SetValue(37679 /*[Scripte\Deconz\ID5\Temp]*/, $data['config']['temperature'] /100);
			SetValue(36309 /*[Scripte\Deconz\ID5\Batterie]*/, $data['config']['battery']);
			SetValue(40673 /*[Scripte\Deconz\ID5\leak]*/, $data['state']['water']);
	    }
		
	  if($data['id'] == "6")
	  	{
				if ($data['state']['buttonevent'] == "1002")
					{
						HM_WriteValueBoolean(17297, "STATE", !GetValue(41818));
					}	
	  		SetValue(15356 /*[Scripte\Deconz\ID6\Batterie]*/, $data['config']['battery']);
			SetValue(47967 /*[Scripte\Deconz\ID6\Button 2]*/, $data['state']['buttonevent']);
	    }	
		
	  if($data['id'] == "7")
	  	{
			SetValue(44376 /*[Scripte\Deconz\ID7\Door]*/, $data['state']['open']);
			SetValue(47285 /*[Scripte\Deconz\ID7\Temp]*/, $data['config']['temperature'] /100);
			SetValue(35804 /*[Scripte\Deconz\ID7\Batterie]*/, $data['config']['battery']);
	    }	
  }      
?>

Keiner eine Idee? Oder gibt es eine andere Möglichkeit das besser zu lösen?

Soweit sieht alles korrekt aus. Ich glaube du musst etwas mehr Beschreiben wann genau der Fehler auftritt.

paresy