chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

いまさらだけど、、Alexa->IFTTT->MQTTを構築

事情により、Alexa -> IFTTT -> MQTTのデモを作ってみる。前提はすべて無料で!! MQTTはずっとお試しで使っているshiftr.ioを使う。

AlexaとIFTTTをつなぐ方法はいろいろあると思いますが、IFTTTでIF部(Trigger)としてAlexa Serviceを設定して接続する。以下がおなじみのIFTTTの画面、IF部にAlexa Serviceを設定、THEN部にWebhooksからshiftr.ioへの記事投げ込みを設定する。

まず、、IFTTTでIF部(Trigger)として、Alexa Serviceを選択, Say a specific phraseを選択して、トリガーとなるキーワードを指定する。今回はエアコンと指定

THEN部でWeb APIを叩きたいので、サービスとしてWebhooksを選択すると、任意のGET/POSTが発行できる。この画面で、shiftrに対してURLでID/PWD,Topicを指定してPOSTでMessageを投げ込む

URLはID/PWD、topic、endpoint名は以下で構成される。

https://<id>:<PWD>@<instance_name>.cloud.shiftr.io/broker/<topic>

例:
ID/PWD:rai99/2423423
EndPoint:rain99.cloud.shiftr.io
Topic:room134/dev456/control

https://rain99:2423423@rain99.cloud.shiftr.io/broker/room134/dev456/control

登録が終わったら、自分のAlexaアプリで、「アレクサ、エアコン、トリガー」と発話すると、shiftr.ioにメッセージが投げ込まれる。
以下はスマフォのAlexaアプリ(Amazon Echoとかスマートスピーカが無くても音声制御ができる)

以下はShiftr.ioのコンソール画面

MQTTに記事が投げ込めたら、RPiとかでサブスクライバ(読者側)を走らせておけば遠隔制御とかが可能になる*1

IFTTTを無料枠で使う場合、作成できるルールが数種類なのと、トリガーワードに引数とか付けられなさそうな制限により、エアコンの温度設定とか運転モードとか、いろんな組み合わせは作れなさそうだ。もしまともに音声制御したかったら、Alexaのカスタムスキルを構築する必要があると思う。多分。カスタムスキルもAWS上で無料で作れるらしいのだが。。AWS上でLambdaを使えるなら、IFTTTを経由せずにAlexa->Lambda->Shiftrの流れでメッセージを投げこめばいいだろう。。

ちなみに、、IFTTTで作ったルール(アプレット)は普通に作ると個人専用になっていて、一般利用のために公開したい場合は公開手続きが必要らしいです。

*1:今は手抜きだけどBODY部はJSON形式にする必要あり