見出し画像

【動画レポ】IoTの楽しさをライブデモで!AWSとラズパイで「作らずに創る」IoTのハジメ | AWS Dev Day 2022 Japan

今日はYoutubeのAmazon Web Services Japan 公式チャンネルからの動画を視聴してレポートします。この動画は2022年の11月8日〜10日に開催されたAWS Dev Day 2022 Japanで登壇された株式会社ソラコムのMAXこと松下さんのセッションの動画です。テーマはIoTとAWS、しかも登壇するのはMAXさんなので面白くないはずはありません。
早速視聴してみたいと思います。

<動画はこちら>

AWS Dev Day 2022 Japan

自己紹介

松下享平さん
株式会社ソラコム テクノロジーエバンジェリスト
・静岡県民、新幹線通勤族
・講演や執筆を中心に活動 登壇回数500以上
・好きな言葉「論よりコード」 AWS IoTヒーロー(2020)

このセッションのねらい

・ライブデモでIoTの楽しさを伝える

このセッションは・・・?

・ラズパイ(RaspberryPi)
・AWS各サービス
    AWS IoT Core
    AWS IoT Greengrass
    AWS Lambda

ライブ内容
ハードウェア側もサーバレスのコードのように更新する

IoTとは?

3つの要素
・モノ センサー/デバイスなど
・クラウド データを活用する仕組み
・ネットワーク モノ(現場)とクラウドを接続

モノやコトをデジタル化すること
人手に頼らずデータを集める、現場を動かす

ネットワークは手に入りにくい・難しい
・モノとクラウドは比較的用意に手に入る
・クラウドとの連携は誰が開発してくれるのか?
・増え続けるモノをどう管理するのか?

IoTのビジネス活用例

HalloLight(ヤマト運輸が提供するサービス)
お年寄りの見守りを電球ひとつで行うサービス

・電球の中にセルラー通信が入っていて電球のオンオフをクラウドに送信〜生活の異常をゆるやかに見守りできる

株式会社ソラコムの紹介

IoTの「つなぐ」を簡単に

IoTの「つなぐ」を簡単に

・すべてソラコム製品ではなく組み合わせでビルドする。

Raspberry PI

・パソコン並みの基本性能を持つシングルボードコンピューター
・センサー接続が可能なインターフェースを持つ
・センサーはOSから用意に制御可能
・最新版はRaspberry Pi4

IoTにおけるRaspberryPiの位置づけ

・センサーと通信の間に入りそれぞれを制御するデバイス
センサーやLEDを標準装備したもの、コネクタを用意したものもある

会場に持ち込んでいるRaspberryPi

会場に持ち込んでいるRaspberryPi
・Sense hat装着済み
・ソラコムのデバイスでLTE通信でクラウドに接続済み

どのようなプログラミングをするのか?

どのようなプログラミングをするのか?

urllib.request
・センサーの扱いはPythonでWebページの取得を行うのに似た要領
⇒コンテキストを作成してデータを取得する構造

ライブデモ:AWS System Manager経由のNAPT内デバイスへのコンソールアクセス

・AWS System Managerのフリートマネージャー
・ターミナルセッションを開始してラズパイを操作
 (LEDを点灯して文字を表示)

デモの様子

デバイスの制御やセンサー情報の取得は簡単にできる

IoT Coreにどうやってデータを送る?

Pytonのコードでboto3ライブラリのIot-data(差分を送るAPI)を使用してrDara-sense-hatに送る。

ライブデモ:IoT Coreにどうやってデータを送る?

AWS IoT Core側の受け取りを準備するとセンサーの情報をクラウドに簡単に送ることができる。

今回のデモのアーキテクチャー

デモのアーキテクチャー

IoTデータをどう扱うのか?

IoTデータは2系統  ・・・「状態」「時系列」
⇒それに合わせた保存先・サービスを検討しないとならない
状態:KVS、RDBMSへ
時系列:時系列データべースへ格納

IoTデータをどう扱うのか?

おすすめはS3への保存
・2系統同時に扱える
・AWSのサービスのワークロードに乗せられる。
⇒S3以降はAWSの普通のノウハウを使える。
 データレイクのベストプラクティス

データ活用の分界点
・可視化、通知、外部連携
・集計、分析、機械学習・・・

IoTデバイスとAmazonS3間のアーキテクチャ

方法は2つ Amazon API GatewayとAWS IoT Core

AWS IoT Core(Fanoutパターン)
・MQTTプロトコルも扱える
・並列型アーキテクチャー
 データを貯めておくパスに影響なく他のパスを追加・は駆除できる

並列型アーキテクチャー

ライブデモ:AWS IoT CoreによってIoTデータをS3とDynamoDBに保存する

S3への保存設定(ルール1)
・コードを書かずに設定できる。

S3への保存

DynamoDBへの保存を追加(ルール2)
・新規ルールを追加する
・プリンシプルIDを追加
・テーブルを選択してDynamoWriterで書き込み設定

非常に簡単にデータへの流し込みが設定できる


ライブデモ:AWS Greengrassのデモ

多数のプログラムをどう入れ替える?

AWS IoT Greengrass

AWS IoT Greengrass
・IoTデバイスが増えていっても対応できる
・デバイス内で処理、アップデート可能、商用利用の仕組みもあり
・IoTデバイスにインストールして動かすソフトウェア(AWS IoT Greengrass Core)

Greengrassデモのアーキテクチャ

Lambdaの作成を先にやっておく
・これをGreengrass経由でRaspberryPiにデプロイ

コンポーネント(Greengrassで送り込むひとかたまり)の作成
・Lambdaのバーションを発行
・固定済みの状態
・コンテナ無しでコンポーネントを作成

コンポーネントを送り込む
・デプロイの形で指定していくだけ
・ターゲット名:RaspberryPiで動くGreengrassの名前
・レビューの中でデプロイ

デプロイする様子

センサーの値を呼んでGreengrassに送る

Greengrass for IPC
IPCで接続できるGreengrassのMQTTのブローカー(のようなもの)に送ると権限がついた状態でIoT Coreに送られる

同じように設定してデプロイ

しくみのおさらい

・GreengrassからLambdaの関数をデプロイ
・Sense-hatからデータを取得してIoT Coreにデータを送る

AWS System Manager AgentとAWS IoT Greengrassは併存可能

通常時はGreengrass、緊急時の対応はSystem Manager Agentを制御用に使用

AWS System Manager AgentとAWS IoT Greengrassは併存可能

Greengrass経由でSystem Manager Agentをインストール可能
⇒とりあえずGreengrassを入れておくでもOK

Raspberry Piって本番で使ってもいいの?

本番の検証用に使用している例(クックパッド)
RaspberryPiとラベルプリンターを使用している
・早くPoCを実施
・現在は専用デバイスを作成している
・Pythonのコードはそのまま使用

クックパッドでのRaspberryPI活用

通信はセルラー通信を実現するUSBドングル型モデム

デモで使用した通信デバイス

ソラコムで用意したスクリプトを流し込むだけで設定
・Raspberry Pi OS:setup_air.shのダウンロード・実行
・Ubuntu(Jetson他):NetworkManager CLIでの設定
・Windows:ドライバソフトウェアのダウンロード・実行

https://soracom.jp/store/s_category/sim/


AWS IoT Core検討時のポイント

ペイロードサイズの最大は128KB
・IoT Coreに直接画像を送るのは難しい
 ⇒S3やKynesis Video Streamsへ
プロトコルオーバーヘッドも課金対象
トピック設計は実施だけでなく費用にも影響

AWS IoT Greengrass開発と継続的な利用に向けた設計

コード内の'awsiot.greengrasscoreipc'の利用は必須ではない
固定済みのLambda関数コンポーネント
・無限ループ実装をLambdaで行うとLambdaらしからぬコードになりがち
 ⇒「ジェネリック」タイプの手法でおこなうのがおすすめ
パブリックコンポーネントを積極的に利用

この先のステップ



IoT向けのアーキテクチャのベストプラクティス

データレイクを実現するためのベストプラクティスとは?

「ラスパイ、M5Stack、Arduino」選び方、始め方

デジタルツインと"デバイスシャドウ"

Pythonベースのサンプルコードなら

SORACOM IoT DIY レシピ

さいごに

ハードウェアは「変更しづらい」
⇒ソフトウェア化していく

できる限り更新しやすい仕組みをAWSサービスで実現

SORACOMの願い


<資料>


この記事が気に入ったらサポートをしてみませんか?