Amazon EchoでSORACOM Funnelからデータを取得する

この記事は、[SORACOM Advent Calendar 2017](https://qiita.com/advent-calendar/2017/soracom)の14日目の記事です。

---

IoT初心者が12月に発売された[Grove IoT スターターキット for SORACOM](https://soracom.jp/products/#grovestarter_kit)で色々とやってみた記事です。

## Grove IoT スターターキット for SORACOM やってみた

12月1日の発売開始後、購入し、翌2日に到着。あまりの早さにびっくり。

- 当日(12月1日)
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ソラコムさん、仕事早いなー。 Grove IoT スターターキット for SORACOMの出荷準備出来たらしい。<a href="https://twitter.com/hashtag/soracom?src=hash&amp;ref_src=twsrc%5Etfw">#soracom</a></p>&mdash; Kenichiro Wada (@Keni_W) <a href="https://twitter.com/Keni_W/status/936477075682205696?ref_src=twsrc%5Etfw">2017年12月1日</a></blockquote>

- 翌日(12月2日)到着！
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">うおー。もう届いたぞ。ありがとうございます！これはこいつを試してSORACOM Advent Calendarに書くというのが必須な流れですな。<a href="https://twitter.com/hashtag/soracom?src=hash&amp;ref_src=twsrc%5Etfw">#soracom</a> <a href="https://t.co/bTJ2BWNyn3">https://t.co/bTJ2BWNyn3</a></p>&mdash; Kenichiro Wada (@Keni_W) <a href="https://twitter.com/Keni_W/status/936793250278424576?ref_src=twsrc%5Etfw">2017年12月2日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

12月3日には、値の取得＆SORACOM Air経由で、SORACOM Funnelでデータを格納し、参照するところまで完了。
- ケースを開けたところ

<img src="https://qiita-image-store.s3.amazonaws.com/0/72752/8ca7f3a7-d00b-567a-667b-9fb07feb0972.jpeg" width=50%>

- 説明書に従って、DHT11を繋いだところ

<img src="https://qiita-image-store.s3.amazonaws.com/0/72752/84d04c31-5695-919d-113a-b2a9e0834766.jpeg" width=50%>

- PC上でデータ確認

<img src="https://qiita-image-store.s3.amazonaws.com/0/72752/0eab50ca-4f14-1019-2765-8bdc88eb580b.jpeg" width=50%>

---

初心者なのですが、あまり悩まずできました。多分これのおかげ！
<img src="https://qiita-image-store.s3.amazonaws.com/0/72752/b1bd10e1-f354-6000-6fe1-cace53502281.jpeg" width=50%>

**ほんと素晴らしい説明書です。**

---

やっていた中で、以下の点で苦戦しました。

- SIMがうまく入らない
    - 入れて、コンソールみたら、オフラインだったので、？？？。
        - 答えは・・・・MicroSDカードスロットに差し込んでました。 
- WinLTEにプログラムを書き込めない
    - 毎回DFUモードにしないとダメでした。
        - ここはもしかしたら、やり方間違っていただけかも・・・

・・・苦戦というほど、苦戦していません。

---
さて、ここでふと思ったのは、こんなに簡単にできてしまっては、やってみました記事は書けないのでは・・・（汗）
どうしようかと、考えていたところ、ふと目に入ったのは、家にあったAmazon Echo。
**そうだ！Amazon　Echoにデータを話させてみよう！**


## Echoに話させてみる
ということで、やったことは以下。

- Alexa Skill Kit(ASK)でカスタムスキルを作成
- スキルから呼び出すLambdaを作成
    - Lambda内で、SORACOM APIをコール

実際の作業としては、

- ASKのintentでパターンを何個か定義
    - 色々作ってみたものの、なかなか認識してくれない悲しみに遭遇。
- slotでSIMの名前、データの種類(とりあえず気温と湿度)、日付を定義
    - SIMの名前はオプションのIDにSORACOMで登録してある名前を定義して、Lambda側で変換処理を不要にしました。 
- AlexaからLambdaを呼ぶところは、LambdaのBluePointの「alexa-skills-kit-color-expert」をベースに作成。
- SORACOMのAPI呼び出しは、前に[AWS Lambdaを使って、 毎日の歩数をツィートしつつ、 Soracom Airの速度を アメとムチ的に変えるアプリを 作ってみた話（仮)](https://www.slideshare.net/ssuser12e5d6/aws-lambda-soracom-air)で、認証部分とかは作っていたので、それをカスタマイズして使いました。
- 余談ですが、開発は、re:invent 2017で発表されたCloud9を利用しました。
    - 開発・テスト・デプロイまでできるので、結構便利。

---

２日間ぐらい夜な夜なTry & Errorを繰り返し（エラーになるというよりは、そもそもEchoが認識してくれないことが大半）て、なんとか完成！
多分、リビングでEchoに指示出しては、「わかりません」とか「ごめんなさい」とか言われていたので、端から見ればかなりやばかったかも。。。

ということで、話している動画(呼び出しの部分は録画し忘れました。)です。
[![気温データを話すEcho](http://img.youtube.com/vi/zb4yw_Bhvx4/0.jpg)](http://www.youtube.com/watch?v=zb4yw_Bhvx4)

なお、保存されているデータはこんな感じです。
<img width="50%" alt="データ" src="https://qiita-image-store.s3.amazonaws.com/0/72752/7e1d308c-d823-c41d-132f-23d95f58f628.png">



## 感想
- Grove IoT スターターキット for SORACOMですが、ブレッドボードとか抵抗とかいらず、ケーブルを繋げばできるので、非常に初心者向きのキットだと思いました。
- 付属のセンサーでも楽しめるはず（まだ試してないですが）ですし、Groveのセンサー自体は、他にも色々あるので、それを買ってきて、拡張して、できそうだなと思いました。
- SORACOM APIはドキュメントが整っているので、非常に使いやすいです。

## 参考にした記事など
### Grove IoT
@kuronyankotan さんの[Grove IoT スターターキット for SORACOM の開封の儀 - kuronyankotan.com](https://kuronyankotan.com/?p=418)
SORACOM Developersの[LTEモデム搭載プロトタイプ向けデバイス Wio LTE をセットアップする](https://dev.soracom.io/jp/start/lte_hw_wio-lte/)
SeeedJP の[Wio LTE for Arduinoのwiki](https://github.com/SeeedJP/WioLTEforArduino/wiki/Home-ja)

### Alexa Skill Kit
Amazon Developerの[Alexa Skills Kitによるスキルの作成](https://developer.amazon.com/ja/docs/ask-overviews/build-skills-with-the-alexa-skills-kit.html)
@chroju さんの[Amazon Echo (Alexa) のSkillの開発に必要な基本概念を押さえる](https://qiita.com/chroju/items/3f30fe424df36e4b4d80)
@ryo_naka さんの[Amazon EchoのSkillで何かを作ってみて申請してみる](https://qiita.com/ryo_naka/items/936d9a6853be85bae88b#_reference-dfb7e079d66085e2a758)

この場を借りて御礼申し上げます。

## 今後
- Grove IoTでもっと遊びます。
- まだまだ改善できると思うので、ロジックも見直します。
- 仮のタイトルで一度出しましたが、Alexaで速度変更とか、有効・無効の処理を実装してみたいと思います。
    - SIMの登録は・・・IMSI等を認識させられる自信がないのでなしの予定。

## おまけ
Echoと会話するのは、滑舌良くないとダメですね。認識率１割ぐらいかなーと。。。