Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Twilio&sakura.io 体験ハンズオン(Part1)/sakuraio handso...

Twilio&sakura.io 体験ハンズオン(Part1)/sakuraio handson twilio part1

各地で開催されているさくらインターネットが提供するIoTプラットフォーム「sakura.io」のハンズオンでの資料となります。

本資料ではコミュニケーションAPIサービスのTwilio(トゥイリオ)と連携し、「Arduino+sakura.ioモジュールを用いたマイコンおよびプログラムの構築」から「Twilioを用いたWebサービス連携」までの手順をスライドでご覧いただけます。

サービス詳細は以下をご確認ください。
Twilio https://twilio.kddi-web.com/
sakura.io https://sakura.io/

More Decks by さくらインターネット(IoTプラットフォーム事業)

Other Decks in Technology

Transcript

  1. 本ハンズオンの目的とお願い  本ハンズオンは sakura.io を使用し、組込み、Web/アプリ開発、それぞれのスキルセッ トを大きく超えることなく、Internet of Things(IoT) に携わることができることをご体験 いただくものです。

     特に、本編ではコミュニケーションAPIサービスであるTwilio(トゥイリオ)と連携した簡易 的なサービス構築を通じて、Web・アプリケーションの技術を用いた「IoTシステム」の構 築イメージを掴んでいただくことを目的としています。  そのため、組み込み系またはWeb/アプリ系のどちらか、または両方わからないという方に も、多くご参加いただいています。  今回は1人に1つのキットをご用意しています。もしもご自身の知識分野で、近くの方の フォローができそうだなと思われましたら、積極的にサポートしあって進めていただければと 思います。 5
  2. 本ハンズオンで使用するツール・機材・参考情報まとめ ▪本編▪ ・Twilio サインアップ https://twilio.kddi-web.com/ ・さくらインターネット会員登録 https://secure.sakura.ad.jp/signup3/member-register/input.html ・sakura.ioコントロールパネル https://secure.sakura.ad.jp/iot/ ・Arduino

    https://www.arduino.cc/en/Main/Software ・サンプル用スケッチ(HDC1000) https://github.com/sakuraio/handson-sample/blob/master/arduino/twilio-HDC1000-with-LED.ino ・サンプル用スケッチ(SHT31) https://github.com/sakuraio/handson-sample/blob/master/arduino/twilio-SHT31-with-LED.ino ・Twilio Functionsプログラム(outboundcall) https://github.com/sakuraio/handson-sample/blob/master/twilio/outboundcall.js ・Twilio Functionsプログラム(IVR) https://github.com/sakuraio/handson-sample/blob/master/twilio/ivr.js ・Twilio Functionsプログラム(Turn) https://github.com/sakuraio/handson-sample/blob/master/twilio/turn.js ▪参考▪ 開発者向けページ ・Twilio Docs https://jp.twilio.com/docs/ ・sakura.io 開発者向け https://sakura.io/developer/ ▪参考▪ モジュール&オプションのご購入 ・商品の購入 https://sakura.io/product/ ・sakura.ioモジュール(LTE) https://sakura.io/product/module_lte.html ・sakura.ioシールド for Arduino https://sakura.io/product/arduino.html ▪参考▪ その他物品のご購入(秋月電子通商) ・温湿度センサ(SHT31) http://akizukidenshi.com/catalog/g/gK-12125/ ・抵抗内蔵LED http://akizukidenshi.com/catalog/g/gI-06245/ ・ジャンパコード http://akizukidenshi.com/catalog/g/gC-05159/ ・Arduino Uno Rev3 http://akizukidenshi.com/catalog/g/gM-07385/ ・USBケーブル Aオス-Bオス http://akizukidenshi.com/catalog/g/gC-07605/ ・ACアダプター http://akizukidenshi.com/catalog/g/gM-07772/ ・ブレッドボード http://akizukidenshi.com/catalog/g/gP-05294/ 6
  3. Webサービス連携 (Twilio) ① 今回のハンズオンの流れ 7 ② マイコンおよび プログラムの構築 マイコン (Arduino

    Uno) 温湿度センサ (SHT31/HDC1000) sakura.io モジュール ③ 各種LED ハンズオン キット Outgoing Webhook 連携 サービス モジュール sakura.ioの設定 プロジェクト WebSocket ※動作確認用 Incoming Webhook /outboundcall /ivr /turn Functions Inbound Webhook Outbound Webhook
  4. Agenda 8 1. Webへのデータ連携(Twilio 前編) ₋ 電話番号の購入、環境変数の設定 ₋ Functionsによるsakura.io Outgoing

    Webhook受信用プログラム(outboundcall)の作成 ₋ Functionsによるキー応答用プログラム(ivr)の作成 ₋ Functionsによるsakura.io Incoming Webhook送信用プログラム(turn)の作成 2. sakura.ioの設定 ₋ プロジェクトの作成 ₋ モジュールの登録 ₋ 連携サービスの設定(Outgoing Webhook / Incoming Webhook / WebSocket) 3. マイコンおよびプログラムの構築 ₋ マイコン(Arduino)による開発環境の準備 ₋ 温湿度センサおよびモジュールの繋ぎ込み ₋ 試験用プログラムの流し込み ₋ 【参考】デバイスから送信されたデータの確認 4. Webへのデータ連携(Twilio 後編) ₋ 環境変数の追加設定(Incoming Webhook)
  5. Webサービス連携 (Twilio) ① 今回のハンズオンの流れ 10 ② マイコンおよび プログラムの構築 マイコン (Arduino

    Uno) 温湿度センサ (SHT31/HDC1000) sakura.io モジュール ③ 各種LED ハンズオン キット Outgoing Webhook 連携 サービス モジュール sakura.ioの設定 プロジェクト WebSocket ※動作確認用 Incoming Webhook /outboundcall /ivr /turn Functions Inbound Webhook Outbound Webhook
  6. 電話番号の購入 23  日本で使用可能な番号一覧が表示されます。TYPEが [ ローカル ] となっている月額 が [

    ¥108 ] のものの中から任意の番号を選び、右側にある 【 購入 】 をクリックします。
  7. Functionsの設定 29  Configuration画面では、[ Enable ACCOUNT_SID and AUTH_TOKEN ]に チェックを入れ、[

    Environmental Variables ]の【 】をクリックし、 以降で作成するプログラムのため、以下の4つの環境変数を設定します。 FROM_NUMBER:購入した電話番号(E.164形式) MODULE_NUMBER:モジュールの一意のID ※仮の値 SAKURA_URL:Incoming WebhookのURL ※仮の値 TO_NUMBER:通知先に使用する電話番号(E.164形式)
  8. Functionsの設定(outboundcall) 33  Functions作成画面に遷移します。 FUNCTION NAME、PATHを入力し、 CODEにはサンプルの内容をコピー&ペーストしたうえで 【 Save 】

    をクリックします。 https://github.com/sakuraio/handson-sample/blob/master/twilio/outboundcall.js コピー&ペースト FUNCTION NAME:outboundcall PATH:/outboundcall
  9. Functionsの設定(outboundcall)  Githubの該当するサンプルフローページで【 Raw 】をクリックし、キーボードで 【 Ctrl + A 】ですべてを選択して、【

    Ctrl +C 】でコピーします。 34 https://github.com/sakuraio/handson-sample/blob/master/twilio/outboundcall.js キーボードで【 Ctrl + A 】ですべてを選択 →【 Ctrl +C 】でコピーします
  10. Functionsの設定(ivr) 37  Functions作成画面に遷移します。 FUNCTION NAME、PATHを入力し、 CODEにはサンプルの内容をコピー&ペーストしたうえで 【 Save 】

    をクリックします。 https://github.com/sakuraio/handson-sample/blob/master/twilio/ivr.js コピー&ペースト FUNCTION NAME:ivr PATH:/ivr
  11. Functionsの設定(ivr)  Githubの該当するサンプルフローページで【 Raw 】をクリックし、キーボードで 【 Ctrl + A 】ですべてを選択して、【

    Ctrl +C 】でコピーします。 38 https://github.com/sakuraio/handson-sample/blob/master/twilio/ivr.js キーボードで【 Ctrl + A 】ですべてを選択 →【 Ctrl +C 】でコピーします
  12. Functionsの設定(turn) 41  Functions作成画面に遷移します。 FUNCTION NAME、PATHを入力し、 CODEにはサンプルの内容をコピー&ペーストしたうえで 【 Save 】

    をクリックします。 https://github.com/sakuraio/handson-sample/blob/master/twilio/turn.js コピー&ペースト FUNCTION NAME:turn PATH:/turn
  13. Functionsの設定(turn)  Githubの該当するサンプルフローページで【 Raw 】をクリックし、キーボードで 【 Ctrl + A 】ですべてを選択して、【

    Ctrl +C 】でコピーします。 42 https://github.com/sakuraio/handson-sample/blob/master/twilio/turn.js キーボードで【 Ctrl + A 】ですべてを選択 →【 Ctrl +C 】でコピーします
  14. Webサービス連携 (Twilio) ① 今回のハンズオンの流れ 46 ② マイコンおよび プログラムの構築 マイコン (Arduino

    Uno) 温湿度センサ (SHT31/HDC1000) sakura.io モジュール ③ 各種LED ハンズオン キット Outgoing Webhook 連携 サービス モジュール sakura.ioの設定 プロジェクト WebSocket ※動作確認用 Incoming Webhook /outboundcall /ivr /turn Functions Inbound Webhook Outbound Webhook
  15. sakura.ioコントロールパネルにおける考え方  sakura.ioでは【 プロジェクト 】という単位で管理され、プロジェクト内に複数の【 モジュー ル 】【 連携サービス 】を紐付けます。

    データストア、簡易位置情報提供、ファイル配信と いった【 オプションサービス 】はプロジェクトに対して1つもしくは1セット設定できます。 47 プロジェクトC プロジェクトB プロジェクトA モジュール1 uAAAAAAAAAA モジュール2 uBBBBBBBBBB モジュール3 uCCCCCCCCCC データストアプラン Light/Standard/… 簡易位置情報提供 ON/OFF 連携サービス1 WebSocket 連携サービス2 Outgoing Webhook ファイル配信 File1/File2/… 連携サービス3 AWS IoT モジュール プロジェクトに対して 複数登録可能 オプションサービス プロジェクトに対して 1つ/1セット設定可能 連携サービス プロジェクトに対して 複数作成可能
  16. さくらインターネット 会員ID作成  会員IDをお持ちでない場合はご契約の サービスがない場合でも、さくらインター ネット会員登録から作成いただけます  会員登録が完了すると、指定したメール アドレスに [email protected]

    より会員IDが記載されたメールが送信さ れます。 会員IDおよびパスワードは重要な情報となりま すので、漏れないよう大事に保管ください。 48 Title:会員登録完了のお知らせ [XXX00000] ─────────────────────────────────── このメッセージはさくらインターネット会員登録フォームより 自動送信されています。このメールに心当たりのない場合は [email protected]までご連絡ください。 ─────────────────────────────────── さくらインターネット株式会社 様 (ご担当者: さくら 太郎 様) この度は、さくらインターネットに会員登録いただきまして誠に ありがとうございます。 以下の通り会員登録を受付ましたので、ご連絡させていただきます。 ============================================ ◎ 会員登録情報 会員ID : XXX00000 ご契約者名 : さくらインターネット株式会社 様 (ご担当者: さくら 太郎 様) 電子メール : [email protected] ============================================ ~~~以下省略~~~ https://secure.sakura.ad.jp/signup3/member-register/input.html
  17. モジュール登録  モジュールの追加に成功すると[ モジュールを追加しました ]ダイアログが表示されます。  [ ホームへ戻る ]ボタンをクリックしてホームに戻ります。 ID/PASSが正しくない、もしくは既に登録されているモジュールを追加しようとした場合は

    内容とともに[ モジュールの追加に失敗しました ]というダイアログが表示されます。 58 登録が成功した場合 登録が失敗した場合 登録用ID / 登録用パスワードのいずれかに誤りがあります、再度ご確認ください 別の会員IDで登録されています、過去登録した会員IDでログインし解除ください
  18. 連携サービスの設定(Outgoing Webhook)  Outgoing Webhookでは任意の名前とPayload URLを指定し、【 作成 】を クリックします。今回指定するPayload URLはTwilioのコントロールパネルで作成した

    【 outboundcall 】 のPATHとなります。  Secretはセキュリティを強固にするために使用いたしますが、今回は設定しません。 62
  19. Webサービス連携 (Twilio) ① 今回のハンズオンの流れ 72 ② マイコンおよび プログラムの構築 マイコン (Arduino

    Uno) 温湿度センサ (SHT31/HDC1000) sakura.io モジュール ③ 各種LED ハンズオン キット Outgoing Webhook 連携 サービス モジュール sakura.ioの設定 プロジェクト WebSocket ※動作確認用 Incoming Webhook /outboundcall /ivr /turn Functions Inbound Webhook Outbound Webhook
  20. 今回のワークショップでご提供するもの 73 ジャンパーコード sakura.ioモジュール(アンテナ付) +Arduino用シールド&Arduino Uno Rev3 USB2.0 ケーブル(A-B) 12W級

    9V-1.3A ACアダプタ ブレッドボード 人感センサ (SB412A) 照度センサ (GL5537-2) 温湿度センサ (HDC1000 or SHT31) 各種抵抗 ※必要に応じてご提供 タクトスイッチ ※必要に応じてご提供 抵抗入りLED ※必要に応じてご提供 本日は使用しません
  21. Arduino IDEのセットアップ  Webサイトから開発環境(Arduino IDE)を入手します。2018/6/4時点の最新バー ジョンは[ 1.8.5 ]です。  環境がWindowsの場合は【

    Windows Installer 】、Macの場合は【 Mac OS X 10.7 Lion or newer 】を選択します。 74 https://www.arduino.cc/en/Main/Software
  22. Arduino IDEのセットアップ  上部メニューバーからボードと、シリアルポートを設定します。 ボード:[ ツール ]→[ ボード:”XXX” ]から【 Arduino/Genuino

    Uno 】を選択 シリアルポート:[ ツール ]→[ シリアルポート ]から【 COMx (Arduino/Genuino Uno) 】を選択 Mac環境の場合はCOMポートではなく、【 /dev/… (Arduino/Genuino Uno) 】を選択  うまく認識しない場合は、USBを挿し直し、Arduino IDEを再起動を試してください。 78 ボードの選択 シリアルポートの選択
  23. マイコン(Arduino)の準備  [ ファイル ]→[ スケッチ例 ]→[ 01.Basics ]→[ Blink

    ]を選択し、Blink スケッチを表示します。  【 】をクリックしてスケッチを書き込み、該当のLEDが点滅状態になることを確認します。 何らかの問題があった場合、スケッチ下部にオレンジ色のエラーが表示されます。 79
  24. ライブラリの取得(SakuraIO)  [ スケッチ ]→[ ライブラリをインクルード ]→[ ライブラリを管理... ]をクリックし、 右上検索窓から【

    sakuraio 】を検索すると、[ SakuraIO by SAKURA Internet Inc. ]がヒットします。  最新のVer.を選択のうえ【 インストール 】をクリックすると該当ライブラリが取り込まれ、 [ INSTALLED ]が表示されます。 80
  25. ライブラリの取得(温湿度センサ-HDC1000利用の場合)  [ スケッチ ]→[ ライブラリをインクルード ]→[ ライブラリを管理... ]をクリックし、 検索窓から【

    hdc1000 】を検索すると、[ HDC1000 by Yuichi Tateno ]がヒット します。  【 インストール 】をクリックすると該当ライブラリが取り込まれ、[ INSTALLED ]が表示 されます。 81 ※本作業はセンサにHDC1000を利用している場合のみ実施します。
  26. ライブラリの取得(温湿度センサ-SHT31利用の場合)  [ スケッチ ]→[ ライブラリをインクルード ]→[ ライブラリを管理... ]をクリックし、 検索窓から【

    SHT31 】を検索すると、[ Adafruit SHT31 Library ]がヒットします。  【 インストール 】をクリックすると該当ライブラリが取り込まれ、[ INSTALLED ]が表示 されます。 82 ※本作業はセンサにSHT31を利用している場合のみ実施します。
  27. FirmwareUpdate.ino  [ ファイル ]→[ スケッチ例 ]→[ SakuraIO ]→[ FirmwareUpdate

    ]を 選択し、【 】クリックでスケッチを書き込みます。[ ツール ]→[ シリアルモニタ ]もし くは【 】クリックでアップデート状況を確認します。  現在のVersion情報と比較し、新しいファームウェアが提供されている場合はアップデートを 実行します。 83 ※PCからの給電が不安定/不足している場合は [ Update Failure ] と表示され、アップデートに 失敗する場合があります。その場合、電源アダプタを接続し、再度スケッチを書き込みます。 新しいファームウェアが存在する場合 最新のファームウェアが適用されている場合
  28. 試験用プログラムの流し込み(温湿度センサ-HDC1000利用の場合)  Githubの該当サンプルスケッチページで【 Raw 】をクリックし、キーボードで【 Ctrl + A 】 ですべてを選択して、【

    Ctrl +C 】でコピーします。 90 https://github.com/sakuraio/handson-sample/blob/master/arduino/twilio-HDC1000-with-LED.ino キーボードで【 Ctrl + A 】ですべてを選択 →【 Ctrl +C 】でコピーします
  29. 試験用プログラムの流し込み(温湿度センサ-HDC1000利用の場合)  [ ファイル ]→[ 新規ファイル ]で新しいスケッチを表示し、URLの内容をコピー&ペー ストし、【 】をクリックしてスケッチを書き込みます。 

    [ ツール ]→[ シリアルモニタ ]もしくは【 】クリックでTemp情報とシリアル値、 送信キュー情報が取得できることと、温度が30度を超えるとモニタ上に [ * Sent to sakura.io * ] と表示されることを確認します。 91 ※問題があった場合、オレンジ色のエラーが表示されます。 ※本作業はセンサにHDC1000を利用している場合のみ実施します。 https://github.com/sakuraio/handson-sample/blob/master/arduino/twilio-HDC1000-with-LED.ino
  30. 試験用プログラムの流し込み(温湿度センサ-SHT31利用の場合)  Githubの該当サンプルスケッチページで【 Raw 】をクリックし、キーボードで【 Ctrl + A 】 ですべてを選択して、【

    Ctrl +C 】でコピーします。 92 https://github.com/sakuraio/handson-sample/blob/master/arduino/twilio-SHT31-with-LED.ino キーボードで【 Ctrl + A 】ですべてを選択 →【 Ctrl +C 】でコピーします
  31. 試験用プログラムの流し込み(温湿度センサ-SHT31利用の場合)  [ ファイル ]→[ 新規ファイル ]で新しいスケッチを表示し、URLの内容をコピー&ペー ストし、【 】をクリックしてスケッチを書き込みます。 

    [ ツール ]→[ シリアルモニタ ]もしくは【 】クリックでTemp情報とシリアル値、 送信キュー情報が取得できることと、温度が30度を超えるとモニタ上に [ * Sent to sakura.io * ] と表示されることを確認します。 93 ※問題があった場合、オレンジ色のエラーが表示されます。 ※本作業はセンサにSHT31を利用している場合のみ実施します。 https://github.com/sakuraio/handson-sample/blob/master/arduino/twilio-SHT31-with-LED.ino
  32. 【参考】デバイスから送信されたデータの確認  [ 詳細表示モードに切り替え ]をクリックすると詳細表示モードに遷移します。  モジュールは同一ですが、データの内容によりタイプやペイロードが異なります。 96 タイプ: プラットフォームからの内容に応じて、

    いくつかの種類に分かれる ・channels :モジュールからのデータ ・connection :接続の開始/終了 ・location :簡易位置情報 ・keepalive :WebSocketセッション確認 ペイロード: 受け取ったデータのpayload部 が表示 時刻: 詳細表示モードではプラットフォームで該 当のメッセージを受け取ったタイムスタンプ チャンネルごとの最終到着データ: 各チャンネルに届いた最終の Valueを表示
  33. ① 今回のハンズオンの流れ 98 ② マイコンおよび プログラムの構築 マイコン (Arduino Uno) 温湿度センサ

    (SHT31/HDC1000) sakura.io モジュール ③ 各種LED ハンズオン キット Outgoing Webhook 連携 サービス モジュール sakura.ioの設定 プロジェクト WebSocket ※動作確認用 Incoming Webhook /outboundcall /ivr /turn Functions Inbound Webhook Outbound Webhook Webサービス連携 (Twilio) Environmental Variables
  34. 今回のハンズオンの流れ 99 マイコン (Arduino Uno) 温湿度センサ (SHT31/HDC1000) sakura.io モジュール 各種LED

    ハンズオン キット Outgoing Webhook 連携 サービス モジュール プロジェクト WebSocket ※動作確認用 Incoming Webhook /outboundcall /ivr /turn Functions Inbound Webhook Outbound Webhook  現時点の設定では連携は正しく動作しません。これはTwilio設定時には定まっていなかっ たsakura.io側のパラメータがあるためです。そのため、最後にTwilio Functionsの環境 変数に正式な値を設定します。 温度が閾値を超えた場合に データを送信 Outgoing Webhookにより、 リアルタイムで連携 受信したJSONデータを照合 モジュールID不一致にて除外 Environmental Variables モジュールIDとIncoming Webhookの指定
  35. Functionsの設定 102  [ Environmental Variables ]の中で、仮の値を入れていた2つの環境変数を 設定します。設定後、 【 Save

    】 をクリックすると設定内容が保存されます。 MODULE_NUMBER:モジュールの一意のID ※仮の値 SAKURA_URL:Incoming WebhookのURL ※仮の値
  36. 今回のハンズオンの流れ 103 マイコン (Arduino Uno) 温湿度センサ (SHT31/HDC1000) sakura.io モジュール 各種LED

    ハンズオン キット Outgoing Webhook 連携 サービス モジュール プロジェクト WebSocket ※動作確認用 Incoming Webhook /outboundcall /ivr /turn Functions Inbound Webhook Outbound Webhook  以上で設定は完了です。温度センサを指で押さえ、指定した値に達することでデータを送 信すること、それを元に自動的な架電が発生すること、キー操作に応じてLEDが制御され ること、までを確認しましょう。 moduleで指定された モジュールにデータを転送 JSONは電気信号に変換され 定義したLEDの操作を実行 受電した電話上でのキー操作 に基づきJSONデータを送信 温度が閾値を超えた場合に データを送信 Outgoing Webhookにより、 リアルタイムで連携 受信したJSONデータを 元に自動応答での架電を実行
  37. 最後に ~Twilio~  購入した電話番号の維持には月額費用がかかります。返却する場合は [ Phone Numbers ]から[ アクティブな電話番号 ]を開き、最下部の

    【 この電話番号をリリースする 】をクリックします。その後、返却の確認がされるため、 【 番号をリリースする 】をクリックすると該当番号が返却されます。 111