SlideShare a Scribd company logo
IoTに活かそう!
「UNIXという考え方」
2023年1月26日
AWS Community Builder
JAWS-UG IoT専門支部運営メンバー
立石(株式会社グリーンノート)
自己紹介
2023/01/26 © 2023 Greennote Inc. All rights reserved. 1
l 立石 彰
Ø 株式会社グリーンノート 代表取締役社長
Ø AWS Community Builder (3年目)
l 製造業とITの2足歩行で33年
Ø 材料、部品、装置からシステムまで開発
Ø 独立して5年目
Ø 幻滅期のIoTを復興するお手伝いをしています
l 好きなAWSサービス
Ø IoT Analytics、Greengrass、1-click
「UNIXという考え方」
2023/01/26 © 2023 Greennote Inc. All rights reserved. 2
l みなさんご存知のこととは思いますが…
l re:Invent 2022で行われたキーノートスピーチ
Ø Dr. Werner Vogels,
Amazon.com Vice President and Chief Technology Officer
l 雑なまとめ
Ø 世の中のできごとは同時多発的に発生するもの
Ø それを処理するシステムは非同期・疎結合であるべき
Ø 「小さく」「単純な」コンポーネントの組み合わせ
Ø コンポーネント間を流れる「イベント」
l UNIXが体現した世界
アーカイブが見られます
2023/01/26 © 2023 Greennote Inc. All rights reserved. 3
2023/01/26 © 2023 Greennote Inc. All rights reserved. 4
reCap
UNIXパイプ
2023/01/26 © 2023 Greennote Inc. All rights reserved. 5
AWS re:Invent 2022 - Keynote with Dr. Werner Vogels より(35分22秒)
UNIXパイプ
2023/01/26 © 2023 Greennote Inc. All rights reserved. 6
access.log を読み込み
/gateway/allapi を含む行を取り出し
" 500 を含む行を取り出し
テキストの順序を反転
スペースで区切られた要素の4番目を取り出し
テキストの順序を反転
並べ替え
重複削除
access̲log の例
2023/01/26 © 2023 Greennote Inc. All rights reserved. 7
grep /api
2023/01/26 © 2023 Greennote Inc. All rights reserved. 8
grep "¥" 200"
2023/01/26 © 2023 Greennote Inc. All rights reserved. 9
rev
2023/01/26 © 2023 Greennote Inc. All rights reserved. 10
cut -d " " -f4
2023/01/26 © 2023 Greennote Inc. All rights reserved. 11
rev | sort | uniq
2023/01/26 © 2023 Greennote Inc. All rights reserved. 12
access̲logのうち、/apiへのアクセスが200となったケースの一覧
IoT開発の現場では……
2023/01/26 © 2023 Greennote Inc. All rights reserved. 13
l デバッグ手段が限られる場合が多い
Ø ログファイルを回収して解析するしかない場合も
l ログ解析能力が開発効率向上に直結
Ø デバッグログは極めて大量になりがち
Ø しかし、必要なログはごく少数である場合が多い
Ø 手作業では効率が悪いだけでなく、抜け漏れが発生
l UNIXライクなツールを使いこなして
開発効率を上げよう!
その他 IoT開発者必修コマンド
2023/01/26 © 2023 Greennote Inc. All rights reserved. 14
l sed
Ø 主に行単位で検索、置換、抽出などを実行
l awk
Ø テキストからのデータ抽出、演算、整形出力など
l jq
Ø JSONファイルの整形、抽出、データ処理など
特にAWS CLIとの相性は抜群
2023/01/26 © 2023 Greennote Inc. All rights reserved. 15
ローカル リモート
ローカルで生成した一時クレデンシャルを
リモート側に渡したい
コピペが面倒 かつ
ミスが発生しやすい
特にAWS CLIとの相性は抜群
2023/01/26 © 2023 Greennote Inc. All rights reserved. 16
AWS CLIの出力結果から、コピペ可能な一時クレデンシャルを生成
2023/01/26 © 2023 Greennote Inc. All rights reserved. 17
パイプ以外にも……
その他のパターン
2023/01/26 © 2023 Greennote Inc. All rights reserved. 18
Lチカを考える
2023/01/26 © 2023 Greennote Inc. All rights reserved. 19
0.5秒おきにLEDを点滅させてください。
Lチカを考える
2023/01/26 © 2023 Greennote Inc. All rights reserved. 20
スタート
LEDを点灯させる
0.5秒待つ
LEDを消灯する
0.5秒待つ
Lチカを考える
2023/01/26 © 2023 Greennote Inc. All rights reserved. 21
あ、やっぱりボタンで
ON/OFFできるように
してください。
Lチカを考える
2023/01/26 © 2023 Greennote Inc. All rights reserved. 22
スタート
LEDを点灯させる
ボタンが押されるのを待つ
LEDを消灯する
ボタンが離されるのを待つ
Lチカを考える
2023/01/26 © 2023 Greennote Inc. All rights reserved. 23
いや、そうじゃなくて
ボタンが押されたら
光るようにしてください。
Lチカを考える
2023/01/26 © 2023 Greennote Inc. All rights reserved. 24
スタート
ボタンが押されるのを待つ
LEDを点灯させる
ボタンが離されるのを待つ
LEDを消灯させる
Lチカを考える
2023/01/26 © 2023 Greennote Inc. All rights reserved. 25
ボタンを2つに増やして、
LEDも2つに増やします
LED①はタイマーで
制御してください
センサを追加して、
値に応じて光らせましょう
ボタンを押したらLED②を
点滅させてください
……
Lチカを考える
2023/01/26 © 2023 Greennote Inc. All rights reserved. 26
もうムリ。
実装を考えてみよう
2023/01/26 © 2023 Greennote Inc. All rights reserved. 27
l 使用するプラットフォームごとに違ってくる
Ø FreeRTOSなど
ü OSレベルでキュー、メッセージ、ストリームなど
高度な処理がサポートされている
Ø Arduino
ü 適切な外部ライブラリを使用する必要あり
(自分で実装することも不可能ではない)
Ø AWS IoT Greengrass
ü コンポーネント間通信によるPub/Subをサポート
AWS IoT Greengrassとは
2023/01/26 © 2023 Greennote Inc. All rights reserved. 28
AWS IoT Greengrassとは
2023/01/26 © 2023 Greennote Inc. All rights reserved. 29
コンポーネント
UNIX的なコンポーネント設計
2023/01/26 © 2023 Greennote Inc. All rights reserved. 30
l 小さく単純なコンポーネント
l それぞれが疎結合なコンポーネント群
l 非同期的なコンポーネント間の通信
l 開発効率化
l デプロイ工数削減
l 管理工数削減 等々
実例
2023/01/26 © 2023 Greennote Inc. All rights reserved. 31
l センサ可視化ソリューション
Ø 現在はCO2センサに対応
Ø 夏に向けWBGTセンサなど追加予定
l 多様な入力、出力に対応したい
Ø EnOcean、BLE、I2Cなど
Ø 内蔵データベース、表示画面
Ø クラウド連携
l 管理工数、開発工数の削減
Ø Greengrassを効率的に使う工夫
複雑に入り組んだデータの流れ
2023/01/26 © 2023 Greennote Inc. All rights reserved. 32
センサ
センサ
センサ
CO2センサ
データ解釈
WBGTセンサ
データ解釈
温湿度センサ
データ解釈
監視データ収集
EnOcean
BLE
Wi-Fi
I2C クラウド連携
DB 可視化
その他のセンサ
データ解釈
認証・認可
ブローカーによる流れの整理
2023/01/26 © 2023 Greennote Inc. All rights reserved. 33
センサ
センサ
センサ
CO2センサ
データ解釈
WBGTセンサ
データ解釈
温湿度センサ
データ解釈
監視データ収集
クラウド連携
DB 可視化
その他のセンサ
データ解釈
認証・認可
Grenngrass IPC (Pub/Sub)
2023/01/26 © 2023 Greennote Inc. All rights reserved. 34
Subscriber
Subscriber
Subscriber
Subscriber
Subscriber
Publisher
Broker
publish̲to̲topic()
aws.greengrass#PublishToTopic
subscribe̲to̲topic()
aws.greengrass#SubscribeToTopic
Greengrassコンポーネント
2023/01/26 © 2023 Greennote Inc. All rights reserved. 35
コンポーネント
recipe.yaml / recipe.json
gdk-config.json
実行ファイルなど
コンポーネント自体に関する情報
コンポーネントの中身に関する情報
実行可能であればおよそ何でも
権限設定 recipe.json
2023/01/26 © 2023 Greennote Inc. All rights reserved. 36
{
"accessControl": {
"aws.greengrass.ipc.pubsub": {
"com.example.MyLocalPubSubComponent:pubsub:1": {
"policyDescription": "Allows access",
"operations": [
"aws.greengrass#PublishToTopic",
"aws.greengrass#SubscribeToTopic"
],
"resources": [
"*"
]
}
}
}
}
Publish部のpythonコード例
2023/01/26 © 2023 Greennote Inc. All rights reserved. 37
from awsiot.greengrasscoreipc.clientv2 import ¥
GreengrassCoreIPCClientV2
from awsiot.greengrasscoreipc.model import (
PublishMessage,
BinaryMessage
)
ipc_client = GreengrassCoreIPCClientV2()
binary_message = ¥
BinaryMessage(message=bytes(message, 'utf-8'))
publish_message = ¥
PublishMessage(binary_message=binary_message)
ipc_client.publish_to_topic( ¥
topic=topic,
publish_message=publish_message)
Subscribe部のpythonコード例
2023/01/26 © 2023 Greennote Inc. All rights reserved. 38
from awsiot.greengrasscoreipc.clientv2 import ¥
GreengrassCoreIPCClientV2
from awsiot.greengrasscoreipc.model import (
SubscriptionResponseMessage
)
ipc_client = GreengrassCoreIPCClientV2()
_, operation = ipc_client.subscribe_to_topic(
topic=topic,
on_stream_event=on_stream_event,
on_stream_error=on_stream_error,
on_stream_closed=on_stream_closed )
def on_stream_event(event: SubscriptionResponseMessage) -> None:
def on_stream_error(error: Exception) -> bool:
def on_stream_closed() -> None:
小さく単機能なコンポーネント
2023/01/26 © 2023 Greennote Inc. All rights reserved. 39
CO2センサ
データ解釈
WBGTセンサ
データ解釈
温湿度センサ
データ解釈
監視データ収集
クラウド連携
DB
可視化
その他のセンサ
データ解釈
認証・認可
ハードウェア関連
LED、ボタン等
AWS IoT Greengrass
コンポーネント開発の例
2023/01/26 © 2023 Greennote Inc. All rights reserved. 40
CO2センサ USBドングル 産業用Raspberry Pi
EnOcean
細切れのバイナリデータ 意味のあるパケット
データパケット
抽出
800ppm
パース
コンポーネント コンポーネント
ブローカー
メリット① 拡張性
2023/01/26 © 2023 Greennote Inc. All rights reserved. 41
細切れのバイナリデータ 意味のあるパケット
データパケット
抽出
CO2
パース
コンポーネント コンポーネント
ブローカー
熱中症
その他
パーサを用意するだけで対応センサが増やせる
メリット② テストが容易
2023/01/26 © 2023 Greennote Inc. All rights reserved. 42
ダミーパケット パース
多数のテストケースに対する単体テストが容易に実施/自動化できる
800ppm
テストデータ
800ppm
結果
自動テスト
まとめ
2023/01/26 © 2023 Greennote Inc. All rights reserved. 43
l UNIXという考え方は、
IoT開発においても大変重要になります。
l 開発途中のログ解析には、
UNIXライクなツールの使いこなしが効果大です。
l IoTは現実社会を写す鏡です。
同時多発的に様々なことが起こるだけでなく、
さまざまな予測不能なできごとが発生します。
l IoTの設計にUNIXという考え方を活かすことで、
非同期・疎結合 かつ 開発しやすい設計が
できるようになります。
2023-01-26_IoTに活かそう!「UNIXという考え方」.pdf

More Related Content

PDF
2023-08-03 JAWS-UG IoT専門部会「AWS IoT ExpressLinkの動作を調べてみよう」
PDF
IoT のシナリオを変える Azure SQL Edge
PDF
Internet of Toilet / Jaws festa 2016
PDF
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
PPTX
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
PDF
Node.jsアプリの開発をモダン化するために取り組んできたこと
PPTX
Running Kubernetes on Azure
PPTX
Azure RTOS 概要 - IoT ALGYAN 技術セミナー
2023-08-03 JAWS-UG IoT専門部会「AWS IoT ExpressLinkの動作を調べてみよう」
IoT のシナリオを変える Azure SQL Edge
Internet of Toilet / Jaws festa 2016
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Node.jsアプリの開発をモダン化するために取り組んできたこと
Running Kubernetes on Azure
Azure RTOS 概要 - IoT ALGYAN 技術セミナー

Similar to 2023-01-26_IoTに活かそう!「UNIXという考え方」.pdf (20)

PDF
Azure IoT Edge入門
PDF
今改めて学ぶ Microsoft Azure 基礎知識
PDF
AWSオンリーで実現するIoTクラウド基盤
PDF
Azure Monitor Logで実現するモダンな管理手法
PPTX
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
PDF
Airflowを広告データのワークフローエンジンとして運用してみた話
PDF
XDev2010 WindowsAzure
PDF
Microsoft Intelligent Edge Technologies
PDF
iot@Loft#14-LT4-AI /機械学習に活用できる AWSのエッジソリューションのご紹介
PDF
インフラ管理者に送る あらためての IoT Edge / IoT Hub
PDF
Drソリューション(ナレッジコミュニケーション)
PDF
クラウド勉強会in北陸Azure資料
PDF
アダプティブ クラウド アプローチと Azure IoT Operations 概要
PDF
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
PDF
Windows コンテナを AKS に追加する
PDF
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
PDF
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
JAWS-UG東京 - 2019-09-26 - Gateway祭
PPTX
Japan MVP Community Connection 2017 Autumn smart Demonstration
PDF
Lt4 aws@loft #11 aws io-t for smart building
Azure IoT Edge入門
今改めて学ぶ Microsoft Azure 基礎知識
AWSオンリーで実現するIoTクラウド基盤
Azure Monitor Logで実現するモダンな管理手法
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Airflowを広告データのワークフローエンジンとして運用してみた話
XDev2010 WindowsAzure
Microsoft Intelligent Edge Technologies
iot@Loft#14-LT4-AI /機械学習に活用できる AWSのエッジソリューションのご紹介
インフラ管理者に送る あらためての IoT Edge / IoT Hub
Drソリューション(ナレッジコミュニケーション)
クラウド勉強会in北陸Azure資料
アダプティブ クラウド アプローチと Azure IoT Operations 概要
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
Windows コンテナを AKS に追加する
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
JAWS-UG東京 - 2019-09-26 - Gateway祭
Japan MVP Community Connection 2017 Autumn smart Demonstration
Lt4 aws@loft #11 aws io-t for smart building
Ad

More from Akira Tateishi (12)

PDF
JAWS-UG IoT専門支部 - ここにもFreeRTOS ~STM32で使ってみる~
PDF
NORA-W2 SARA-R5 AWSIoTExpressLinkモジュール紹介
PDF
SORACOM Partner Space Event LT - Easy installable WBGT signage
PDF
2022-02-22 AWSではじめるIoTの最初の一歩の「次の一歩」
PDF
ただでは起きないPoCの転び方—郵便受けを見守った1年の振り返り—
PDF
SORACOM Discovery 2021 Night Event - Lightning Talk
PDF
Amazon location service questionnaire
PDF
Amazon location service demonstration from iot point of view
PDF
発表!いま注目されているIoT新サービス・新機能
PPTX
AIをやろうと思ったのに 覚えたのはネジ回しでした ~と、ならないために~
PPTX
2020 08-01 ALGYAN AI&ロボティクス (1)
PPTX
JAWS-UG IoT専門支部 講演資料 IoT Analyticsによる構築事例説明
JAWS-UG IoT専門支部 - ここにもFreeRTOS ~STM32で使ってみる~
NORA-W2 SARA-R5 AWSIoTExpressLinkモジュール紹介
SORACOM Partner Space Event LT - Easy installable WBGT signage
2022-02-22 AWSではじめるIoTの最初の一歩の「次の一歩」
ただでは起きないPoCの転び方—郵便受けを見守った1年の振り返り—
SORACOM Discovery 2021 Night Event - Lightning Talk
Amazon location service questionnaire
Amazon location service demonstration from iot point of view
発表!いま注目されているIoT新サービス・新機能
AIをやろうと思ったのに 覚えたのはネジ回しでした ~と、ならないために~
2020 08-01 ALGYAN AI&ロボティクス (1)
JAWS-UG IoT専門支部 講演資料 IoT Analyticsによる構築事例説明
Ad

2023-01-26_IoTに活かそう!「UNIXという考え方」.pdf

  • 1. IoTに活かそう! 「UNIXという考え方」 2023年1月26日 AWS Community Builder JAWS-UG IoT専門支部運営メンバー 立石(株式会社グリーンノート)
  • 2. 自己紹介 2023/01/26 © 2023 Greennote Inc. All rights reserved. 1 l 立石 彰 Ø 株式会社グリーンノート 代表取締役社長 Ø AWS Community Builder (3年目) l 製造業とITの2足歩行で33年 Ø 材料、部品、装置からシステムまで開発 Ø 独立して5年目 Ø 幻滅期のIoTを復興するお手伝いをしています l 好きなAWSサービス Ø IoT Analytics、Greengrass、1-click
  • 3. 「UNIXという考え方」 2023/01/26 © 2023 Greennote Inc. All rights reserved. 2 l みなさんご存知のこととは思いますが… l re:Invent 2022で行われたキーノートスピーチ Ø Dr. Werner Vogels, Amazon.com Vice President and Chief Technology Officer l 雑なまとめ Ø 世の中のできごとは同時多発的に発生するもの Ø それを処理するシステムは非同期・疎結合であるべき Ø 「小さく」「単純な」コンポーネントの組み合わせ Ø コンポーネント間を流れる「イベント」 l UNIXが体現した世界
  • 4. アーカイブが見られます 2023/01/26 © 2023 Greennote Inc. All rights reserved. 3
  • 5. 2023/01/26 © 2023 Greennote Inc. All rights reserved. 4 reCap
  • 6. UNIXパイプ 2023/01/26 © 2023 Greennote Inc. All rights reserved. 5 AWS re:Invent 2022 - Keynote with Dr. Werner Vogels より(35分22秒)
  • 7. UNIXパイプ 2023/01/26 © 2023 Greennote Inc. All rights reserved. 6 access.log を読み込み /gateway/allapi を含む行を取り出し " 500 を含む行を取り出し テキストの順序を反転 スペースで区切られた要素の4番目を取り出し テキストの順序を反転 並べ替え 重複削除
  • 8. access̲log の例 2023/01/26 © 2023 Greennote Inc. All rights reserved. 7
  • 9. grep /api 2023/01/26 © 2023 Greennote Inc. All rights reserved. 8
  • 10. grep "¥" 200" 2023/01/26 © 2023 Greennote Inc. All rights reserved. 9
  • 11. rev 2023/01/26 © 2023 Greennote Inc. All rights reserved. 10
  • 12. cut -d " " -f4 2023/01/26 © 2023 Greennote Inc. All rights reserved. 11
  • 13. rev | sort | uniq 2023/01/26 © 2023 Greennote Inc. All rights reserved. 12 access̲logのうち、/apiへのアクセスが200となったケースの一覧
  • 14. IoT開発の現場では…… 2023/01/26 © 2023 Greennote Inc. All rights reserved. 13 l デバッグ手段が限られる場合が多い Ø ログファイルを回収して解析するしかない場合も l ログ解析能力が開発効率向上に直結 Ø デバッグログは極めて大量になりがち Ø しかし、必要なログはごく少数である場合が多い Ø 手作業では効率が悪いだけでなく、抜け漏れが発生 l UNIXライクなツールを使いこなして 開発効率を上げよう!
  • 15. その他 IoT開発者必修コマンド 2023/01/26 © 2023 Greennote Inc. All rights reserved. 14 l sed Ø 主に行単位で検索、置換、抽出などを実行 l awk Ø テキストからのデータ抽出、演算、整形出力など l jq Ø JSONファイルの整形、抽出、データ処理など
  • 16. 特にAWS CLIとの相性は抜群 2023/01/26 © 2023 Greennote Inc. All rights reserved. 15 ローカル リモート ローカルで生成した一時クレデンシャルを リモート側に渡したい コピペが面倒 かつ ミスが発生しやすい
  • 17. 特にAWS CLIとの相性は抜群 2023/01/26 © 2023 Greennote Inc. All rights reserved. 16 AWS CLIの出力結果から、コピペ可能な一時クレデンシャルを生成
  • 18. 2023/01/26 © 2023 Greennote Inc. All rights reserved. 17 パイプ以外にも……
  • 19. その他のパターン 2023/01/26 © 2023 Greennote Inc. All rights reserved. 18
  • 20. Lチカを考える 2023/01/26 © 2023 Greennote Inc. All rights reserved. 19 0.5秒おきにLEDを点滅させてください。
  • 21. Lチカを考える 2023/01/26 © 2023 Greennote Inc. All rights reserved. 20 スタート LEDを点灯させる 0.5秒待つ LEDを消灯する 0.5秒待つ
  • 22. Lチカを考える 2023/01/26 © 2023 Greennote Inc. All rights reserved. 21 あ、やっぱりボタンで ON/OFFできるように してください。
  • 23. Lチカを考える 2023/01/26 © 2023 Greennote Inc. All rights reserved. 22 スタート LEDを点灯させる ボタンが押されるのを待つ LEDを消灯する ボタンが離されるのを待つ
  • 24. Lチカを考える 2023/01/26 © 2023 Greennote Inc. All rights reserved. 23 いや、そうじゃなくて ボタンが押されたら 光るようにしてください。
  • 25. Lチカを考える 2023/01/26 © 2023 Greennote Inc. All rights reserved. 24 スタート ボタンが押されるのを待つ LEDを点灯させる ボタンが離されるのを待つ LEDを消灯させる
  • 26. Lチカを考える 2023/01/26 © 2023 Greennote Inc. All rights reserved. 25 ボタンを2つに増やして、 LEDも2つに増やします LED①はタイマーで 制御してください センサを追加して、 値に応じて光らせましょう ボタンを押したらLED②を 点滅させてください ……
  • 27. Lチカを考える 2023/01/26 © 2023 Greennote Inc. All rights reserved. 26 もうムリ。
  • 28. 実装を考えてみよう 2023/01/26 © 2023 Greennote Inc. All rights reserved. 27 l 使用するプラットフォームごとに違ってくる Ø FreeRTOSなど ü OSレベルでキュー、メッセージ、ストリームなど 高度な処理がサポートされている Ø Arduino ü 適切な外部ライブラリを使用する必要あり (自分で実装することも不可能ではない) Ø AWS IoT Greengrass ü コンポーネント間通信によるPub/Subをサポート
  • 29. AWS IoT Greengrassとは 2023/01/26 © 2023 Greennote Inc. All rights reserved. 28
  • 30. AWS IoT Greengrassとは 2023/01/26 © 2023 Greennote Inc. All rights reserved. 29 コンポーネント
  • 31. UNIX的なコンポーネント設計 2023/01/26 © 2023 Greennote Inc. All rights reserved. 30 l 小さく単純なコンポーネント l それぞれが疎結合なコンポーネント群 l 非同期的なコンポーネント間の通信 l 開発効率化 l デプロイ工数削減 l 管理工数削減 等々
  • 32. 実例 2023/01/26 © 2023 Greennote Inc. All rights reserved. 31 l センサ可視化ソリューション Ø 現在はCO2センサに対応 Ø 夏に向けWBGTセンサなど追加予定 l 多様な入力、出力に対応したい Ø EnOcean、BLE、I2Cなど Ø 内蔵データベース、表示画面 Ø クラウド連携 l 管理工数、開発工数の削減 Ø Greengrassを効率的に使う工夫
  • 33. 複雑に入り組んだデータの流れ 2023/01/26 © 2023 Greennote Inc. All rights reserved. 32 センサ センサ センサ CO2センサ データ解釈 WBGTセンサ データ解釈 温湿度センサ データ解釈 監視データ収集 EnOcean BLE Wi-Fi I2C クラウド連携 DB 可視化 その他のセンサ データ解釈 認証・認可
  • 34. ブローカーによる流れの整理 2023/01/26 © 2023 Greennote Inc. All rights reserved. 33 センサ センサ センサ CO2センサ データ解釈 WBGTセンサ データ解釈 温湿度センサ データ解釈 監視データ収集 クラウド連携 DB 可視化 その他のセンサ データ解釈 認証・認可
  • 35. Grenngrass IPC (Pub/Sub) 2023/01/26 © 2023 Greennote Inc. All rights reserved. 34 Subscriber Subscriber Subscriber Subscriber Subscriber Publisher Broker publish̲to̲topic() aws.greengrass#PublishToTopic subscribe̲to̲topic() aws.greengrass#SubscribeToTopic
  • 36. Greengrassコンポーネント 2023/01/26 © 2023 Greennote Inc. All rights reserved. 35 コンポーネント recipe.yaml / recipe.json gdk-config.json 実行ファイルなど コンポーネント自体に関する情報 コンポーネントの中身に関する情報 実行可能であればおよそ何でも
  • 37. 権限設定 recipe.json 2023/01/26 © 2023 Greennote Inc. All rights reserved. 36 { "accessControl": { "aws.greengrass.ipc.pubsub": { "com.example.MyLocalPubSubComponent:pubsub:1": { "policyDescription": "Allows access", "operations": [ "aws.greengrass#PublishToTopic", "aws.greengrass#SubscribeToTopic" ], "resources": [ "*" ] } } } }
  • 38. Publish部のpythonコード例 2023/01/26 © 2023 Greennote Inc. All rights reserved. 37 from awsiot.greengrasscoreipc.clientv2 import ¥ GreengrassCoreIPCClientV2 from awsiot.greengrasscoreipc.model import ( PublishMessage, BinaryMessage ) ipc_client = GreengrassCoreIPCClientV2() binary_message = ¥ BinaryMessage(message=bytes(message, 'utf-8')) publish_message = ¥ PublishMessage(binary_message=binary_message) ipc_client.publish_to_topic( ¥ topic=topic, publish_message=publish_message)
  • 39. Subscribe部のpythonコード例 2023/01/26 © 2023 Greennote Inc. All rights reserved. 38 from awsiot.greengrasscoreipc.clientv2 import ¥ GreengrassCoreIPCClientV2 from awsiot.greengrasscoreipc.model import ( SubscriptionResponseMessage ) ipc_client = GreengrassCoreIPCClientV2() _, operation = ipc_client.subscribe_to_topic( topic=topic, on_stream_event=on_stream_event, on_stream_error=on_stream_error, on_stream_closed=on_stream_closed ) def on_stream_event(event: SubscriptionResponseMessage) -> None: def on_stream_error(error: Exception) -> bool: def on_stream_closed() -> None:
  • 40. 小さく単機能なコンポーネント 2023/01/26 © 2023 Greennote Inc. All rights reserved. 39 CO2センサ データ解釈 WBGTセンサ データ解釈 温湿度センサ データ解釈 監視データ収集 クラウド連携 DB 可視化 その他のセンサ データ解釈 認証・認可 ハードウェア関連 LED、ボタン等 AWS IoT Greengrass
  • 41. コンポーネント開発の例 2023/01/26 © 2023 Greennote Inc. All rights reserved. 40 CO2センサ USBドングル 産業用Raspberry Pi EnOcean 細切れのバイナリデータ 意味のあるパケット データパケット 抽出 800ppm パース コンポーネント コンポーネント ブローカー
  • 42. メリット① 拡張性 2023/01/26 © 2023 Greennote Inc. All rights reserved. 41 細切れのバイナリデータ 意味のあるパケット データパケット 抽出 CO2 パース コンポーネント コンポーネント ブローカー 熱中症 その他 パーサを用意するだけで対応センサが増やせる
  • 43. メリット② テストが容易 2023/01/26 © 2023 Greennote Inc. All rights reserved. 42 ダミーパケット パース 多数のテストケースに対する単体テストが容易に実施/自動化できる 800ppm テストデータ 800ppm 結果 自動テスト
  • 44. まとめ 2023/01/26 © 2023 Greennote Inc. All rights reserved. 43 l UNIXという考え方は、 IoT開発においても大変重要になります。 l 開発途中のログ解析には、 UNIXライクなツールの使いこなしが効果大です。 l IoTは現実社会を写す鏡です。 同時多発的に様々なことが起こるだけでなく、 さまざまな予測不能なできごとが発生します。 l IoTの設計にUNIXという考え方を活かすことで、 非同期・疎結合 かつ 開発しやすい設計が できるようになります。