上篇博文中,我們主要介紹了Azure IoT Hub的基本概念、架構(gòu)、特性:

Azure IoT 技術(shù)研究系列1-入門篇

本文中,我們繼續(xù)深入研究,做一個(gè)起步示例程序:模擬設(shè)備注冊到Azure IoT Hub, 設(shè)備到云通信,云到設(shè)備通信。

整體篇幅較大,我們先來第一步:將模擬設(shè)備注冊到Azure IoT Hub。

首先,我們需要有一個(gè)聯(lián)網(wǎng)的設(shè)備,例如樹莓派、Win10 IoT設(shè)備等等,只要能聯(lián)網(wǎng),Azure IoT Hub有編程SDK即可,為了方便演示,本篇中我們做了一個(gè)模擬設(shè)備:

TeldPile001,即001號充電樁。

然后,在正式編碼前,需要我們在Azure New Portal中,添加自己的IoT Hub.

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

輸入名稱后,選擇定價(jià)和縮放級別,這里我們做測試,使用免費(fèi)的F1即可,同時(shí)新建資源組。

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

 

創(chuàng)建完成后,IoTTest即可使用了。

使用前,我們需要確定兩個(gè)重要的連接配置:主機(jī)名和連接字符串,我們選擇“概述”,右側(cè)有個(gè)主機(jī)名,先復(fù)制下來備用。

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

然后選擇共享訪問策略:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

將連接字符串-主秘鑰,復(fù)制保存下來備用。

開始編碼吧,我們創(chuàng)建一個(gè)Console工程叫做“RegisterDevice”,用于設(shè)備注冊到Azure IoT Hub。同時(shí)添加重要的Nuget引用:

Microsoft.Azure.Devices

本文測試用的:<package id="Microsoft.Azure.Devices" version="1.2.4" targetFramework="net451" />

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

兩個(gè)核心的Namespace:

using Microsoft.Azure.Devices;
using Microsoft.Azure.Devices.Common.Exceptions;

核心類:Microsoft.Azure.Devices.RegistryManager:設(shè)備注冊管理器

我們設(shè)計(jì)一個(gè)方法,添加或者獲取設(shè)備信息:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

 1         /// <summary> 2         /// 添加或獲取設(shè)備信息 3         /// </summary> 4         /// <returns>Task</returns> 5         private static async Task AddOrGetDeviceAsync() 6         { 7             string deviceId = "TeldPile001"; 8             Device device; 9             try10             {11                 device = await registryManager.AddDeviceAsync(new Device(deviceId));12             }13             catch (DeviceAlreadyExistsException)14             {15                 device = await registryManager.GetDeviceAsync(deviceId);16             }17 18             Console.WriteLine("生成設(shè)備標(biāo)識: {0}", device.Authentication.SymmetricKey.PrimaryKey);19         }

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

Main函數(shù):

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

1         static void Main(string[] args)2         {3             var connectionString = "HostName=IoTTest.***-***;SharedAccessKeyName=iothubowner;SharedAccessKey=******";4             var registryManager = RegistryManager.CreateFromConnectionString(connectionString);5             AddOrGetDeviceAsync().Wait();6             Console.ReadLine();7         }

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

Run,

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

可以看到,TeldPile001這個(gè)設(shè)備已經(jīng)注冊到我們自己的Azure IoT Hub中了。

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

以上便是,將設(shè)備注冊到Azure IoT Hub的介紹,不復(fù)雜,微軟的設(shè)計(jì)還是比較贊的,簡單、快速、易用。

http://www.cnblogs.com/tianqing/p/6719607.html