[di10] iot を実践する最新のプラクティス ~ azure iot hub 、sdk 、azure iot suite...

71

Upload: decode-2017

Post on 21-Jan-2018

1.508 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 2: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 3: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

3

Connectivity Data AnalyticsThings Action

Internet of Things

Page 4: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

機器ごと、業界ごと、シーンごと、やりたいことで、シナリオいろいろ

Page 5: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

組込み機器、人⇔送受信⇔蓄積、表示、分析、活用PaaSをビルディングブロックで組み合わせ、構築する

Microsoft Azure

デバイス接続サービス

データ実時間分析サービス

ML

ダッシュボード

サービス連携

データ・サービスを第三者へ売る

PC・タブレット・スマホ

開発・運用コスト低スケール可能!!

ストレージ

その他のビッグデータ

エンタープライズサービス等外部サービス

メッセージング

管理

Page 6: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 7: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 8: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

メッセージング

管理

Predictive Maintainance

Connected FactoryRemote Monitoring

Page 9: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 10: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

RemoteMonitoring

PredictiveMaintenance

ConnectedFactory

Page 11: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

http://www.azureiotsuites.com

Page 12: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

https://github.com/Azure/azure-iot-remote-monitoring

https://github.com/Azure/azure-iot-connected-factory

https://github.com/Azure/azure-iot-predictive-maintenancehttps://github.com/Azure/LearnAnalytics-PredictiveAnalyticsForIoT

Page 13: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 14: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 15: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

IoT の障壁を取り除く これまでの限界を超える 実績のある技術を活用する

Page 16: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 17: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

AzureIoT Hub

FieldGateway

CloudProtocolGateway

デバイス

Page 18: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

AzureIoT Hub

FieldGateway

CloudProtocolGateway

メッセージング(双方向)ファイルアップロード

デバイス

プロパティ同期メソッドコール

デバイスレジストリ

メッセージング(受信)

メッセージング(送信)

Twin – プロパティ同期

クエリ

ジョブ

デバイス毎の秘密鍵デバイス毎の証明書

受信のルーティング

モニタリング

ファイルアップロード

Page 19: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

https://microsoft.github.io/techcasestudies/iot/2017/03/03/seraku.html

Page 20: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

http://azure.microsoft.com

Page 21: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

http://github.com/Azure/azure-iot-sdks

SDKでの接続が確認済みの組込み機器カタログhttps://catalog.azureiotsuite.com/

Page 22: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

デバイス

Page 23: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 24: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

デバイス

Page 25: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 26: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

接続

受信スレッド作成

メッセージ作成

メッセージ送信

切断

var client = DeviceClient.CreateFromConnectionString(“接続文字列",TransportType.Mqtt);

await client.OpenAsync();

ReceiveMessagesAsync(client);

var data = new{

MeasuredTime = DateTime.Now,Muscle = arduino.analogRead("A1")

};var json = JsonConvert.SerializeObject(data);var msg = new Message(Encoding.UTF8.GetBytes(json));

await client.SendEventAsync(msg);

await client.CloseAsync();

Page 27: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

private async void ReceiveMessagesAsync(DeviceClient client){

while (true){

var message = await client.ReceiveAsync();var content = Encoding.UTF8.GetString(message.GetBytes());

・・・ 受信メッセージの処理

await client.CompleteAsync(message);}

}

Page 28: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

https://github.com/Azure/azure-iot-sdk-c/blob/master/doc/ubuntu_apt-get_sample_setup.md

Page 29: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

接続

受信スレッド作成

メッセージ作成

メッセージ送信

切断

#include "iothub_client.h“#include "iothub_message.h“#include "iothubtransportamqp.h“…IOTHUB_CLIENT_HANDLE iotHubClientHandle;iotHubClientHandle = IoTHubClient_CreateFromConnectionString(cs, AMQP_Protocol));

IoTHubClient_SetMessageCallback(iotHubClientHandle, ReceiveMessageCallback, NULL);

EVENT_INSTANCE* eventinstance = (EVENT_INSTANCE*)malloc(sizeof(EVENT_INSTANCE));unsigned char* msg = “{¥”MeasuredTime¥”:¥”…eventinstance->messageHandle = IoTHubMessage_CreateFromByteArray(msg, msgLen));

IoTHubClient_SendEventAsync(iotHubClientHandle,eventinstance->messageHandle,SendConfirmationCallback, eventinstance)

Page 30: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

HostName=IoTHubName.azure-devices.net;DeviceId=myDeviceId;SharedAccessKey=myBase64EncodedAccessKey

Page 31: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 32: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

http://catalog.azureiotsuite.com

Page 33: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 34: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

https://www.unirobot.com/

Page 35: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 36: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

IoT Hub

Local Netwoark

登録済

Page 37: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

http://github.com/Azure/azure-iot-edge

Microsoft Azure

IoT Hub

Page 38: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Message Bus

Module A Module B Module D Module E

メッセージバスに送信したメッセージは他のすべてのモジュールが受信

リンクの設定による送信元・先の限定

Module の役割は任意

JSONによる定義ファイル

静的、動的両方をサポート

Page 39: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Message Bus

LocalCommModule

ExtendedModule

IoT HubMapper

IoT HubClient

IoT SDK

Page 40: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

リモートモニタリング・制御多数のIoTデバイスからの収集データをマージ先進AIの適用を可能にする、無限に近いコンピューティングリソースとストレージ

リアルタイム応答に必要なローレーテンシーでタイトなコントロールループプライバシーデータや知的財産の保護

Page 41: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

MessageBus

Module

Page 42: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Embedded Georgehttp://github.com/ms-iotkithol-jp/AzureIoTGatewayExtention

ドローンワークス(株)http://github.com/drone-works/AzureIoTGatewaySDKExtention

Page 43: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Gateway Box

Page 44: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

StreamAnalytics

PowerBIBlobStorage

すべてのイベントデータをアーカイブ保存

ダッシュボード表示

SQLDatabase

EventHubs

ソーラーパネル 制御機器

RC485 ソーラーパネル稼働状況

アラート情報

Armadillo

ModbusAzure IoT

Gateway SDK

KES Software

IoTHub

アラート情報をルーティング

SoftBank 3G/4GModule

WebJob/Functions SendGrid

担当者へメールを送信

Microsoft Azure

Edge

×金沢エンジニアリングシステムズ

プロジェクト全体統括LTE回線提供 Edgeソフトウェア開発

(Azure IoT Gateway SDKを活用)

Azure IoT Gateway SDKを活用しEdgeソフトウェア開発工期を圧縮

KESのEdge側開発ノウハウを活用し200種類のプロトコルへの対応を実現可能

Page 45: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Message Bus

LocalCommModule

ExtendedModule

IoT HubMapper

IoT HubClient

IoT SDK

Page 46: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

http://pcn.club/katsuyama/azure201703/

Page 47: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 48: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

計画

プロビジョニング

構成監視

使用中止

計画:• 管理用メタデータ検討と定義プロビジョニング:• デバイスの登録と管理用メタデータ設定構成:• 正常性とセキュリティの維持• 一括構成変更、ファームウェア更新監視:• 継続的なモニタリングと異常時の通知使用中止:• 使用停止と資格情報の安全な破棄• デバイス交換中の、デバイス情報保持

Page 49: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

49クラウドのバックエンドサービスDevice App

IoT Hub

C2D

D2C

Device Twin

Direct Methods

テレメタリー

クラウドからメッセージをデバイスに送る

Properties

経過も通知受信可能なデバイスのメソッドを起動

Propertiesクラウド側から指定可能な変数デバイス側由来の変数

クラウド側で付与可能なメタデータ

Methods

Read/Write Read

Read/WriteRead/Notification

プロパティ更新、メソッドコールはIoT Hubに履歴として保存される

Page 50: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

Page 51: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 52: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

RegistryManager registryManager = RegistryManager.CreateFromConnectionString(“サービス接続文字列”);await registryManager.OpenAsync();

var newDevice = new Device(newDeviceId);newDevice = await registryManager.AddDeviceAsync(newDevice);

var twin = await registryManager.GetTwinAsync(newDevice.Id);

var props = new { dmConfig = new {TelemetryCycle = TelemetryCycle, Latitude = Latitude, …

} };Var json = JsonConvert.SerializeObject(props);

await registryManager.UpdateTwinAsync(newDevice.Id, json, twin.ETag);

接続

デバイス登録

Twin取得

DesiredProperties設定

Page 53: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

HostName=IoTHubEndPoint; SharedAccessKeyName =roleName;SharedAccessKey=Base64EncodedAccessKey

Page 54: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

var deviceClient = DeviceClient.CreateFromConnectionString(cs, TransportType.Mqtt);await deviceClient.SetDesiredPropertyUpdateCallback(DPUpdateCallback, this);

private Task DPUpdateCallback(TwinCollection desiredProperties, object userContext){

return Task.Run(() =>{

var json = desiredProperties.ToJson();…

});}

Page 55: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

var registedDeviceTwin = await registryManager.GetTwinAsync(deviceId);var rp =

JsonConvert.DeserializeObject(registedDeviceTwin.Properties.Reported.ToJson();var rpJSON = (JObject)JsonConvert.DeserializeObject(rp);

var reportedProps = new Models.ReportedProperties() {BatteryLevel = ThingsCar.BatteryLevel,…, ThingsCar.Status };

var json = JsonConvert.SerializeObject(reportedProps);var patch =JsonConvert.DeserializeObject<TwinCollection>(json);await deviceClient.UpdateReportedPropertiesAsync(patch);

Page 56: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

ServiceClient serviceClient =ServiceClient.CreateFromConnectionString(cs);var method = new CloudToDeviceMethod("reboot");var payload = “after 30 seconds…"method.SetPayloadJson(payload);var callResult = await serviceClient.InvokeDeviceMethodAsync(deviceId, method);

after 30 seconds…

Page 57: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

var deviceClient = DeviceClient.CreateFromConnectionString(cs,TransportType.Mqtt);await deviceClient.SetMethodHandlerAsync("reboot", RebootMethod, this);

private Task<MethodResponse> RebootMethod(MethodRequest request, object context){

return Task.Run(() => {…return new MethodResponse(

Encoding.UTF8.GetBytes("{¥"Status¥":¥"Rebooting¥"}"),0);});

}

※Payloadは、request.DataAsJsonで取得

Page 58: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 59: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

IoT Hub

Device Twin/Methods

Device

Device Twin/MethodsDevice Twin/Methods

Device Twin/MethodsDevice Twin/Methods

Device Twin/MethodsDevice Twin/Methods

Device Twin/MethodsDevice Twin/Methods

Device Twin/MethodsDevice Twin/Methods

Device Twin/MethodsDevice Twin/Methods

Device Twin/MethodsDevice Twin/Methods

Device Twin/Methods

Jobs

Schedule and Broadcast Device Twin Changes

Set Desired Properties, Tags, Call Methods

Queries – SQL like

Query Across Device Twin State

For Business Logic, Reporting and Compliance

JSONで結果取得

Page 60: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

IoT Hub Device ManagementのJobコレクション

Page 61: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

IoT Hub

デフォルトのメッセージングDevice

Device

Device

Device Twin

Properties

プロパティ、タグでフィルタリング

Tag.ServiceType = …

Desired.DeviceType = …

• タグ/プロパティで条件付け、後続の処理を分離

• 大規模 IoT への対応

Page 62: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Microsoft Azure

デバイス接続管理(ID、Device Key)

メッセージング(送受信、受信確認)

機器管理(Device Twin、Query、Job)

デバイス

IoTシナリオ用モジュール

IoT Edge Ext

計測データ、コマンド

HTTPS/AMQPS/MQTT

OS/Firmware

プロパティ、ジョブ

MqTT

“IoTシナリオアプリ”FA、医療、流通、リテール、社会インフラなど、それぞれの事業領域毎の専門アプリケーション

“IoT Edge Ext”特定の事業領域によらず、機器としての管理機能向けロジックアプリ実行状況確認、アプリやファームウェアのアップデートなど

Page 63: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

DeviceTwin

メッセージング

Page 64: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 65: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Azure IoT Edge IoT Hub

Devic

es

Local Storage

Azure Machine Learning

(Container)

FunctionsRuntimeContainer

ManagementDeviceTwin

DeviceTwin

Azure Stream Analytics

(Container)

Azure Functions(Container)

Cognitive Services(Container)

Custom Code(Container)

Module Twin

Module Twin

Module Twin

Module Twin

Module Twin

Module TwinModule TwinModule TwinModule TwinModule Twin

Page 66: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

https://microsoft.qualtrics.com/jfe/form/SV_0oknoIujzm1haOV

Microsoft Azure

Page 67: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 68: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~
Page 69: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

セッションアンケートにご協力ください

専用アプリからご回答いただけます。

decode 2017

スケジュールビルダーで受講セッションを登録後、アンケート画面からご回答ください。

アンケートの回答時間はたったの 15 秒です!

Page 70: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

Ask the Speaker のご案内本セッションの詳細は『Ask the Speaker Room』各コーナーカウンタにてご説明させていただきます。是非、お立ち寄りください。

Page 71: [DI10] IoT を実践する最新のプラクティス ~ Azure IoT Hub 、SDK 、Azure IoT Suite ~

© 2017 Microsoft Corporation. All rights reserved.

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。