60
AWS IoT をををを をををををををををを をををををを Interop Tokyo 2016 / 8~10 June @ ををををを 1

AWS IoTを使った双方向通信システムの実装と注意点

Embed Size (px)

Citation preview

Page 1: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT を使った双方向通信システムの実装と注意点

Interop Tokyo 2016 / 8~10 June @ 幕張メッセ 1

Page 2: AWS IoTを使った双方向通信システムの実装と注意点

AWS Summit Tokyo 20166 月 1 日〜 3 日 @ グランドプリンスホテル新高輪

参加されました?

2

Page 3: AWS IoTを使った双方向通信システムの実装と注意点

参加できなかった方大丈夫です!

3

Page 4: AWS IoTを使った双方向通信システムの実装と注意点

re:Invent 2016 がありますよ!

4

Page 5: AWS IoTを使った双方向通信システムの実装と注意点

5

Page 6: AWS IoTを使った双方向通信システムの実装と注意点

松下 / ma2shita

ぷらっとホーム株式会社IoT サービス部

好きな AWS サービスAWS LambdaAmazon Elasticsearch Service

6

Page 7: AWS IoTを使った双方向通信システムの実装と注意点

AWS Summit Tokyo 2016IoT ハンズオン

7

Page 8: AWS IoTを使った双方向通信システムの実装と注意点

8

Page 10: AWS IoTを使った双方向通信システムの実装と注意点

アジェンダ

● 5 分でわかる  「 AWS IoT って?何ができる?」

● 5 分でわかる  「 AWS IoT を利用するための実装」

● 5 分でわかる  「双方向通信システムの設計ポイントと delta 」

● 5 分でわかる  「 IoT 関連告知」

● 5 分でわかる  「 AWS IoT のトリビア」

?!10

Page 11: AWS IoTを使った双方向通信システムの実装と注意点

11

Page 12: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT とは?

re:Invent 2015 (2015 年 10 月 ) に発表されたAWS 初の IoT 特化サービス

● クラウドとデバイスの双方向通信

● データに対しての様々な AWS サービスの呼び出し

● デバイスの状態管理12

Page 13: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT とは?

機能

●メッセージブローカー

○ フルマネージド MQTT, HTTP REST, Websocket

●ルールエンジン

○ メッセージの中身に応じて呼び出す AWS サービスを定義

○ Amazon S3, Amazon DynamoDB, Amazon Kinesis, Amazon SQS, Amazon SNS, AWS Lambda, Amazon Elasticsearch Service, Amazon CloudWatch, AWS IoT(republish)

●シャドー

○ 物理的なデバイスの状態※を AWS IoT 上に保存・更新・同期※ ON/OFF 等

2016 年 3 月 update

2016 年 1 月 update

13

Page 14: AWS IoTを使った双方向通信システムの実装と注意点

要するに

14

Page 15: AWS IoTを使った双方向通信システムの実装と注意点

フルマネージドな

●MQTT ブローカ ( サーバ )●デバイスの状態の保存

15

Page 16: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT をもっと知りたい

●詳細はアマゾン ウェブ サービス ジャパンのソリューションアーキテクト福井さんの資料をご覧くださいhttp://www.slideshare.net/AmazonWebServicesJapan/aws-iot-20160216

Interop 会期中にアマゾン ウェブ サービス ジャパン様のミニ・セミナーあります!

16

Page 17: AWS IoTを使った双方向通信システムの実装と注意点

アジェンダ

● 5 分でわかる  「 AWS IoT って?何ができる?」

● 5 分でわかる  「 AWS IoT を利用するための実装」

● 5 分でわかる  「双方向通信システムの設計ポイントと delta 」

● 5 分でわかる  「 IoT 関連告知」

● 5 分でわかる  「 AWS IoT のトリビア」

17

Page 18: AWS IoTを使った双方向通信システムの実装と注意点

18

Page 19: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoTOpenBlocks IoT BX1

Patlite <NHS-3FB1>

Web Browser

Internet

Icons made by http://www.freepik.com from http://www.flaticon.com is licensed by http://creativecommons.org/licenses/by/3.0 <CC 3.0 BY>19

Page 20: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoTOpenBlocks IoT BX1

Patlite <NHS-3FB1>

Web Browser

reporter.rb

commander.rb

/update

SNMP

/update/documents

/update/update/delta

MQTTS Websocket over MQTT

Pub Sub

Sub Pub

Polling

patlite_control.html

Operation from Outsidee.g.) CleanUp, Reboot...

Input

onMessageArrived

get

Rendering

Icons made by http://www.freepik.com from http://www.flaticon.com is licensed by http://creativecommons.org/licenses/by/3.0 <CC 3.0 BY>20

Page 21: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT を利用するために必要な実装

OpenBlocks IoT BX1

Patlite <NHS-3FB1>

reporter.rb

commander.rb

デバイスの状態をAWS IoT に報告する

AWS IoT からの通知をデバイスに送る 21

Page 22: AWS IoTを使った双方向通信システムの実装と注意点

reporter.rb

おい、今、それぞれの色の状態を教えろや( って、 patlite に SNMP で聞く )

AWS IoT に報告しとくわ(MQTT でな )

reporter.rb

インターバルで無限ループ

これだけ!!簡単!素敵!

22

Page 23: AWS IoTを使った双方向通信システムの実装と注意点

commander.rbMQTT トピック、監視するでー( 着信したら、下のコードが動く )

色を ON/OFF しろ!(SNMP 経由で )

着信データを解析して ...

commander.rb

23

Page 24: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT を利用するために必要な実装まとめ ;

OpenBlocks IoT BX1

Patlite <NHS-3FB1>

reporter.rb

commander.rb

デバイスの状態をAWS IoT に報告する

AWS IoT からの通知をデバイスに送る 24

Page 25: AWS IoTを使った双方向通信システムの実装と注意点

アジェンダ

● 5 分でわかる  「 AWS IoT って?何ができる?」

● 5 分でわかる  「 AWS IoT を利用するための実装」

● 5 分でわかる  「双方向通信システムの設計ポイントと delta 」

● 5 分でわかる  「 IoT 関連告知」

● 5 分でわかる  「 AWS IoT のトリビア」

25

Page 26: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoTOpenBlocks IoT BX1

Patlite <NHS-3FB1>

Web Browser

reporter.rb

commander.rb

/update

SNMP

/update/documents

/update/update/delta

MQTTS Websocket over MQTT

Pub Sub

Sub Pub

Polling

patlite_control.html

Input

onMessageArrived

get

Rendering

Icons made by http://www.freepik.com from http://www.flaticon.com is licensed by http://creativecommons.org/licenses/by/3.0 <CC 3.0 BY>

ポイント : ループ状にデータが伝搬されるように設計- そうでないと ...

AWS IoT と実際のデバイスの状態の不一致の温床※ AWS IoT は不一致解消は対象外 => ユーザの責務 26

Page 27: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoTOpenBlocks IoT BX1

Patlite <NHS-3FB1>

Web Browser

reporter.rb

commander.rb

/update

SNMP

/update/documents

/update/update/delta

MQTTS Websocket over MQTT

Pub Sub

Sub Pub

Polling

patlite_control.html

Input

onMessageArrived

get

Rendering

Icons made by http://www.freepik.com from http://www.flaticon.com is licensed by http://creativecommons.org/licenses/by/3.0 <CC 3.0 BY>

ポイント : ループ外からの操作も想定すべき※現場でのデバイス操作、複数の利用者

- 不一致の温床Operation from Outsidee.g.) CleanUp, Reboot...

27

Page 28: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoTOpenBlocks IoT BX1

Patlite <NHS-3FB1>

Web Browser

reporter.rb

commander.rb

/update

SNMP

/update/documents

/update/update/delta

MQTTS Websocket over MQTT

Pub Sub

Sub Pub

Polling

patlite_control.html

Input

onMessageArrived

get

Rendering

Icons made by http://www.freepik.com from http://www.flaticon.com is licensed by http://creativecommons.org/licenses/by/3.0 <CC 3.0 BY>

ポイント : 無限ループ防止機構- そうでないと ...

AWS さんが大喜び!無駄なリソース消費につながる※上の実装では人間がブレーカー

Operation from Outsidee.g.) CleanUp, Reboot...

28

Page 29: AWS IoTを使った双方向通信システムの実装と注意点

● ループ状にデータ伝搬がされるように

● ループ外からの操作も考慮・想定

● 無限ループ防止機構

双方通信システムの設計ポイントまとめ ;

29

Page 30: AWS IoTを使った双方向通信システムの実装と注意点

delta って?

“Thing Shadow” の中において中核を担う機能

delta = desired - reported差分 = 操作要求 - 現在の状態

30

Page 31: AWS IoTを使った双方向通信システムの実装と注意点

/shadow/update/delta ー delta の発生

delta( 差分 ) = desired( 操作要求 ) - reported( 現状 )

{reported:{ 赤 : OFF}}

reported: 赤 = OFF

desired:< 空 >

reported:< 空 >

desired:< 空 >

{desired:{ 赤 : ON}}reported:

赤 = OFF

desired: 赤 = ON

SUB: /delta{ 赤 : ON}

/shadow/update

31

Page 32: AWS IoTを使った双方向通信システムの実装と注意点

/shadow/update/delta ー 再レポート

delta( 差分 ) = desired( 操作要求 ) - reported( 現状 )

{reported:{ 赤 : ON}}

reported: 赤 = OFF

desired: 赤 = ON

reported: 赤 = ON

desired: 赤 = ON

差分が無いので delta は発生しない

/shadow/update

32

Page 33: AWS IoTを使った双方向通信システムの実装と注意点

/shadow/update/delta ー ちょっと困る挙動 ?delta( 差分 ) = desired( 操作要求 ) - reported( 現状 )

reported: 赤 = ON

desired: 赤 = ON

CLEAR

{reported:{ 赤 : OFF}}

reported: 赤 = OFF

desired: 赤 = ON

SUB: /delta{ 赤 : ON}

この挙動は意図と違うかも場合によっては無限ループ

/shadow/update

33

Page 34: AWS IoTを使った双方向通信システムの実装と注意点

/shadow/update/delta ー レポート TIPSdelta( 差分 ) = desired( 操作要求 ) - reported( 現状 )

{reported:{ 赤 : ON}},{desired:null}

reported: 赤 = OFF

desired: 赤 = ON

reported: 赤 = ON

desired:<空 > レポート時には常に

{desired:null}を送り、 AWS IoT 内の“ desired” をクリアする

/shadow/update

34

Page 35: AWS IoTを使った双方向通信システムの実装と注意点

/shadow/update/delta ー レポート TIPSdelta( 差分 ) = desired( 操作要求 ) - reported( 現状 )

reported: 赤 = ON

desired:< 空 >

CLEAR

{reported:{ 赤 : OFF}}

reported: 赤 = OFF

desired:< 空 >

desired = < 空 > なので delta は発生しない

/shadow/update

35

Page 36: AWS IoTを使った双方向通信システムの実装と注意点

/shadow/update/delta ー ウルトラクイズ

delta( 差分 ) = desired( 操作要求 ) - reported( 現状 )

reported: 赤 = ON

desired:< 空 >

{desired:{ 赤 : OFF}}

ネットワーク障害

{reported:{ 赤 : ON}}

reported: 赤 = ON

desired: 赤 = OFFこのときの挙動は??

/shadow/update 👊 delta = { 赤 : ON}

✅ delta = { 赤 : OFF}

✋ delta は出力されな

い36

Page 37: AWS IoTを使った双方向通信システムの実装と注意点

delta の使い方

commander.rb

Subscribe するだけ37

Page 38: AWS IoTを使った双方向通信システムの実装と注意点

アジェンダ

● 5 分でわかる  「 AWS IoT って?何ができる?」

● 5 分でわかる  「 AWS IoT を利用するための実装」

● 5 分でわかる  「双方向通信システムの設計ポイントと delta 」

● 5 分でわかる  「 IoT 関連告知」

● 5 分でわかる  「 AWS IoT のトリビア」

38

Page 39: AWS IoTを使った双方向通信システムの実装と注意点

AWS Summit Tokyo 2016IoT パビリオン

39

Page 40: AWS IoTを使った双方向通信システムの実装と注意点

小売店向け顧客動線・属性分析ソリューション

40

Page 41: AWS IoTを使った双方向通信システムの実装と注意点

大盛況!

41

Page 42: AWS IoTを使った双方向通信システムの実装と注意点

GlobalWise 様ブース

ここにも

42

Page 43: AWS IoTを使った双方向通信システムの実装と注意点

ここにも

Acroquest 様ブース

43

Page 44: AWS IoTを使った双方向通信システムの実装と注意点

Acroquest 様ブース / Interop でも展示中!

44

Page 45: AWS IoTを使った双方向通信システムの実装と注意点

IoT システムの要、ゲートウェイは ...OpenBlocks IoT で!

reporter.rb

commander.rb

OpenBlocks IoT BX1

45

Page 46: AWS IoTを使った双方向通信システムの実装と注意点

46

Page 47: AWS IoTを使った双方向通信システムの実装と注意点

もちろん

47

Page 48: AWS IoTを使った双方向通信システムの実装と注意点

ハードウェアだけでなく

IoT システム全般でご相談ください!

48

Page 49: AWS IoTを使った双方向通信システムの実装と注意点

そして

49

Page 50: AWS IoTを使った双方向通信システムの実装と注意点

こんにちはソラコムのまわしものです

50

Page 51: AWS IoTを使った双方向通信システムの実装と注意点

7/13開催登録受付中!

51

Page 52: AWS IoTを使った双方向通信システムの実装と注意点

同日SORACOM UG #3開催します!

52

Page 53: AWS IoTを使った双方向通信システムの実装と注意点

facebookページチェックしてください!

53

Page 54: AWS IoTを使った双方向通信システムの実装と注意点

アジェンダ

● 5 分でわかる  「 AWS IoT って?何ができる?」

● 5 分でわかる  「 AWS IoT を利用するための実装」

● 5 分でわかる  「双方向通信システムの設計ポイントと delta 」

● 5 分でわかる  「 IoT 関連告知」

● 5 分でわかる  「 AWS IoT のトリビア」

54

Page 55: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT は ...

無料枠がある250,000 メッセージ / 月 x 12ヶ月の利用枠があります

https://aws.amazon.com/jp/iot/pricing/

1 メッセージ =最大 512 バイトだから ... 計算はしないでおこう

55

Page 56: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT は ...

2015 年 12 月には GA になっていた発表から 2ヶ月で GA って、もしかして最速では?

安心して使ってください

※GA = Generally Available

56

Page 57: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT は ...MQTT(S)以外にも

➢HTTP(S) REST➢MQTT over WebSocket(s)

が、使えるMQTT だけじゃない! RESTer や Javascripter にも優しいシステム

57

Page 58: AWS IoTを使った双方向通信システムの実装と注意点

AWS IoT は ...

Binary を扱うことができるJSON だけじゃなく、 non-ASCII な byte stream でも OK なんです

※ 注 ;

- AWS IoTへの入出力が JSON を期待しているサービスもあるので注意そう、 Thing Shadow とか AWS Lambda とかね。

- 調子に乗って大きいペイロードを送ると“ 128KB/ 送信” の制限に引っかかるぞ、気をつけよう

58

Page 59: AWS IoTを使った双方向通信システムの実装と注意点

本セッションは

ぷらっとホームIoT サービス部

松下 / ma2shitaが、お送りしました

※ この後のお声がけお気軽にどうぞ!お待ちしております! 59

Page 60: AWS IoTを使った双方向通信システムの実装と注意点

糸冬

60