/advent2019

SORACOM LTE-M Buttonを使ったおもちゃ

この記事は、 Yamagata Developers Society Advent Calendar 2019 9日目の記事です。

YDSがほぼ毎月開催している YDS Developer Meetup Night! の2019年5月の会で、 「IoT 101」というタイトルで、IoTに関する発表を行いました。
発表では、IoTの概要と、デモとして用意した SORACOM LTE-M Button powered by AWS を使ったおもちゃを実際に使ってもらう形式でした。

今回のブログでは、デモシステムの概要について説明していきたいと思います。
(すっかり共有が遅くなってしまい、申し訳ない。。。)

デモシステムの概要

SORACOM LTE-M Button powered by AWS を使って、アンケートをとります。

質問

アンケート結果は、全員回答後にボタンを2回押すことで、Raspberry piに繋いだLEDパネルで何パーセントの人がYesと答えたか表示します。
(デバッグも兼ねて、全体回答数, Yes回答数, No回答数を最後に表示するようにしています。)

実際に動くと、こんな感じ。

デモシステムの構成

システム構成

SORACOM LTE-M Button側

  • SORACOM LTE-M Buttonは、AWS IoT 1-Clickとのマッピングが簡単にできるようになっています。
  • IoT 1-Clickがイベント検知すると、AWS Lambdaの関数を呼び出し、Dynamo DBにイベント情報を保管します。
  • イベントが集計表示のものの場合、MQTTトピックに集計結果を送信します。

Rasoberry pi側

  • Raspberry piは、SORACOM Airを使った通信用SIMを接続。
  • Raspberry piは、AWS IoT Coreにデパイスを登録するとともに、SORACOM Beamを使って、AWS IoT CoreのMQTTトピックを受け取れるように設定する。
  • MQTTトピックから集計結果を受信し、LTEパネルに結果を表示する。

細かい設定やらコードやら

以下にいくつかまとめましたので、詳細知りたい方はご参照ください。

発表で特に触れなかったのですが、本当であればIoTデバイスはAWS IoT CoreでShadowを使うことで、状態遷移(結果表示中とかなんとか)なども管理した方がいいのですが、
今回のデモでは結果通知されるMQTTトピックだけを監視する形で簡略化しています。

発表内容の概要

以下は、デモ以外のことも興味がある人向けの内容です。

IoT実現における課題

IoT実現において、いくつか課題がありますが、発表の中では、特に以下の課題に触れました。

  • セキュリティ

    • インターネット上のセキュアな通信に関する点
  • 限られたリソース

    • 容量の小さいCPU、メモリ、ハードディスクなど
    • 電力供給
  • 端末管理

    • どのモノ(thing)からの通信か

いずれも項目単体で解決できるものではなく、それぞれのトレードオフを考慮しながら検討が必要なものです。

デモシステムにおける課題の考慮点

限られたリソースという点について、今回のデモシステムでは、下記のような点を意識した構成としています。

  • クラウドにおける集中処理による解決

    • モノ側のそれぞれの処理はシンプルに。(ボタンはどう押されたかを通知する、Raspberry piは集計結果を表示するだけの仕組み)
    • データの集計処理や結果の蓄積はAWS上のLambda, DynamoDBに任せる
  • MQTTによる通信

    • データ量が小さい通信プロトコルの使用
  • SORACOM Beamの利用

    • MQTT-MQTTS変換をすることで、暗号化にかかるリソース消費を抑える
    • 同時にセキュアさもカバー
  • 計算リソースの消費を抑えることで電力消費を抑える

他にも、デモシステムでは下記をカバーしていることにもなります。

  • Raspberry piの通信にSORACOM Airを使うことで、端末管理が容易になる(SIM=デバイス)
  • ボタンの通信で使用しているLTE-MはLPWA(=Low Power Wide Area)の一つで、少ない消費電力で通信を可能にしている

もっぱら、SORACOMの機能のおかげでカバーできてる点が多いわけで、
SORACOMサマサマ感ある。。

最後に

IoT、いろんな形でシステムが作られていますが、
いざ自分が考えるとなると、単純なことをさせるデバイス(今回で言えばボタン)の活かし方を考えるのって実は結構難しい。
いいアイディアが浮かんだら、また何か作ってみたいなと思ってはいますが、 自分の頭のカタさが悔しいです。