© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
IoT@Loft ハンズオン #2
Amazon FreeRTOSを⽤いた
量産向けIoTマイコンデバイス開発プロトタイピング
はじめに
アマゾン ウェブ サービス ジャパン株式会社
2020/01/08
1. AWSにおけるIoTサービス
165 を超える主要なAWSサービス
テクニカル &
ビジネス
サポート
AWS
Marketplace
7サービス
分析
11サービス
IoT
11サービス
機械学習
20サービス
コアサービス
5サービス
マネジメン
トツール
8サービス
DevOps
11サービス
ブロック
チェーン
2サービス
モバイル
サービス
8サービス
アプリ
サービス
5サービス
インフラ
ストラクチャ
7サービス
エンタープラ
イズアプリ
9サービス
移⾏
7サービス
セキュリティ&
コンプライア
ンス
19サービス
9 サービス
IoTを支えるマネージドサービス群
11の構成要素:すべてを使う必要はない
IoT Greengrass
Amazon FreeRTOS AWS IoT Device SDK
IoT Core
IoT Device Management IoT Device Defender
IoT Things Graph
IoT Analytics
IoT SiteWise IoT Events
2
1
どのようにしてIoTデータから価値を抽出するのか?
デバイスを制御、管理、保護する⽅法は?
デバイスをどのように接続・操作するのか︖
IoTを支えるマネージドサービス群
11の構成要素:すべてを使う必要はない
IoT Greengrass
Amazon FreeRTOS AWS IoT Device SDK
IoT Core
IoT Device Management IoT Device Defender
IoT Things Graph
IoT Analytics
IoT SiteWise IoT Events
2
1
オンプレミス、EC2+ミドルウェア 、マネージドサービスの⽐較
電源、ネットワーク
ラック導入管理
サーバメンテナンス
OSのパッチ
ミドルウェアのパッチ
バックアップ
スケーラビリティ
可用性
ミドルウェアの導入
OSの導入
アプリからの利用
オンプレミス ミドルウェアon EC2 AWS IoT, RDS等
マネージドサービス
お客様がご担当する作業 AWSが提供するマネージド機能
電源、ネットワーク
ラック導入管理
サーバメンテナンス
OSのパッチ
ミドルウェアのパッチ
バックアップ
スケーラビリティ
可用性
ミドルウェアの導入
OSの導入
アプリからの利用
電源、ネットワーク
ラック導入管理
サーバメンテナンス
OSのパッチ
ミドルウェアのパッチ
バックアップ
スケーラビリティ
可用性
ミドルウェアの導入
OSの導入
アプリからの利用
IoTに求められる機能要件
モニタリング
状態監視・実績把握
予測・分析
故障予測・異常パターン検知・マーケティング
分析
モバイル/API連携
スマートデバイス/API連携
遠隔制御
家電制御・ファームアップ
本ハンズオンで利用するAWS IoTサービス
IoT Greengrass
Amazon FreeRTOS AWS IoT Device SDK
IoT Core
IoT Device Management IoT Device Defender
IoT Things Graph
IoT Analytics
IoT SiteWise IoT Events
2
1
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Amazon FreeRTOSを利用するデバイス
そ の 他 も
ロ ボ テ ィ ッ ク ス
医 療 機 器
ス マ ー ト ホ ー ム
ス マ ー ト デ バ イ ス
油 圧 セ ン サ ー
フ ィ ッ ト ネ ス ト ラ ッ カ ー
ス マ ー ト メ ー タ ー
洗 濯 機
自 動 車 ス マ ー ト キ ー
エ ア コ ン
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
マイクロコントローラー向け
No.1 リアルタイムOSがベース
• 14年間にわたり広く配布された信頼性
• 40以上のアーキテクチャでサポート
• 広範なエコシステム
• フリーでオープンソース
• バージョンは、10
• MIT オープンソース・ライセンス
• ストリームとメッセージバッファによるプロセス間通信
(IPC)機能
Amazon FreeRTOS
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
クラウド接続用のライブラリ
• AWS IoT コアへの接続
• MQTT Pub/Sub メッセージング
• デバイス シャドウのサポート
• IoT用マイクロコントローラーを
活用するための最速の手段
AWS IoT Core
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
セキュリティライブラリ
• TLSを使ったセキュア・ソケット
• 証明書ベースの認証
• オープン ネットワークポート無し
• 信頼できるコードのみを実行
• デフォルト状態から安全
MQTT over BLE
• BLE デバイスをiOS/Android をプロ
キシとして AWS IoT に接続
• 新しい MQTT Agent が BLE と TCP
をサポート
• iOS と Android SDK がプロキシライ
ブラリを提供
• Amazon Cognito がプロキシと
AWS IoT 間の認証を行う
• Shadow, Device Defender, OTA の
機能も BLE 経由で利用可能
https://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/ble-demo.html#ble-demo-mqtt
Wi-Fi Provisioning over BLE
• Wi-Fi の Credential を モバイルデバ
イスを使って BLE で設定
• 複数のネットワークの設定、優先順
位付け、追加、削除が可能
• BLE Secure Connections をサポート
(BLE 4.2 以上)
https://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/ble-demo.html#ble-demo-wifi
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Hardware Partners
Amazon FreeRTOS – ハードウエアパートナー
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ローカル接続用のライブラリ
• AWS Greengrass(エッジゲートウェイ)とのローカル通
信、Wi-Fiスタック
• Wi-Fi管理ライブラリ
Wi-Fi機能の抽象レイヤーを実装
• クラウドへの接続が無くても、
コミュニケーションとデータ収集を継続
• 多くのネットワークトポロジと
ユースケースのサポート
AWS Greengrass
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Over-the-Airファームウェアアップデート
• 新しいファームウェアイメージのコード署名
• MQTTを使用してデバイスにアップデートを配布
• デバイスの署名の検証
• シンプルなグループの管理
• メモリ効率のよいアップデート・クライアント
本ハンズオンで利用するAWS IoTサービス
IoT Greengrass
Amazon FreeRTOS AWS IoT Device SDK
IoT Core
IoT Device Management IoT Device Defender
IoT Things Graph
IoT Analytics
IoT SiteWise IoT Events
2
1
AWS IoT : 2つの利⽤⽤途
データ収集
数⼗万規模のデバイスからのデー
タ収集
リモート制御
遠隔にあるデバイスをクラウドを
介してコントロール
使⽤例
デバイスのデータの可視化
故障予測・異常検知
ファームアップ
リモート機器制御
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
デバイスをAWSクラウドや
他のデバイスに
安全に接続する
データを基に推論を⾏うため
のAWSの各種サービス
(Analytics、データベース、
AIなど)との完全な統合
接続されたデバイスから
のデータに基づいて、
ルーティング、処理、
実⾏を⾏う
安全なデバイス接続とメッセージング
AWS IoT コア
AWS IoT Coreは、IoTデバイスを簡単かつ、安全に
クラウドアプリケーションや他のデバイスと
通信できるようにするマネージドサービスです。
デバイスがオフラインで
あっても、アプリケーショ
ンがデバイスと対話できる
ようにする
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS IoT証明書による:セキュリティ管理
クラウド側で予め証明書とpolicyを紐づける
デバイス側はAWS IoTに証明書を用いて接続
挙動の正当性はクラウド側がpolicyに従い判定をおこなう
private.key
public.key
ceritificate.key
{
effect: allow
action:[iot:connect,
iot:publish]
resource :[data/send]
},{
effect: deny
action:[iot:subscribe]
resource:[*]
}
証明書のみでpolicyを
推測することはできない
当該証明書のアクション
を評価
policy
証明書
active
/in-active
status
証明書
statusの確認
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
MQTTの通信方式
Publisher
Broker
Topic:
sensor/temp
Subscriber
Subscriber
publish
subscribe
Brokerはpublisherからのメッセージを受取り、topicへ向けて通信を送ることで当該
topicを受信しているSubscriberはメッセージを受信できる。
IoT rule
オペレータ
thing
Subscribeは常時接続
これによりニアリアルタイムの通信が⾏われる
IoT
rule
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
1. AWS サービス
(直接連携可能)
ルールエンジン
アクション
ルールエンジンのアクション
AWS
Lambda
Amazon
SNS
Amazon
SQS
Amazon
S3
Amazon
Kinesis
Amazon
DynamoDB Amazon RDS
Amazon
Redshift
Amazon Glacier
Amazon
EC2
3. 外部のエンドポイント
(Lambda and SNSを経由)
AWS IoTからAWSサービス/
外部のエンドポイントの
呼び出しを⾏なう
2. その他のAWS
(Amazon Kinesis, AWS
Lambda, Amazon S3など
のサービスを経由)
SELECT * FROM
ʻthings/thing-2/colorʼ
WHERE color = ʻredʼ
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
デバイス シャドウ
{
"state" : {
“desired" : {
"engine" : "ON"
},
"reported" : {
"engine" : ”OFF"
},
"delta" : {
"engine" : ”ON"
}
},
"version" : 10
}
Thing
現状ステータスをシャドウに通知
シャドウから要求されるステータスを取得
Mobile App
デバイスに対して変更したいステータスをセット
最新の通知されたステータスを取得
シャドウの削除
Shadow
シャドウは、delta, desired 及びreported
ステータスをメタデータとバージョンをつけて管理
デバイスの現在の状態情報の保存と取得に使用される JSON ドキュメント
デバイスは現在のステータスをアップデート
"engine" : ”OFF”
{
"state" : {
“desired" :
"engine" : ”OFF"
},
"reported" : {
"engine" : ”OFF"
}
},
"version" : 10
}
SDK:update_shadow
MQTT: $aws/things/{thingname}/shadow/update
アプリケーションからエンジンON
"engine" : ”ON”
{
"state" : {
“desired" : {
"engine" : ”ON"
},
"reported" : {
"engine" : ”OFF"
}
},
"version" : 10
}
deltaが通知される
"engine" : "ON”
{
"state" : {
“desired" : {
"engine" : "ON"
},
"reported" : {
"engine" : ”OFF"
},
"delta" : {
"engine" : ”ON"
}
},
"version" : 10
}
最新のステータスにアップデート(deltaは消える)
"engine" : "ON”
{
"state" : {
“desired" : {
"engine" : "ON"
},
"reported" : {
"engine" : ”ON"
},
"delta" : {
"engine" : ”ON"
}
},
"version" : 10
}
Thank you!

Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピング