Amazon Echo と ESP8266 で スマートホーム ―電気スタンド制御―
Amazon Echoを購入してから、いろいろ活用しているこの頃の我が家。Amazon Music で音楽を楽しんだり、料理時のタイマーや起床時のアラーム、ジョイサウンドのスキルでお家カラオケごっこなど大活躍です。長女ちゃんは算数の宿題(習いたての割り算)の答えを聞いたり。。。
以前、ESP8266と赤外線LEDを使ってテレビをEchoでコントロールできるようにしました。
今回は電気スタンドを制御できるようにしました。就寝前とか一々立ち上がって消すの面倒だし。。。。
かといってスマート電球は高いし。。。うん!作るしかない!
目次
構成
部品
組み立て
スイッチをとってリレーを挿入!
筐体を戻してESP8266とリレーを接続して完成。
ESP8266はUSB電源アダプタで電源供給して、電気スタンドの電源コードは改造して作ったスマートホーム電源につなげます。
Arduinoコード
テレビ制御の時と同様に以下のESP8266-Alexa連携ライブラリをありがたく使用させていただきESP8266をスマートホームデバイスにしてAmazon Echoと繋ぎます。
https://github.com/witnessmenow/esp8266-alexa-wemo-emulator
ZipをダウンロードしてArduinoのメニュー[スケッチ]→[ライブラリのインクルード]→[.zip形式ライブラリをインストール…]でダウンロードしたファイルを指定してインストールします。
インストールしたライブラリの以下のexampleコードを参考にプログラミングしました。
Arduinoメニュー[ファイル]→[スケッチ例]→[Esp8266AlexaWemoEmulator]→SingleSwitch.ino
“電気”というスイッチをつくってオンコールバックとオフコールバックでIO2ピンのHigh/Lowでリレーを制御します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#include <ESP8266WiFi.h> #include "WemoSwitch.h" #include "WemoManager.h" #include "CallbackFunction.h" // prototypes boolean connectWifi(); //on/off callbacks void lightOn(); void lightOff(); //------- Replace the following! ------ char ssid[] = "your network SSID"; char password[] = "your network key"; WemoManager wemoManager; WemoSwitch *light = NULL; void setup() { Serial.begin(115200); // Set WiFi to station mode and disconnect from an AP if it was Previously // connected WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); // Attempt to connect to Wifi network: Serial.print("Connecting Wifi: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); IPAddress ip = WiFi.localIP(); Serial.println(ip); wemoManager.begin(); // Format: Alexa invocation name, local port no, on callback, off callback light = new WemoSwitch("電気", 80, lightOn, lightOff); wemoManager.addDevice(*light); pinMode(2, OUTPUT); // initialize digital ledPin as an output. delay(10); digitalWrite(2, LOW); // Wemos BUILTIN_LED is active Low, so high is off } void loop() { wemoManager.serverLoop(); } void lightOn() { Serial.print("Switch turn on ..."); digitalWrite(2, HIGH); } void lightOff() { Serial.print("Switch turn off ..."); digitalWrite(2, LOW); } |
Amazon Echo連携
ESP8266で生成したスイッチデバイスをEchoに連携します。連携にはスマホアプリAmazon Alexaを使用します。
アプリのスマートホームをクリックします。
ESP8266を起動した状態で”デバイスを追加”をクリックすると数十秒でESP8266で生成した電気スイッチが検出されます。
この状態で
「アレクサ、電気つけて」、「アレクサ、電気オン」
「アレクサ、電気消して」、「アレクサ、電気オフ」
でそれぞれONコールバックとOFFコールバックが実行されリレーがON/OFFされて電気スタンドを制御できます。
動作
よっしゃ!これで寝ながらにして照明消せるぜ!
こうなってくると蛍光灯とかも制御したくなるなぁ。。。。 🙄
追記
2019/9/10
alexa-wemo-emulator が動かなくなってしまったので fauxmoESP に変更しました。