2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Arduino MKR WiFi 1010 で始める Arduino IoT Cloud【その3:Alexa連携編】

Last updated at Posted at 2021-08-15

Arduino MKR WiFi 1010 に関し、以下の 2つの記事の内容を進めて、Arduino MKR WiFi 1010 に内蔵された LED の ON/OFF を Arduino IoT Cloud のダッシュボードのスイッチと連動させる、ということをやっていました。

今回は上記で行った内容を流用して、AIアシスタントの Alexa との連携を行ってみます。
上記の 2つ目の記事と同様に内蔵LED の ON/OFF を制御する、という内容にしたので、以下のツイートの動画のように大変地味なデモとなっています 笑

Arduino MKR WiFi 1010 と Alexa の連携の話

Arduino MKR WiFi 1010 に関して 3つ目となる以下の記事を書いた際、記事の中の 「Alexa Integration」という項目の部分で、Alexa連携の話に軽く触れていました。

●Arduino Cloud と Arduino IoT Cloud などの情報を整理してみる【未完】 - Qiita
 https://qiita.com/youtoy/items/7885aa0e85e1dbf78cdc

具体的には、以下の 1つ目の記事と、その記事の中に書かれていた 以下の 2つ目から 5つ目の項目の内容を掲載していました。

この時点では、「Alexa連携が気になる話の 1つで、情報源はこのあたり」というのを書いていただけだったのですが、そんな中、以下のツイートを見かけて実際に動作させられることが分かりました。

今回の実践を進めるに到った経緯は、上記のような流れでした。

ポイントとなる内容を整理する

上で書いていた 5つのリンクのうち、2つ目の以下の内容が、「Getting the Alexa skill」という感じの書かれ方でリンクされていたので、これを見てみました。

●Arduino IoT Cloud Amazon Alexa Integration - Arduino Project Hub
 https://create.arduino.cc/projecthub/303628/arduino-iot-cloud-amazon-alexa-integration-4e6078

とりあえず、まずは Arduino MKR WiFi 1010 のみでできる(内蔵LED のみでできる)という形にしたかったので、それに必要そうな内容のみを見ていきました。
(材料のパートで書かれていたシールドやフルカラーLED などは不要となるように進めました)

必要な開発環境や Alexaスキルについての概要

もう少し先を見ていくと、必要な開発環境や Alexaスキルなどが書いてありました。
必要な開発環境など.jpg

Alexaスキルに関する話以外は、冒頭に書いていたセットアップ編の記事と、同じく冒頭に書いていたダッシュボード連携を行った記事で実施したものが大半でした。

具体的には、以前の 2つの記事を進めたことで、今回必要な手順の中の以下を済ませた状態となっています。

  • Arduino Cloud のアカウントは作成済み
  • 「Arduino Create plugin(Arduino Create Agent)」はセットアップ済み
  • Arduino IoT Cloud にデバイスを 1台登録済み
    • 登録デバイスと紐付いた「変数」の設定をお試し済み
    • Wi-Fi用の情報(SSID とパスワード)は登録済み
  • オンラインの Web Editor からデバイスへのプログラム書き込みが成功したのを確認済み

ちなみに、過去の2つの記事の内容を進めた結果、以下のツイートの動画の内容が実現できている、という状態です。

ここで、何らか Alexa連携をするための重要な要素を少し足してやれば、良さそうな感じがしました。

上であげていたドキュメントを見ていくと、ポイントになるのは「Arduino IoT Cloud上で設定する 変数 を Alexa連携に対応したものにすること(以下の画像の部分に書かれている内容)」が 1つあるようでした。
ポイントになる部分(変数).jpg

それともう 1つ、重要になるのが以下の Arduino用の Alexaスキルで、こちらを用いてアカウントリンクを行う(Alexa と Arduino Cloud用アカウントを紐付ける)ということも行う必要があるようでした。

●Amazon.co.jp: Arduino : Alexaスキル
 https://www.amazon.co.jp/Arduino-LLC/dp/B07ZT2PK2H/
Arduino用のAlexaスキル.jpg

これらを設定しておくと、Arduino MKR WiFi 1010 が、Alexa から見て Alexa対応デバイス(スマートホーム端末)として検出できるようです。

上記の話の詳細は、この後で書いていきます。

Alexa連携を試す

繰り返しになりますが、これ以降の手順を進めるにあたり、以下の記事に書かれた「アカウントの作成やデバイスの登録」といった内容は行っておいてください。

Alexaスキル関連の対応

Alexaスキルに関する部分について、まずはスマホの Alexaアプリ上で以下の操作を進めていきました。

Alexaアプリで、Arduino用のスキルを有効化します。
手順1.jpg

次にアカウントリンクを行う画面が出るので、Arduino Cloud のアカウントのログイン用情報を入力してください。
手順2.jpg
そして、以下のようにアカウントリンクが正常に行われたという表示が出るのを確認してください。
手順3.jpg

その後、以下の画面が出てきますが、後で別の画面から検索ができるので、今はキャンセルして Arduino IoT Cloud・Arduino MKR WiFi 1010関連の準備を進めてみます。
04.jpg

Arduino IoT Cloud上で変数を追加する

Arduino IoT Cloud で登録済みデバイスを選択した後のトップの画面で、左側にある「Variable」の部分で、「ADD」と書かれたボタンを押します。
デバイス選択後の画面.jpg

その後の画面でポイントになるのは、「Select variable type」と書かれた中で、表示される変数の種類の絞り込みを行う部分に「Alexa compatible」という部分があるので、これを選択することです。
変数設定でのフィルター.jpg
これによって、Alexa連携に必要な変数のみが表示された状態になるようでした。
フィルター後の表示.jpg

今回、Arduino MKR WiFi 1010内蔵の LED の ON/OFF を扱うので、「Alexa compatible」を選択した状態で表示された中の、それに該当しそうな true/false の値をとる「Light」を選びました。
変数名は適当に「alexa_light」として、他の設定はデフォルトのままにしました。
自分が設定した変数.jpg

プログラムを書き込む

上記の変数の追加を行うと、[前回のダッシュボード連携を行った際のプログラム]
(https://qiita.com/youtoy/items/e247056e1696161ebba1)に少しだけ処理が加わったものが自動で生成されていました。

具体的には、プログラムの最後に以下の部分が追加されていました。

void onAlexaLightChange() {
}

内容的には、[前回の記事で書いたプログラム]
(https://qiita.com/youtoy/items/e247056e1696161ebba1)の中の、ダッシュボード上のスイッチに関わる処理(スイッチの ON/OFF に連動して動く処理)と同じ内容( led_status = !led_status; という処理)を書いてやればとりあえず動きそうです。

最終的に、以下のプログラムを Arduino MKR WiFi 1010 に書き込みました。

#include "thingProperties.h"

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  
  Serial.begin(9600);
  delay(1500); 

  initProperties();

  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  
  setDebugMessageLevel(4);
  ArduinoCloud.printDebugInfo();
}

void loop() {
  ArduinoCloud.update();
}

void onLightChange() {
  if(light){
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    digitalWrite(LED_BUILTIN, LOW);
  }
}

void onAlexaLightChange() {
  if(alexa_light){
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    digitalWrite(LED_BUILTIN, LOW);
  }
}

Alexaアプリでデバイスを登録する

ここまでの準備ができたら、Alexaアプリから Arduino MKR WiFi 1010 を使えるようにするための設定の続きを進めます。

Alexaアプリのデバイスタブを開きます。
手順A.jpg

画面右上にある「黒丸に白い十字が描かれたボタン」を押して、その後に画面下に表示されるリストの「デバイスの追加」を選択します。
手順B.jpg

その後に出てくるリストの一番下の「その他」を選びます。
手順C.jpg
次の画面では「デバイスを検出と書かれたボタン」を押します。
手順D.jpg
そうすると「接続するデバイスを検出中...」と表示されるので、しばらく待ってみてください。

しばらくすると、以下のように Arduino MKR WiFi 1010 がスマートホーム端末の「ライト」として検出されました。
05.jpg

デバイスを検出できて接続された状態になると、スマホの Alexaアプリの上部にある横並びのリストの「すべてのデバイス」を選んだ際に、Arduino MKR WiFi 1010 が追加されているのが確認できます。
すべてのデバイスのアイコン

以下のように「alexa_light」という、Arduino IoT Cloud上で変数名として設定した名称で、リストの中に登録されていました。
Arduino MKR WiFi 1010 が追加された状態

Alexaアプリで定型アクションを設定する

ここまでできれば、あとは Alexaアプリの中で定型アクションとして設定すれば、Alexaアプリやスマートスピーカーから Arduino MKR WiFi 1010 の制御を行うことができます。

自分の場合、Alexaアプリの「その他」のタブを選んだ中の「定型アクション」の中で、ON/OFF を制御するためのものを追加して試しました。
Alexaアプリの「その他」のタブ
例えば、以下は LED を ON にするための定型アクションです。
LED を ON にするための定型アクション

ここでは、定型アクションについての説明やその設定方法の詳細は省きますが、気になる方は以下のページ等をご覧ください。

まとめ

今回、Alexa と Arduino MKR WiFi 1010 との連携を試して動作させることができました。

試した内容が内蔵LED の ON/OFF のみで、Arduino IoT Cloud上での変数設定の項目を見た感じだと、他にもいろいろな機能を組み合わせられそうだったため、さらに詳細を調べたりできればと思います。

【追記】

@norippy_i さんが記事を書かれたとのことで、追記しました。
内蔵された RGB LED を使う方法、良いな。

●Arduino MKR WiFi 1010 を Arduino IoT Cloudを使ってAlexa対応デバイスをつくる - Qiita
 https://qiita.com/norippy_i/items/d59c39ca50d88287ab57

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?