Date post: | 24-Dec-2015 |
Category: |
Documents |
Upload: | lillian-audrey-ward |
View: | 220 times |
Download: | 0 times |
Érsek AttilaTwitter: @ersekattila
A Microsoft IoT víziója
Azure IoT
AgendaDevice connectivity in AzureAzure IoT Suite: IoT HubDevice identity and provisioningD2C/C2D messagesWindows 10 IoT *
IoT is an Inflection Point
Hardware is cheap
Connectivity is pervasive
Development is easy
New Innovative Scenarios
Huge benefits fuel demand
Field Gateway
Device Connectivity & Management
Analytics & Operationalized Insights
Presentation & Business Connectivity
IoT Device & Cloud PatternsD
evi
ces
RTO
S, L
inux,
Win
dow
s, A
ndro
id, i
OS
Protocol Adaptation
Batch Analytics & Visualizations
Azure HDInsight, AzureML, Power BI,
Azure Data Factory
Hot Path Analytics
Azure Stream Analytics, Azure HDInsight Storm
Presentation &
Business Connectivity
App Service, Websites
Dynamics, BizTalk Services, Notification Hubs
Hot Path Business Logic
Service Fabric & Actor Framework
Cloud Gateway
Event Hubs&IoT Hub
Field Gateway
Protocol Adaptation
Microsoft Azure IoT services
Devices Device Connectivity Storage Analytics Presentation & Action
Event Hubs SQL Database Machine Learning App Service
Service Bus Table/Blob Storage
Stream Analytics Power BI
External Data Sources DocumentDB HDInsight Notification
Hubs
External Data Sources Data Factory Mobile
Services
BizTalk Services
{ }
Azure IoT Suite
Azure IoT Suite
IoT HubField
gateway
Cloud protoco
lgatewa
y
IP-c
apable
PAN
-devic
es
Event processing and insight
(e.g. Azure Stream Analytics)
Applicationdevice runtime logic
Applicationdevice provisioning and
management
cloudfield
Device id
C2D queueendpoint
D2C send endpoint
Device …
Device …
Device …
D2C receive endpoint
C2D send endpoint
Msg feedback and monitoring
endpoint
Device identity managementIoT Hub
management
Many aspects of connectivityFunctionalityDevice-to-cloud telemetry,Cloud-to-device commands and notifications,Bulk uploads/downloads
SecurityDevice security,Cloud security,Channel security, …
MonitoringIdentify malfunctioning devices when they cannot be reached directly
Reach and customizationRTOS/Linux/Windows/non-IP capable,Network/application protocols,Authentication schemes
IoT Hub
Field gateways
Cloud protocol
gateways
Azure IoT Suite
…
Device provisioningMaking devices known to your system• Many systems involved
(IoT Hub, device registry, ERPs, …)• Device identity
(composite devices, many concerns)
Sample provisioning1. Device provisioned at manufacturing into
system2. Device connects for the first time and gets
associated to its regional data center (bootstrapped)
3. As a result of customer interactions the device is activated
4. Devices can be deactivated for security and other reasons
5. A device can also be de-provisioned at end-of-life or decommission.
Provisioned
Activated Deactivated
Bootstrapped
De-provisioned
Device-to-cloud messagesInterfaceAMQP and HTTPS device-side endpointAMQP service-side endpointDevice and service SDKs
Compatible with Event HubsPartitioned receiver, client check-pointingIntegrations with Azure Stream Analytics, Storm, …
IoT Hub services for D2CMillions of simultaneously connected devices Per-device authenticationConnection-multiplexing:• C2D and D2C traffic• Across multiple devices for gateway
scenarios
Azure IoT Suite: IoT Hub
Device id
C2D queueendpoint
D2C send endpoint
Device …
Device …
Device …
D2C receive endpoint
C2D send endpoint
Device identity management
Cloud-to-device messagesInterfaceAMQP and HTTPS device-side endpointAMQP service-side endpoint
At-least-once semanticsDurable messagesDevice acknowledges receipt(Send - Receive - Abandon OR Complete)
TTL and receiptsPer-message TTLPer-message positive and negative receipts
Command lifecycle patternUse correlated D2C for responsesUse feedback information to retryStore command state in command registry
Azure IoT Suite: IoT Hub
Device id
C2D queueendpoint
D2C send endpoint
Device …
Device …
Device …
D2C receive endpoint
C2D send endpoint
Device identity management
Msg feedback and
monitoring endpoint
Azure IoT Suite: IoT HubDesigned for IoTConnect millions of devices to a partitioned application back-end
Service assisted communicationsDevices are not serversUse IoT Hub to enable secure bi-directional comms
Cloud-scale messagingDevice-to-cloud and Cloud-to-deviceDurable messages (at least once semantics)
Cloud-facing feedbackDelivery receipts, expired messagesDevice communication errors
Per-device authenticationIndividual device identities and credentials
Connection multiplexingSingle device-cloud connection for all communications (C2D, D2C)
Multi-protocolNatively supports AMQP, HTTPDesigned for extensibility to custom protocols
Multi-platformDevice SDKs available for multiple platforms (e.g. RTOS, Linux, Windows)Multi-platform Service SDK.
Azure IoT Suite SDKsDevice-facingFor devices and field gateway
PlatformsRTOS (FreeRTOS)Linux(Ubuntu, Debian, Fedora, Raspbian, Angstrom)Windows 7/8/10ARM mbedAndroidiOS…
LanguagesC, Java, C#, Javascript
Service-facingFor back-ends and cloud gateway
Languages.NET C#JavaNode
C device SDK – D2C typedef struct TELEMETRY_INSTANCE_TAG{ DEVICEHUB_MESSAGE_HANDLE messageHandle; int messageTrackingId; // For tracking the messages within the user callback.} TELEMETRY_INSTANCE;
RcvConfirmationCallback(IOTHUB_CLIENT_HANDLE iotHubClientHandle, IOTHUB_CLIENT_CONFIRMATION_RESULT result, void* userContextCallback){...}
int main(void){ IOTHUB_CLIENT_CONFIG iotHubClientConfig; TELEMETRY_INSTANCE telemetryInstance; const char* msgText = "Hello from IoTHubClient"; ... iotHubClientHandle = DeviceHubClient_Create(&deviceHubClientConfig); ... IotHubMessage_SetData(telemetryInstance.messageHandle, msgText, strlen(msgText)); ... IotHubClient_SendTelemetryAsync(deviceHubClientHandle, telemetryInstance.messageHandle,
RcvConfirmationCallback, &telemetryInstance);...}
C device SDK – C2Dstatic int ReceiveNotificationCallback(IOTHUB_CLIENT_HANDLE iotHubClientHandle,
IOTHUB_MESSAGE_HANDLE notificationMessage){ /* Some device specific action code goes here... */ }
int main(void){ IOTHUB_CLIENT_CONFIG iotHubClientConfig; IOTHUB_CLIENT_HANDLE iotHubClientHandle;
iotHubClientConfig.iotHubName = “{name}"; iotHubClientConfig.deviceId = “{device id}"; iotHubClientConfig.deviceKey = “{key}"; iotHubClientConfig.protocol = IOTHUB_CLIENT_AMQP;
iotHubClientHandle = IotHubClient_Create(&iotHubClientConfig) IotHubClient_SetNotificationCallback(iotHubClientHandle, ReceiveNotificationCallback) /* Wait for messages to arrive... */ }
Solution PortalProvisioning API
Identity & Registry Stores
Stream Event Processor
Analytics/
Machine Learning
Data Visualization & Presentation
Device State Store
Gateway
Azure IoT Services Reference Architecture
Storage
IP capable devices
Existing IoT devices
Low power devices
Presentation Device and Event ProcessingData
Transport
Devices and Data Sources
Azure IoT Hub
Agent
Agent
Agent
IoT
One OS
Universal Windows Apps
Universal Windows Drivers
Natural User Interface
Enterprise-grade security
Trusted Platform Module
Advanced Lockdown
Multi-user Profiles
Industry peripheral support
Interoperable
Deploy, service, manage
Azure IoT-ready
One Windows Platform
Secure ConnectedIoT
Windows 10 IoT Editions
+MicrosoftAzure IoT
Security &Identity
Windows Updates
Visual Studio &UWP
Windows 10 IoT for industry devicesDesktop Shell, Win32 apps, Universal apps and drivers
Minimum: 1 GB RAM, 16 GB storage
X86/x64
Windows 10 IoT for mobile devicesModern Shell, Mobile apps, Universal apps and drivers
Minimum: 512 MB RAM, 4 GB storage
ARMWindows 10 IoT CoreUniversal Apps and Drivers
No shell or MS apps
Minimum: 256MB RAM, 2GB storage
X86/x64 or ARM Integrated Device
Connectivity
New User Interfaces