【動画レポ】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さんなので面白くないはずはありません。
早速視聴してみたいと思います。
<動画はこちら>
自己紹介
松下享平さん
・株式会社ソラコム テクノロジーエバンジェリスト
・静岡県民、新幹線通勤族
・講演や執筆を中心に活動 登壇回数500以上
・好きな言葉「論よりコード」 AWS IoTヒーロー(2020)
このセッションのねらい
・ライブデモでIoTの楽しさを伝える
・ラズパイ(RaspberryPi)
・AWS各サービス
AWS IoT Core
AWS IoT Greengrass
AWS Lambda
ライブ内容
ハードウェア側もサーバレスのコードのように更新する
IoTとは?
3つの要素
・モノ センサー/デバイスなど
・クラウド データを活用する仕組み
・ネットワーク モノ(現場)とクラウドを接続
モノやコトをデジタル化すること
人手に頼らずデータを集める、現場を動かす
ネットワークは手に入りにくい・難しい
・モノとクラウドは比較的用意に手に入る
・クラウドとの連携は誰が開発してくれるのか?
・増え続けるモノをどう管理するのか?
IoTのビジネス活用例
HalloLight(ヤマト運輸が提供するサービス)
お年寄りの見守りを電球ひとつで行うサービス
・電球の中にセルラー通信が入っていて電球のオンオフをクラウドに送信〜生活の異常をゆるやかに見守りできる
株式会社ソラコムの紹介
IoTの「つなぐ」を簡単に
・すべてソラコム製品ではなく組み合わせでビルドする。
Raspberry PI
・パソコン並みの基本性能を持つシングルボードコンピューター
・センサー接続が可能なインターフェースを持つ
・センサーはOSから用意に制御可能
・最新版はRaspberry Pi4
IoTにおけるRaspberryPiの位置づけ
・センサーと通信の間に入りそれぞれを制御するデバイス
・センサーやLEDを標準装備したもの、コネクタを用意したものもある
会場に持ち込んでいる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に送る。
AWS IoT Core側の受け取りを準備するとセンサーの情報をクラウドに簡単に送ることができる。
今回のデモのアーキテクチャー
IoTデータをどう扱うのか?
IoTデータは2系統 ・・・「状態」「時系列」
⇒それに合わせた保存先・サービスを検討しないとならない
状態:KVS、RDBMSへ
時系列:時系列データべースへ格納
おすすめは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)
・コードを書かずに設定できる。
DynamoDBへの保存を追加(ルール2)
・新規ルールを追加する
・プリンシプルIDを追加
・テーブルを選択してDynamoWriterで書き込み設定
非常に簡単にデータへの流し込みが設定できる
ライブデモ:AWS Greengrassのデモ
多数のプログラムをどう入れ替える?
AWS IoT Greengrass
・IoTデバイスが増えていっても対応できる
・デバイス内で処理、アップデート可能、商用利用の仕組みもあり
・IoTデバイスにインストールして動かすソフトウェア(AWS IoT Greengrass Core)
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を制御用に使用
Greengrass経由でSystem Manager Agentをインストール可能
⇒とりあえずGreengrassを入れておくでもOK
Raspberry Piって本番で使ってもいいの?
本番の検証用に使用している例(クックパッド)
RaspberryPiとラベルプリンターを使用している
・早くPoCを実施
・現在は専用デバイスを作成している
・Pythonのコードはそのまま使用
通信はセルラー通信を実現する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サービスで実現
<資料>
この記事が気に入ったらサポートをしてみませんか?