上篇博文中,我們主要介紹了Azure IoT Hub的基本概念、架構、特性:
Azure IoT 技術研究系列1-入門篇
本文中,我們繼續深入研究,做一個起步示例程式:模拟裝置注冊到Azure IoT Hub, 裝置到雲通信,雲到裝置通信。
整體篇幅較大,我們先來第一步:将模拟裝置注冊到Azure IoT Hub。
首先,我們需要有一個聯網的裝置,例如樹莓派、Win10 IoT裝置等等,隻要能聯網,Azure IoT Hub有程式設計SDK即可,為了友善示範,本篇中我們做了一個模拟裝置:
TeldPile001,即001号充電樁。
然後,在正式編碼前,需要我們在Azure New Portal中,添加自己的IoT Hub.
輸入名稱後,選擇定價和縮放級别,這裡我們做測試,使用免費的F1即可,同時建立資源組。建立完成後,IoTTest即可使用了。
使用前,我們需要确定兩個重要的連接配接配置:主機名和連接配接字元串,我們選擇“概述”,右側有個主機名,先複制下來備用。
然後選擇共享通路政策:将連接配接字元串-主秘鑰,複制儲存下來備用。
開始編碼吧,我們建立一個Console工程叫做“RegisterDevice”,用于裝置注冊到Azure IoT Hub。同時添加重要的Nuget引用:
Microsoft.Azure.Devices
本文測試用的:<package id="Microsoft.Azure.Devices" version="1.2.4" targetFramework="net451" />
兩個核心的Namespace:
using Microsoft.Azure.Devices;
using Microsoft.Azure.Devices.Common.Exceptions;
核心類:Microsoft.Azure.Devices.RegistryManager:裝置注冊管理器
我們設計一個方法,添加或者擷取裝置資訊:
1 /// <summary>
2 /// 添加或擷取裝置資訊
3 /// </summary>
4 /// <returns>Task</returns>
5 private static async Task AddOrGetDeviceAsync()
6 {
7 string deviceId = "TeldPile001";
8 Device device;
9 try
10 {
11 device = await registryManager.AddDeviceAsync(new Device(deviceId));
12 }
13 catch (DeviceAlreadyExistsException)
14 {
15 device = await registryManager.GetDeviceAsync(deviceId);
16 }
17
18 Console.WriteLine("生成裝置辨別: {0}", device.Authentication.SymmetricKey.PrimaryKey);
19 }
Main函數:
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 }
Run,
可以看到,TeldPile001這個裝置已經注冊到我們自己的Azure IoT Hub中了。
以上便是,将裝置注冊到Azure IoT Hub的介紹,不複雜,微軟的設計還是比較贊的,簡單、快速、易用。
下一篇我們繼續研究裝置到雲、雲到裝置的通信。
周國慶
2014/4/16