あなたが取得するための最初の要求を送信する必要があなたのlighton要求、無線LANブリッジセッションを送信する前に。また、あなたの要求に基づいて、「チェックサム」と呼ばれるものを計算する必要があります。
31 00 00 08 04 01 00 00 00 =光は、上記{COMMAND}を参照してください。
ドキュメントは、と言います
これまでのところ完全な要求がなければなりません:
80 00 00 00 11 {WifiBridgeSessionID1} {WifiBridgeSessionID2} 00 {SequenceNumber} 00 31 00 00 08 04 01 00 00 00 {ZONE NUMBER} 00 {Checksum}
今度はWifibridgeセッションを取得してみましょう。 documentionは言う:
WifiBridgeSessionID1とWifiBridgeSessionID2この コマンドUDPを送信取得します。
SEND六角バイト: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 < - のIP アドレスにこれを送ります私はこれをやっている理由のWiFiブリッジV6
:このコマンドでUDP要求を送信すると
private function getWifiBridgeSession()
{
$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);
return $this->sendCommand($command);
}
は、あなたが結果を取得します。 Wifi Bridgeのセッション1は応答の20番目のバイトを参照し、WifiBridge Session2は21番目のバイトの応答を参照します(0からカウントすることを忘れないでください。したがって、応答[19]レスポンス[20]」)。
この要求を送信した後、私はこの応答を取得する、のは、言ってみましょう:
28 00 00 00 11 00 02 AC CF 23 F5 7A D4 69 F0 3C 23 00 01 05 00
だから私の「WifiBridgesession1」は0x05であり、「Wifibridgesession2は」だから今、私たちの要求は、「オンに」するためには0x00
ですライトは次のとおりです。
80 00 00 00 11 0x05 0x00 00 {SequenceNumber} 00 31 00 00 08 04 01 00 00 00 {ZONE NUMBER} 00 {Checksum}
だから今我々は{SequenceNumberは}が{ゾーン番号}と{}チェックサム
を見つける必要があり
「シーケンス番号」とは何ですか?
DOCは言う:
シーケンシャルバイトだけで、正しい順序でコマンドを維持するのに役立ちます し、それが既に受信重複パケットを無視するのに役立ちます。 新しいコマンドごとにこのバイトを1ずつ増やしてください。
したがって、各要求ごとにこの値を1に増やしてください。 (個人的に私はいつも0x01を送る)。
「ゾーン番号」は、あなたのライトを同期させたゾーンを示します。
有効なリストのために、{ZONE NUMBER}は0x00 0x01のすべてのゾーン1が0x02 0x03のZone2の ZONE3 0x04のゾーン4は
さんが言ってみましょう、私たちの "ゾーン" は0x01です。
ほぼ完了です。 「チェックサム」を計算するだけです。
DOCは言う:
コマンドの9バイト、およびゾーンの1つのバイトを取り、そして0 =チェックサム=(サム& 0xFF)を追加し、例えばSUM((31 00 00 08 04 01 00 00 00)(コマンド)01(ゾーン)00)= 3F(CHKSUM)
だから、私たちのコマンドのチェックサムは次のとおりです。 31 + 00 + 00 + 08 + 04 + 01 + 00 + 00 + 00 + 01 + 00 =が0x54
私は0x00を
はだから今、私たちはすべて、完全な要求を持っている+ゾーンの+は0x01(オン)コマンドのすべてのバイトを追加光をオンにするには:
それだけです。
注:リクエストをコピー&ペーストするだけではなく、値に基づいて計算されます。ライトをオンにする要求は、計算する内容に基づいて毎回変わります。
"オン"コマンドを実行するために "00 31 00 00 08 04 01 00 00 00"と書かれていることに気づいたことがあります。これはCW電球の場合のみ有効です。
の違いは何ですか
80 00 00 00 11 05 00 00 01 00 31 00 00 07 03 01 00 00 00 01 00 54
:DOCはWW電球のために同じコマンドだからWW電球のための完全なコマンドは次のようになります00 31 00 00 07 03 01 00 00 00 ある ...ことを指定しませんCWとWW電球? 私は、CWは "冷たい白"を指し、WWは "暖かい白"を指すことができます。しかし、私は "電球"の専門家ではないので、私はそれ以上説明することはできません、なぜ私たちは両方のために別の要求を書く必要があるかわかりません。
とにかく私は十分に明確であったと思います。 どのように動作しているか教えてください。
まだこのプロジェクトに取り組んでいます!私の球根のすべては、WWの違いは何ですか?あなたのコードではWWを使うので、私はそれらを正しく使うことができますか?もっと説明できますか? Bridgesessionを取得するにはどうしたらいいですか?また、受信したすべてのバイトの合計であるチェックサムが必要なのはなぜですか? – kuemme01
私が行ったことをより詳しく説明するためにコメントを更新しました。 – wilfleaji
そんないい男!これは完璧だった!私はUDPライブラリを使ってデータを受信する方法を理解しなければならないので、まだ解決していません。それは不可能だと思いますので、他のものを検索しなければなりません。私はすぐにあなたを更新します!今までありがとう!それは説明できなかったでしょう! – kuemme01