Amazon Echo と 安物 ESP8266 で スマートホーム ―壁スイッチ ON/OFF―
しかし唯一ほぼ毎日使って家族にも喜ばれているものがあります。
それはAmazon Echoでの家電制御システムです。
テレビと電気スタンドを音声でコントロールできるようにしたのです。みんな便利だと喜んで使っています。
そうなるとどんどん欲がでるのが世の摂理。今回はリビングの照明の壁スイッチ制御に挑戦しました。
こちらのようにスマホやスマートスピーカでコントロールできる指ロボットも売ってるのですが。。
SwitchBotは手元にないけど、物理スイッチを制御したいという願望を無理矢理叶えたものがこちらになります。 pic.twitter.com/ylORdQt96h
— クラクス (@kuracux) 2018年9月14日
自作してる方がいました!そうだよね。
家にあるものでつくろう!
目次
構成
Amazon Echoでマイコンを介してサーボモータを制御してスイッチを押します。WiFi搭載マイコンESP8266をesp8266-alexa-wemo-emulator というライブラリでAlexaのスマートホームデバイスとして認識させます。
部品
- サーボモータ SG90
- WiFi搭載マイコン HiLetgo ESP8266
テレビと電気スタンド用にスイッチサイエンスのESPr Developer使い切っちゃたので手元にある安物 ESP8266を使いました。詳細は以下の通りです。
ただもう売ってないみたいですね。。。残念。まぁESPr Developerもさほど高くないですし、時代はもうESP32ですよね。
組み立て
サーボとESP8266を配線し、固定用にアクリル板に接着固定します。アクリサンデーを使用しました。
壁スイッチのそばに本棚を置いているので本棚にネジ止めしました。
マイコンも両面テープで固定し、電源もうまいこと引き回して完成!
Arduinoコード
これまで同様にESP8266-Alexa連携ライブラリには esp8266-alexa-wemo-emulator を使用しました。
https://github.com/witnessmenow/esp8266-alexa-wemo-emulator
インストールしたライブラリの以下のexampleコードを参考にプログラミングしました。
Arduinoメニュー[ファイル]→[スケッチ例]→[Esp8266AlexaWemoEmulator]→SingleSwitch.ino
ESP8266のArduino用パッケージはESP8266 Community ver. 2.4.2を使用しています。設定は以下のとおりです。
“リビング”というスイッチをつくってオンコールバックとオフコールバックでサーボを制御します。この安物ESP8266はデジタルピン番号指定の際に”D”の記載も必要です。D8とかD2とか。
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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
#include <ESP8266WiFi.h> #include "WemoSwitch.h" #include "WemoManager.h" #include "CallbackFunction.h" #include <Servo.h> Servo myservo; int servoIni = 90; int servoOn = 55; int servoState = 0; // prototypes boolean connectWifi(); //on/off callbacks void livingOn(); void livingOff(); //------- Replace the following! ------ char ssid[] = "your network SSID"; char password[] = "your network key"; WemoManager wemoManager; WemoSwitch *living = 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 living = new WemoSwitch("リビング", 88, livingOn, livingOff); wemoManager.addDevice(*living); } void loop() { wemoManager.serverLoop(); } void livingOn() { Serial.print("Switch turn on ..."); myservo.attach(D8); delay(1000); myservo.write(servoOn); delay(1000); myservo.write(servoIni); delay(1000); myservo.detach(); } void livingOff() { Serial.print("Switch turn off ..."); myservo.attach(D8); delay(1000); myservo.write(servoOn); delay(1000); myservo.write(servoIni); delay(1000); myservo.detach(); } |
Amazon Echo連携
ESP8266で生成したスイッチデバイスをEchoに連携します。連携にはスマホアプリAmazon Alexaを使用します。アプリが更新されて少し様子が変わったようです。
アプリのスマートホームをクリックします。
デバイスの種類として”プラグ”を選択します (おそらく何でもいいと思います)。
なんか色々なサービスが表示されるようになりましたが”その他”を選択。
ESP8266を起動した状態で”デバイスを検出”をクリックすると数十秒でESP8266で生成した”リビング”が検出されます。
この状態で
「アレクサ、リビングつけて」、「アレクサ、リビングオン」
「アレクサ、リビングして」、「アレクサ、リビングオフ」
でそれぞれONコールバックとOFFコールバックが実行され、以下のようにサーボモータが動作します。
うん。いい感じ。#Alexa #AmazonEcho #ESP8266 pic.twitter.com/4qVF4fqFig
— HomeMadeGarbage (@H0meMadeGarbage) 2018年10月5日
動作
壁スイッチ 音声制御。便利!#Alexa #AmazonEcho #ESP8266 #サーボモータ pic.twitter.com/fdPC3zkTAs
— HomeMadeGarbage (@H0meMadeGarbage) 2018年10月5日
やったー!できた!これも家族みんなに喜んで使ってもらえるといいなぁ 🙄
What an IoT!!#AmazonEcho #Alexa #ESP8266 #messy pic.twitter.com/STYYOVFgst
— HomeMadeGarbage (@H0meMadeGarbage) 2018年10月5日
家が少し未来っぽくて嬉しいね!(散らかってるけど。。。)
What an IoT!!
追記
2019/9/10
alexa-wemo-emulator が動かなくなってしまったので fauxmoESP に変更しました。
非常に有益な情報でかつ新鮮で参考にしたく思いました。
ありがとう御座います
ためになる記事ありがとうございます。
掲載されている自作ボットを作ってみたいと思っています。
初心者の質問で恐縮ですが「WiFi搭載マイコン HiLetgo ESP8266」と同じ製品の
取り扱いが無いようなのでhttps://www.amazon.co.jp/s?k=ESP8266で検索しましたが
「MdskGang ESP8266 NodeMCU ESP-12E」や「ESP8266 CH340 NodeMcu V3 Lua WiFi」
のようなもので同じように作れますでしょうか?
電子部品のお店でも聞いてみたのですが、製品の取り扱い以外は教えて貰えないので
色々調べているところですが、電源供給は「MicroUSB」か「Type-C」のケーブルを
使おうかと思いますのでお勧めなどありましたら合わせてご教授いただければ幸いです。
ESP8266が搭載されておれば、どの評価ボードでもよいと思います。
しかしESP8266-Alexa連携ライブラリの esp8266-alexa-wemo-emulator が現在正常にうごくのか不明です。
Alexa側のアップデートで使用できなくなっていると思います。
我が家でもコチラは既に使用しておらず、公式とも連携が保証されている以下の製品を使用しております。
https://amzn.to/3D43JFB
ご返信ありがとうございます。
自作品はAlexaのアプデで継続利用出来なくなったのですね。(;”∀”)残念です
ご案内頂いた正規品での導入をするようにYomesamaに交渉してみます。
遅ればせながらお礼申し上げます。m(__)m