概要
wemos d1で、alexaデバイスを作ってみる。
alexaが、デバイスを発見して、登録する仕組み。
デバイス発見
alexaに、「デバイスを検出して」と指示すると、alexaは、同じWi-Fiルーターに接続されているネットワーク内に、マルチキャスト(SSDPプロトコル)で「だれかスマート家電(Hueブリッジ)はいませんか?」と叫びます。
wemosは、この呼びかけ(UDPポート1900)を常に待ち受けています。
Echoからの呼びかけを検知すると、「私はPhilips Hueのブリッジ(電球の親機)です!」という偽の応答(M-SEARCH応答)を返します。
デバイス登録
alexaは、偽装されたマイコンが指定するHTTPポート(例:fauxmo.createServer で内部的に自動生成されるポート)に対して、機器の詳しい情報を要求します。
wemosは、Philips Hue純正品とそっくりな構成情報(setup.xml という形式のデータ)をEchoに返信します。
このデータの中に、プログラム側で設定した fauxmo.addDevice("ピンクのライト") といったカスタムのデバイス名が含まれています。
結果:alexaは「お、Wi-Fi内にPhilips Hueの照明が見つかったぞ」と勘違いし、Alexaアプリにデバイスとして登録します。
コマンド受信とコールバック実行(制御時)
ユーザー:
「アレクサ、ピンクのライトをつけて」
Alexaの動作:
alexaはwemosに対して「ライトを点灯せよ」という内容のHTTPリクエスト(PUTリクエスト)を直接送信します。
wemosの動作:
fauxmo.onMessage で登録しておいたコールバック関数がトリガーされます。
wemosは受け取ったリクエストから「ON/OFFのどちらか」「明るさ(Brightness)はいくつか」を判定し、GPIOピンを操作してLEDやリレーを動かします。
以上。