Moin,
ich schicke via TCP Socket einen String von einem anderen System (Crestron) zu meinem IPS-Server (V5). Der String setzt sich zusammen aus vier, durch „+“ getrennten Werten. Der erste Wert ist die ObjectID der anzusprechenden Instanz (RGBW-Modul), die restlichen drei Werte die Werte für R, G, B zum Setzen der Lichtfarbe.
Das Script sieht so aus:
<?
$data = RegVar_GetBuffer('INSTANCE');
$data = $_IPS['VALUE'];
$RGB_array=explode('+', $data);
echo $data;
echo $RGB_array[0];
echo $RGB_array[1];
echo $RGB_array[2];
echo $RGB_array[3];
$IPS_Object_Id_int=intval($RGB_array[0]);
$R_int=intval($RGB_array[1]);
$G_int=intval($RGB_array[2]);
$B_int=intval($RGB_array[3]);
PJ_DimRGBW($IPS_Object_Id_int,$R_int,1,$G_int,1,$B_int,1,0,1);
?>
Grundsätzlich funktioniert es, ich bekomme allerdings bei jeder Übertragung folgende Warnung:
16.04.2019 09:22:07 | Register Variable | <br />
<b>Warning</b>: Cannot auto-convert value for parameter InstanceID in <b>/var/lib/symcon/scripts/37037.ips.php</b> on line <b>2</b><br />
19056+68+48+0
1905668480
Kann mir jemand erklären was das Problem ist? Nach meinem Verständnis möchte PJ_DimRGBW für alle vier Parameter Integer-Values haben. Um das zu erreichen wandle ich alle vier Bestandteile des gesendeten Strings via „intval“ in Integer um. Dies scheint bei den RGB-Werten auch zu funktionieren, für die ObjectID bekomme ich aber diese Warnungen…