Php milight api响应成功,但什么也没发生

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脚本。 根据文档,我总是收到来自UDP请求的良好响应,所有请求都成功了,但什么也没有发生(链接灯、siwth开/关等)

到目前为止我所做的:

 <?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]