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']);
}
}
?>