Php milight api响应成功,但什么也没发生
我正在尝试使用 我基于此编写了一个小的php脚本。 根据文档,我总是收到来自UDP请求的良好响应,所有请求都成功了,但什么也没有发生(链接灯、siwth开/关等) 到目前为止我所做的:Php milight api响应成功,但什么也没发生,php,api,udp,Php,Api,Udp,我正在尝试使用 我基于此编写了一个小的php脚本。 根据文档,我总是收到来自UDP请求的良好响应,所有请求都成功了,但什么也没有发生(链接灯、siwth开/关等) 到目前为止我所做的: <?php function getResponse($command) { $msg = vsprintf(str_repeat('%c', count($command)), $command); $ip = "255.255.255.255"; $port
<?php
function getResponse($command)
{
$msg = vsprintf(str_repeat('%c', count($command)), $command);
$ip = "255.255.255.255";
$port = 5987;
$buf = null;
socket_sendto($sock, $msg, strlen($msg), 0, $ip, $port);
while (42) {
$ret = socket_recvfrom($sock, $buf, 22, 0, $ip, $port);
if ($ret === false) {
die(socket_strerror(socket_last_error()));
break;
} else {
break;
}
}
return $buf;
}
if (($sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) !== FALSE) {
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array(
"sec" => 5,
"usec" => 0
));
/** GET WIFI BRIDGE SESSION */
$command = array(
0x20,
0x00,
0x00,
0x00,
0x16,
0x02,
0x62,
0x3A,
0xD5,
0xED,
0xA3,
0x01,
0xAE,
0x08,
0x2D,
0x46,
0x61,
0x41,
0xA7,
0xF6,
0xDC,
0xAF,
0xD3,
0xE6,
0x00,
0x00,
0x1E
);
$buf = getResponse($command);
$checksum = dechex(0x3D + 0x00 + 0x00 + 0x08 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x01 + 0x00);
/** LINK COMMAND */
$command = array(
0x80,
0x00,
0x00,
0x00,
0x11,
bin2hex($buf[19]),
bin2hex($buf[20]),
0x00,
0x00,
0x00,
0x3D,
0x00,
0x00,
0x08,
0x00,
0x00,
0x00,
0x00,
0x00,
0x01,
0x00,
$checksum
);
$buf = getResponse($command);
for ($i = 0; $i < strlen($buf); $i++)
echo bin2hex($buf[$i]) . " ";
socket_close($sock);
}
?>
一切似乎都很好,但什么也没发生,我无法控制任何光线。
我完全卡住了,有人有主意吗
我使用iBox2作为控制器和Mi Light rgbw led灯泡系列
谢谢你我发现了问题所在 首先,我注意到CW灯泡和WW灯泡的要求并不完全相同。 例如,您必须发送以下请求以打开带有CW灯泡的灯:
[ 0x31,0,0,0x08,0x04,0x01,0,0,0,zoneID ]
与WW灯泡相同的请求是:
[0x31, 0x00, 0x00, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, zoneID]
我也不应该使用“bin2hex”函数,而是使用“unpack”
我将我在那里所做的工作付诸实施:
我希望它能帮助别人
[0x31, 0x00, 0x00, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, zoneID]