モチベーション
ノーコードは何がいいですか?
前回、音声でエアコンやライトなどのデバイスをコントロールする制作を開発しました。その時、アレクサとobnizと連携した時、Nodejsでアレクサスキルを開発しました。今回、ノーコードと普通のコードを比較するために、2つiPaaSサービス(IFTTTとenebular)を使って同じことをやってみます。
必要なもの
- obniz
- alexaデバイス(アマゾンエコー、スマホのアレクサアプリ)
- 赤外線センサー
- 赤外線LED
- IFTTTアカウント
- enebularアカウント
- herokuアカウント
IoTデバイス
システムの図
1. アレクサはユーザーのコマンドを聞いてコマンドを認識する
2. アレクサはIFTTTにユーザーのコマンドを送る
3. IFTTTはenebularサーバー(herokuにデプロイした)のwebhookのリクエストを送る
4. enebularはobnizノードを使って、obnizクラウドにリクエストを送る
5. obnizクラウドはリクエストをobnizデバイスを送る
6. obnizは赤外線LEDでエアコンなどをコントロールする
なぜ、2つiPaaSサービスが必要かというと、IFTTTはアレクサに連携するのは簡単ですが、obnizに連携できません。逆に、enebularとobnizは簡単で、アレクサとは難しいです。
enebular
enebularの使い方
enabularはの役割はHTTP webhookをつくって、obniz APIを使ってobnizをコントロールすることです。
エアコンをつけるWebhook
まず、フローを作りましょう。それから、obnizノードをインストールして、以下のコードをFunction部分に追加します。
let led = obniz.wired('InfraredLED', {anode: 5, cathode: 6});
await led.send([1,1,1,1,....]); //エアコンをつける信号
エアコンを消すWebhook
webhookのURLと消す信号の以外は以上と同じです。最後のフローは以下の図になります。
ただ、そのままデプロイすると、enebularが一時的なサーバーを作ってくれて、1時間ぐらいセッションの有効期限が切れなるので、webhookのURLも変わります。だから、Heroku へのデプロイします。
注意:サーバーのURLはApp name
の部分.herokuapp.comになります。例えば:App name
はabcなら、URLはabc.herokuapp.comです。
IFTTT
IFTTTの役割はAlexaと作ったWebhookを連携することです。だから、If this
はAmazon Alexaです。
、If Thisの部分は「Amazon Alexa」の「Say a specific pharase」を選びます。
Then That
は「Webhooks」の「Make a Web request」を選びます。
ノーコードと普通のコードの比較
ノーコード | 普通のコード | |
---|---|---|
開発時間 | 4時間 | 20時間 |
できること | 少ない | ほぼ何でもできる |
関連の部分の仕組みの理解度(アレクサの中身など) | ほぼわからない | よく理解できた |