我正在尝试使用http://www.limitlessled.com/dev实现milight api。
我写了一个基于它的小PHP脚本。 根据文档,我总是收到UDP请求的良好响应,所有请求都是成功但没有任何反应(链接指示灯,打开/关闭等等)。
到目前为止我做了什么:
<?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);
}
?>
我得到的是:88 00 00 00 03 00 00 01。
我也尝试使用LimitlessLED Wifi Bridge工具,我可以从日志中读到:
Start Wifi Bridge Session...
Send UDP commands to 192.168.0.15 port 5987
Sent: 20 00 00 00 16 02 62 3A D5 ED A3 01 AE 08 2D 46 61 41 A7 F6 DC AF D3 E6 00 00 1E
Received: 28 00 00 00 11 00 02 F0 FE 6B 1E 26 62 72 1D E3 68 00 01 DA 01 00
LimitlessLEDWifiBridgeSessionID1 is DA
LimitlessLEDWifiBridgeSessionID2 is 01
IP Address is 192.168.0.15
MAC Address is FE:6B:1E:26:62:72
Sequence Number is 02
Checksum is 46
Sent: 80 00 00 00 11 DA 01 00 02 00 3D 00 00 08 00 00 00 00 00 01 00 46
Command SUCCESSFUL.
Received: 88 00 00 00 03 00 02 00
Command completed.
一切似乎都很好,但没有任何反应,我无法控制任何光线。 我完全陷入困境,有人有想法吗?
我正在使用iBox2作为控制器和Mi-Light rgbw led灯泡系列。
谢谢
答案 0 :(得分:0)
我弄清楚出了什么问题。
首先我注意到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”功能,而是“解压缩”。
我实施了我在那里所做的事情: https://github.com/winosaure/MilightAPI
我希望它可以帮助别人..