esp32-alexa-wemo-emulatorをM5Stackで使ってみる
ESP32やM5StackをAlexaから操作できるようにするesp32-alexa-wemo-emulatorですが、便利なので色々調べてみました。
ESP32の使い方の解説は別のブログ等でもありますので、M5Stackでの連携について解説してみます。
もくじ(Index)M5Stack関連の目次へ戻る
用意するもの
ハードウェア
M5StackかESP32の開発キットを用意します。初心者の方はM5StackだとLEDを用意する必要もなく画面表示で確認できます。
ソフトウェア
ArduinoIDE
WindowsでArduinoIDEを使うには下記の記事を見てください。
初心者向けM5Stackの始め方(ArduinoIDE編)LovyanLauncher
このサンプルはWiFi設定はLovyanLauncherで行います。詳しくは下記の記事を参照してください。
初心者向けM5Stackの始め方(M5Burner/LovyanLauncher編)M5Stack LovyanLauncherの使い方
ArduinoIDE追加ライブラリ
M5Stack用のサンプルを追加したり実験的なカスタマイズを行っているので私のGitHubから取得してください。
https://github.com/mongonta0716/esp32-alexa-wemo-emulator
●依存ライブラリ
https://github.com/zhouhan0126/WebServer-esp32
GitHubからのZIPのダウンロード方法
GitHubのリポジトリを開いて、「Clone or download」→「Download ZIP」をクリックするとZIPファイルでダウンロードできます。
M5Stackでサンプルスケッチを動作させる
以下の手順でM5Stackへサンプルスケッチを書き込んで動作させます。
ArduinoIDEへライブラリを追加する。
GitHubからダウンロードしたZIPをArduinoIDEへ追加します。
メニューから「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール…」を開き、ダウンロードしたArduinoIDE追加ライブラリのZIPファイルを指定します。
サンプルを開く
「スケッチ例」→「Esp32AlexaWemoEmulator」→「M5StackAlexa」を開きます。
書き込み
「スケッチ」→「マイコンボードに書き込む」を使ってM5Stackにスケッチを書き込みます。
スケッチの動作
書き込みが終了すると、WiFiへ接続しIPアドレスが表示されます。
※WiFiの接続設定はあらかじめLovyanLauncherで行っておいてください。
...
WiFi connected
IP address :
<IPaddress>
Alexaアプリでデバイスの追加・設定を行う。
あらかじめサンプルには「M5Stack」というデバイス名が付いているのですが、日本語だと上手くいきません。スマホのAlexaアプリでデバイスの追加と設定を行います。
※ちなみに、英語だと「アレクサ、デバイスを検出して」でM5Stackのデバイスが使えるようになります。
デバイスの追加
「アレクサ、デバイスを検出して」と話しかけるか、Alexaアプリでデバイスを追加してください。検出されると、「えむごすたっくのデバイスを検出しました」とアレクサが話してきます。
アレクサアプリでの追加手順
下の画像に沿って、デバイスを追加します。
デバイス名を変更する。
日本語の場合は、M5Stackと言う名前を変更する必要があります。例として「端末」という名前を付けます。M5Stackは「プラグ」で登録されています。下記の画像のように「端末」と設定してください。
AlexaからM5Stackを制御する。
今回のEsp32AlexaWemoEmulatorでは、M5Stackへ「オン」と「オフ」という操作ができるようになります。
「アレクサ、端末をオフにして」というと液晶画面がオフになります。オフにしてから「アレクサ、端末をオンにして」というと液晶がオンになります。
これで設定は完了です。
カスタマイズする箇所
ソースはGitHubでM5StackAlexa.inoを確認してください。
deviceOn()が「オンにして」、deviceOff()が「オフにして」の時の動作です。deviceStatus()はAlexaから定期的にステータスを確認するために使用します。
void deviceOn() {
M5.Lcd.writecommand(ILI9341_DISPON);
M5.Lcd.setBrightness(30);
}
void deviceOff() {
M5.Lcd.writecommand(ILI9341_DISPOFF);
M5.Lcd.setBrightness(0);
}
void deviceStatus() {
String sts = device->getDeviceStatus();
M5.Lcd.println("Called Status Check:" + sts);
}
おわりに
サンプルのM5StackAlexa.inoをカスタマイズすると「オン」と「オフ」に対応する動作を自分で作成することができます。定型アクションと組み合わせると自由なフレーズを指定することもできます。
M5Stackのピンを制御することもできるので、LEDを付けたりすることもできます。色々なことができるとおもうので是非使ってみてください。