微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

该系列文章为微软Azure IoT的学习教程。
版权归作者所有,未经允许,请勿转载
作者:Jim 微软Azure IoT 项目经理,多年Xamarin等移动平台研发管理经验,熟悉微软SharePoint/WPF/WCF/AspMVC等解决方案。曾任中国电信呼叫中心研发经理。

这个教程是希望通过详细步骤来说明怎么通过Azure IoT 套件中的 远程监视预配置解决方案1.6版本连接和管理Seeeduino Cloud开发者套件(更多相关信息在最后),并使用Azure IoT Hub Device SDK.

远程监视预配置解决方案属于Azure IoT套件的一部分。Azure IoT 套件预配置解决方案结合了多项 Azure IoT 服务,提供可实现常见 IoT 商业应用场景的端到端解决方案。 远程监视预配置解决方案将连接并监视设备。 可以利用该解决方案分析设备发出的数据流,并通过让流程自动响应该数据流提升业务绩效。关于预配置解决方案的更多内容,请参考这里

Seeeduino Cloud 开发者套件兼容Arduino 板并运行Linux系统,由并带有Dragino Wifi 物联网模块 HE 和ATmega32u4的微控制板组成,并且它内置开源的OpenWrt系统。Arduino是一个非常流行的硬件原型平台,提供Arduino 板和Arduino IDE,并支持Windows, Macintosh OS X 和 Linux系统。Seeeduino Cloud完全兼容Arduino,Grove,扩展板和IDE(Arduino IDE版本高于1.5.3)。除了Arduino常规接口,Seeeduino Cloud还支持内置的以太网和WiFi,USB-A端口使得需要网络连接和大量存储的原型设计非常容易。

这个课程将会演示Seeeduino Cloud 开发者套件与远程监视预配置解决方案连接的演练过程,并利用了远程监视预配置解决方案中的两个设备管理任务。包括:

  • 怎么连接Seeeduino Cloud 开发者套件
  • 怎么在远程监视预配置解决方案中添加新的设备
  • 怎么更新客户端文件
  • 怎么修改设备的属性及更新固件

1.在开始前,进行硬件准备

(1) Seeeduino 开发者套件 包括:
Seeeduino Cloud; ② Base Shield V2; ③ Grove - Temp&Humi Sensor;
Grove - Light Sensor; ⑤ Grove - Sound Sensor; ⑥ Grove - Chainable RGB LED.

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(2) 像下图一样将四个传感器插入到Base Shield的对应端口,
① Grove - Temp&Humi Sensor -> A0; ② Grove - Light Sensor -> A1
③ Grove - Sound Sensor -> A2; ④ Grove - Chainable RGB LED[In] -> D4

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(3) 像下图一样将Base Shield V2板插入到Seeeduino Cloud 上:

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(4) 用USB线将Seeeduino Cloud链接到你的电脑的USB端口上:

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

2.设置Seeeduino Cloud的网络

备注:WiFi 的默认模式为 AP(Access Point)。当完成配置后它将变为 Station 模式。

长按 Cloud 复位按钮,并于 5 秒后释放,WiFi 将恢复默认设置。

使用 PUTTY 工具将 Seeeduino Cloud 连接到可用的 WiFi, 可参考 wiki 描述。

Seeeduino Cloud有一个WiFi接口和一个LAN接口。他们需要有用于网络连接和设备管理的IP地址。如果你需要更多网络连接方面的参考信息,可以访问Seeed wiki (wiki.seeed.cc/Seeeduino_Cloud).

(1)通过Wi-Fi网络连接到Seeeduino Cloud
a. Wi-Fi AP模式
Seeeduino Cloud第一次上电时,将会出现一个名叫SeeeduinoCloud-AXXXX未加密的WiFi网络出现。
如下所示,将电脑连接到这个网络,获得IP地址192.168.240.xxx。默认地址为192.168.240.1。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

b. Wi-Fi STA 模式
连接到 SeeeduinoCloud-AXXXX 这个网络后,在浏览器地址栏输入172.31.255.254 or 192.168.240.1,你会打开Seeeduino Cloud的网页端。输入默认密码为“seeeduino”, 点击登录进入。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

选择你的Wi-Fi网络,输入密码并点击 “CONFIGURE & RESTART”.

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(2) 通过有线网络连接到Seeeduino Cloud
当你使用有线方式连接Seeeduino Cloud时,它会通过DHCP方式自动获取到IP地址。

(3) 变更你的设备名称(可选)
当你的网络中存在2个以上的Seeeduino Cloud设备时,你需要修改设备名称,以便你能够识别出哪个设备是你需要操作的。
在Seeeduino Cloud的Web端,点击‘SYSTEM’菜单,在SEEEDUINO CLOUD NAME栏输入一个设备名(例如:’SeeedAzureIoT’),并点击“CONFIGURE & RESTART”.

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(4) 获取IP 地址
Open Arduino IDE tools, use the menu ‘tools->port’ to find out the IP address:
打开 Arduino IDE, 通过菜单中的Tools->Port 找到IP 地址。
注意:你的电脑和Seeeduino Cloud需要处于同一网段中才能找到设备的IP地址

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

3.连接设备

你可以通过SSH终端方式访问Seeeduino Cloud 来编程或者配置ATHEROS AR9331:
• 下载SSH 终端,例如 Putty
• 启动SSH客户端,并通过刚才获取到的IP地址连接到Seeeduino Cloud:
用户名: root
密码: seeeduino

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

4.创建新的远程监视预配置解决方案并添加设备
(1) 注册并登录http://www.azureiotsuite.cn/, 创建一个新的远程监视预配置解决方案。或者,你可以使用命令行工具部署一个新的远程监视预配置解决方案。该方案可以通过GitHub下载:https://github.com/Azure/azure-iot-remote-monitoring 。更多关于预配置方案的使用方式,请参考这里。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(2) 增加新的客户硬件设备,并记录host name, device id 和 device key这些值。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(3) 输入 Azure 连接字符串
在SSH客户端上,使用 vi 键入 host name、device id 与 device key 到文件 ” AzureConnectionString “。文件路径为 ” /root/AzureConnectionString “。
a. 或者使用 echo 命令输入字符串,如下:

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

5.打开 Dashboard 与 Serial 监测面板等待测试

(1)传感器数据监测:

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(2)RGB 灯控制
设置红色:16711680 -> 0xff0000

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

设置绿色:65280-> 0x00ff00

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

设置蓝色:255-> 0x0000ff

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

6.编辑新的终端程序(可选)

已经部署在Seeeduino Cloud 开发者套件的客户端(文件名:AzureIoTHubClient)目前是个旧版本文件,这一步将带你部署一个新版本文件,通过它可与1.6版本的远程监视预配置解决方案进行更多交互。

注意:如果你不希望编译这个程序,下一步你可以直接使用预先编译好的客户端文件

(1). 准备一个开发环境,我使用了一个版本是16.04的Ubuntu Server TLS。更多编译过程内容可以参考这里。

(2). 在GitHub上下载 azure-iot-sdk-cs
使用命令行终端,从这里下载最新版本的IoT Hub 设备SDK ,并且下载Seeeduino_Cloud_Azure_IoT_Hub_Client (在GitHub上)来编译你的程序,该程序增加了设备管理支持和一些设备上的业务逻辑示例。

你可以使用下列步骤创建这个演示用途的客户端文件:
a. 下载一个改动过的 azure-iot-sdks

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

b. 安装 cmake 与 gcc

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

备注 : 确认 cmake 版本 3.+,以及 gcc 版本 4.9.+

c. 下载Seeeduino_Cloud_Azure_IoT_Hub_Client, 复制代码”…/Source Code/remote_monitoring.c ” 到文件 “/azure-iot-sdks/c/serializer/samples/remote_monitoring/remote_monitoring.c “

注意:这里使用了不同的repository.

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

d. 编译sdk及样例。该样例可支持Device Twin功能、方法功能,并显示为0.1的固件版本和遥测间隔时间为15(秒)。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

e. 复制和重命名文件
从home目录找到文件remote_monitoring:
“…/openwrt/sdk/build_dir/target-mips_r2_uClibc-0.9.33.2/azure-iot-sdks-1/serializer/samples/ remote_monitoring /remote_monitoring “, 并将文件名称改为 ” AzureIoTHubClient ”
(AzureIoTHubClient 是一个可执行文件). 下一步,我们将复制这个文件到 Seeeduino Cloud.

注意:如果你正在使用SSH连接到Ubuntu,使用下一步提到的SCP工具复制这个编译好的文件到你的电脑。

7.更新客户端程序

注意:使用上一步骤编译的新版客户端文件,或者直接通过这里下载预编译的客户端文件。

(1) 当新的客户端文件覆盖旧文件时,你可能会碰到客户端文件还在运行的警告。这种情况下,使用’kill’命令结束该文件进程。
a. 使用’ps’命令找到‘AzureIoTHobClient’的进程号
b. 使用’kill’命令结束进程

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(2) 使用SCP工具(例如:WinSCP)来连接Seeeduino Cloud并覆盖旧文件。确保你的新文件有相应的运行权限。
a. 通过WinSCP 客户端连接Seeeduino Cloud.

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

b. 在连接上Seeeduino Cloud后,从左侧区域拖拽新的文件到右侧窗口。

注意:旧的客户端文件位于Seeeduino Cloud 上面root用户的home目录下(/root/AzureIoTHubClient)

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(3) 在新版客户端文件部署后,使用’reboot’命令重新启动设备。在设备重新运行后,你可以通过远程监视预配置解决方案的设备列表中查看该设备信息,在下面图中,有一个新增的名为’tao-device’的设备,当前显示的固件版本是’0.1’,遥测数据的时间间隔值为’15’.

注意:当前设备的温度和湿度值是随机产生的。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

注意: 如果‘TelemetryInterval’栏目没有显示出来,你可以通过’Column Editor’按钮添加该列。

8.更新 desired property 中的’ Config.TelemetryInterval’

这一步将会向你演示如何修改Desired property.

(1) 在远程监视预配置解决方案中的设备页,从设备列表中选择你的设备,设备详细信息将会显示在列表右侧。

(2) 点击Desired properties的’Edit’链接。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(3) 在 DESIRED PROPERTY NAME 的这个文字框中输入‘desired.Config.TelemetryInterval’

(4) 在VALUE中输入5,并点击‘Save changes to device twin’按钮。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(5) 稍等一会儿,确认在Reported properties的‘Config.TelemetryInterval’已经变为5.

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(6) 观察仪表板中的曲线,查看你的设备的遥测数据发送频率已经发生改变。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

9.通过远程监视预配置解决方案修改固件

当新的客户端文件被更新后,如果固件版本号为0.1,则遥测数据会随机产生。一旦固件得到更新,比如是非0.1版本号,则Seeeduino Cloud 将会恢复正常并发送遥测数据到远程监视预配置解决方案。

现在,让我们将Seeeduino Cloud的固件版本升级到2.0
(1) 在设备列表中选择设备,详细信息将会显示在列表右侧。
(2) 点击’Method’按钮,将会打开调用方法界面。
(3) 在方法列表中选择‘InitiateFirmwareUpdate’选项。
(4) 输入自定义的固件文件路径。在演示过程中,我们可以输入‘https://iotrmassets.blob.core.windows.net/firmwares/FW20.bin’这个预定义的值到FWPACKAGEURI框。
(5) 点击’Invoke Method’按钮提交此方法。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(6) 稍等片刻,确认当前设备的固件版本号已经是2.0。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

(7) 观察远程监视预配置解决方案中的仪表盘,并确认温度和适度值已经恢复正常,并且光线和声音数据已经可以正常显示。

微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件

当前仪表盘的的温度和湿度值反应出当前环境的真实情况,接近平的曲线与更新固件之前的图表显示会很不一样。

相关资源: