Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SORACOM UG 東海 x JAWS-UG 名古屋 | SORACOM LTE-M Button とボタンを支えるバックエンドシステムの紹介

1,368 views

Published on

SORACOM UG 東海 x JAWS-UG 名古屋
SORACOM LTE-M Button とボタンを支えるバックエンドシステムの紹介

株式会社ソラコム
テクノロジー・エバンジェリスト
松下 享平

Published in: Technology
  • Be the first to comment

SORACOM UG 東海 x JAWS-UG 名古屋 | SORACOM LTE-M Button とボタンを支えるバックエンドシステムの紹介

  1. 1. SORACOM LTE-M Button と ボタンを支えるバックエンドシステムの紹介 SORACOM UG 東海 (#4) JAWS-UG 名古屋共催 Jan. 19, 2019 / アイレット名古屋オフィス 株式会社ソラコム テクノロジー・エバンジェリスト 松下 享平 (ma2shita@soracom.jp / Max)
  2. 2. 株式会社ソラコム テクノロジー・エバンジェリスト 松下享平 (まつした こうへい) "Max" 講演回数 140超/年 保有スライド枚数 8000枚 以上 オーバーラン常習犯
  3. 3. https://aws.amazon.com/jp/iot-1-click/ AWS IoT 1-Click とは? Lambda 関数のトリガーに ボタンが使えるようになる サービス 「メカニズム」における「インプット」
  4. 4. AWS Lambda LTE-M SORACOM LTE-M Button の主要な技術要素
  5. 5. AWS Lambda はご存知ですか? ✋
  6. 6. AWS Lambda とは? 1:保存したプログラムを 「イベントソース」や 「トリガー」と称される 2:データの入力を きっかけに 3:実行する AWS サービス 他の SaaS (REST API や Webhook 経由) 対応言語 • Node.js (JavaScript) • Python • Java • C# • Go IFTTT SORACOM Harvest Lambda 関数
  7. 7. AWS IoT 1-Click との組み合わせ 1:保存したプログラムを 3:実行する AWS サービス 他の SaaS (REST API や Webhook 経由) 対応言語 • Node.js (JavaScript) • Python • Java • C# • Go IFTTT SORACOM Harvest Lambda 関数 2:データの入力を きっかけに
  8. 8. クラウドネットワーク センサー/デバイス “モノ” SORACOM LTE-M Button powered by AWS 価値が 出せる 領域 価値が 出せる 領域 中継器 アクセスポイント等 ネット回線を 別途用意 いきなりつながる センサー 接続
  9. 9. 携帯キャリアの運営するセルラーネットワークを用いた LPWA規格の1つ。 既存のLTE基地局をベースに全国エリアをカバーしている ため、広域で省電力なセルラー通信を実現可能。
  10. 10. LTE-M エリア検索
  11. 11. 参考: 電波の特性 電波は「電灯」と同じだと考えるとわかりやすい 地面 光源 = アクセスポイント 高い位置だと 広範囲を照らす 指向性がある場合は 向いていない方向は 照らせない
  12. 12. ボタンでできること • 1 回押し • 2 回押し • 長押し (1.2 秒以上)
  13. 13. AWS Lambda の `event` の内容 トップレベル { "deviceInfo": {}, "deviceEvent": {}, "placementInfo": {} } "deviceInfo": { "deviceId": "_YOUR_DEVICE_DSN_", "type": "button", "remainingLife": 99.9, "attributes": { "projectRegion": "ap-northeast-1", "projectName": "_YOUR_PROJECT_NAME_", "placementName": "_YOUR_PLACEMENT_NAME_", "deviceTemplateName": "_YOUR_TEMPLATE_NAME_" } },
  14. 14. AWS Lambda の `event` の内容 (続き) "deviceEvent": { "buttonClicked": { "clickType": "DOUBLE", "reportedTime": "2018-10-23T13:43:17.745Z" } } }, "placementInfo": { "projectName": "Button", "placementName": "_YOUR_PLACEMENT_NAME_", "attributes": { "ATTR_KEY1": "VALUE1", "ATTR_KEY2": "VALUE2" }, "devices": { "_YOUR_TEMPLATE_NAME_": "_YOUR_DEVICE_DSN_" } }
  15. 15. 特に活用したいデータ .deviceInfo.deviceId (String) デバイスに割り当てられている DSN ※ DSN にどっぷり依存した仕組みだと交換しにくくなるかも ビジネスロジック上の ID は「プレイスメント」もしくは DynamoDB とかから lookup する仕組みがおススメ .deviceInfo.remainingLife (Float) MIN(push回数/1500 or 開始からの日数/365) ※電池残量ではありません .deviceEvent.buttonClicked.clickType (String) SINGLE or DOUBLE or LONG .placementInfo.attributes (Hash->value:String) 「プレイスメント」で設定した Key-Value
  16. 16. 実機が無くても開発可能 https://docs.aws.amazon.com/ja_jp/iot-1-click/latest/developerguide/1click-events.html AWS Lambda 管理画面の「テストイベント」 コピペ&編集
  17. 17. コピペ用コードリポジトリ https://github.com/j3tm0t0/1-click ※ apex は「より便利に」という位置づけなので使わなくても大丈夫です
  18. 18. テンプレート T2 テンプレート T1 • 配置場所 = 自宅 テンプレートとプレイスメントの 基本的な考え方 プレイスメント A • 配置場所 = 自宅 プレイスメント B • 配置場所 = 車 (上書き) Lambda 関数 A プロジェクト X プロジェクト Y Lambda 関数 B プレイスメント H プレイスメント; デバイス ⇔ AWS IoT 1-Click テンプレート; AWS IoT 1-Click ⇔ Lambda 関数 ※もっと複雑な構成も可能
  19. 19. ハマりポイント ボタン登録直後 • 「無効」になっているので有効にしましょう テンプレート作成時の「SMS 送信」や「Email 送信」 • Amazon SNS や Amazon SES を利用する Lambda 関数 が生成されてからテンプレートに割り当たります • IAM ロールやポリシーも自動生成されます • Email は Amazon SES を使います • 事前にメールアドレスの Verify を忘れないように • Lambda 関数、SES 共に us-west-2 (Oregon) になる
  20. 20. ap-northeast-1 でも us-west-2 のデバイスが一覧表示される ※どこのリージョンに登録されるかは 現在選ぶことができません クリックすると... ハマりポイント (続き) 「あれ? "プロジェクト" が無くなっちゃった!」問題 このまま戻ると us-west-2 へ AWS IoT 1-Click のプロジェクトは リージョン毎であるため「無い!!」 と思ってしまうことも。 リージョンは確認するようにしましょう "デバイスリージョン" で表示される
  21. 21. ハマりポイント (続き) 「これは...なんのボタン?」問題
  22. 22. ハマりポイント (続き) 結局こうなる プレイスメントの属性に 物理ラベルの情報を入れておくと 幸せになれるかもです。 属性の名前 値 Deployed RESTROOM DeviceID A001 Manager John Labeled マーケティング用 "placementInfo": { "attributes": { "Deployed": "RESTROOM", "DeviceID": "A001", "Manager": "John", "Labeled": "マーケティング用" } } `event` で このように 受け取れる
  23. 23. ボタンの登録解除方法 (Unclaimed) できます。 1. プレイスメント内のデバイスの割り当てを解除 2. デバイス一覧からデバイスの登録解除 これで OK 再登録(Claimed)は「DSN 入力→ボタン押す」 ※AWS アカウント間を移動する場合にも使えます 「が」SORACOM 上の契約はあくまでも購入者です
  24. 24. FAQ Q: 他の AWS IoT 1-Click 対応デバイスとの共存は可能? A: 可能です。 Q: Lambda 関数上で、例えば "AWS IoT エンタープライズボタン" と区別はつけられ る? A: 標準に用意された `event` では区別ができないため、プレイスメントを利用してく ださい。 Q: 「電池残量」を知りたい場合は? A: SORACOM へボタンを登録すると SORACOM コンソール上において電池残量を取 得することができます。そのほか、現在までに押された回数や利用開始日といった契約 に関する情報や、が取得できるようになります。 Q: SORACOM へボタンを登録をせずに契約の延長をすることは可能? A: 契約の延長は SORACOM コンソール上でのみ可能です。 SORACOM へ登録せず に契約満了(1500回 or 1年) が経過すると "文鎮" になります。
  25. 25. 自動生成にまつわるお掃除対象 ※課金対象ではありませんが、削除時の参考として • Amazon SES もしくは Amazon SNS の設定 • Amazon SES: 検証済み Email Addresses • Amazon SNS: (特に確認することはありません) • IAM ロールおよびポリシー • ロール: iot1click_onclick_* • ポリシー: AWSLambdaIoTButton* • Lambda 関数 • iot1click_onclick_*
  26. 26. SORACOM に登録することで得られる 拡張データ https://dev.soracom.io/jp/aws_button/how-it-works/ 4段階なので 0.25 になった直後で 交換したほうが良いかも LED は緑(通信OK)だったのに AWS IoT 1-Click に届いてない時に 確認したい内容
  27. 27. eSIM + LTE-M モデム クラウド連携デバイス「クラウドファースト デバイス」の リファレンスとしても SORACOM Platform VPG SORACOM Beam AWS IoT 1-Click への 認証情報 AWS Cloud デバイス内には 認証情報が無い
  28. 28. 世界中のヒトとモノをつなげ 共鳴する社会へ

×