• Azure IOT 设备固件更新技巧,看这一篇就够了




    嫌长不看版

    今天为大家准备的硬菜是:在 Azure IoT 中心创建 Node.js 控制台应用,进行端到端模拟固件更新,为基于 Intel Edison 的设备安装新版固件的流程。通过创建模拟设备应用,可实现 firmwareUpdate 直接方法,启动等待下载固件映像、下载固件映像,最终应用新版固件映像,并在每个阶段显示操作进度。

     



    操作细节版

    在进行物联网开发的过程中,很多用户会遇到这样的问题:物联网中的某些边缘设备上运行的固件存在问题需要修复,准备好新版固件后,如何集中批量部署给所有适合的设备?

    答案就是:基于 Azure IoT 技术搭建的物联网环境,通过 Azure IoT 中心创建一个简单的 Node.js 控制台应用就可以满足要求。

    我们需要通过下文介绍的方法创建两个 Node.js 控制台应用:

    • dmpatterns_fwupdate_service.js:在模拟设备应用上调用直接方法、显示响应并定期(每 500 毫秒)显示更新后的报告属性。

    • dmpatterns_fwupdate_device.js:使用设备标识连接到 IoT 中心、接收 firmwareUpdate 直接方法、运行一个多状态过程以模拟固件更新,包括:等待映像下载、下载新映像,最后应用映像。

    请先准备好下列内容:

    • Node.js 版本 0.12.x 或更高版本;

    • 有效的 Azure 帐户。

    好了,我们开始。

    2、在“IoT 中心”边栏选项卡中,选择 IoT 中心的配置。                                                                                                                                                                                                  

    名称:输入 IoT 中心的名称;

    选择定价和缩放层:对于本教程,可使用免费 F1 层;

    资源组:创建资源组或选择现有资源组;

    位置:选择托管 IoT 中心的位置。

    3、选择 IoT 中心配置选项后单击“创建”。Azure 可能需要几分钟来创建 IoT 中心,若要查看创建进度,可在“启动板”或“通知”面板中查阅。

    4、成功创建 IoT 中心后,在 Azure 门户中单击 IoT 中心对应磁贴,打开 IoT 中心的边栏选项卡。记下“主机名”,然后单击“共享访问策略”。

     

    5、在“共享访问策略”边栏选项卡中,单击“iothubowner”策略,然后复制并记下“iothubowner”边栏选项卡中的 IoT 中心连接字符串。                                                                                

    记下结果中的设备连接字符串。设备应用将使用此设备连接字符串以设备身份连接到 IoT 中心。

    Step 3:用直接方法触发更新

    随后创建一个 Node.js 控制台应用,以便在设备上启动远程固件更新。该应用使用直接方法启动更新,并使用设备孪生查询来定期获取活动的固件更新的状态。

    1、新建名为 triggerfwupdateondevice 的空文件夹。在该文件夹的命令提示符处,使用以下命令创建package.json 文件。接受所有默认值:                                                             

    9、保存并关闭 dmpatterns_fwupdate_service.js 文件。

    第 4 步:创建模拟设备应用程序

    接下来需要执行下列操作:

    • 创建一个 Node.js 控制台应用,用于响应通过云调用的直接方法

    • 触发模拟的固件更新

    • 使用报告属性,允许通过设备孪生查询标识设备及其上次完成固件更新的时间

    具体过程如下:                                                                                                                                                                                                                                                                

    9、添加通过报告属性将固件更新状态更改为“正在下载”的以下函数。然后该函数会模拟固件下载,并最终将固件更新状态更新为“downloadFailed”(下载失败)或“downloadComplete”(下载完成):                                                                                                                                                                                                                             

    10、添加通过报告属性将固件更新状态更改为“正在应用”的以下函数。然后该函数会模拟固件映像应用,并最终将固件更新状态更新为“applyFailed”(安装失败)或“applyComplete”(安装完成):                                                                                                                                                                                                                                        

    11、添加处理 firmwareUpdate 直接方法并启动多阶段固件更新过程的以下函数:                                                                                                                                                      

    12、最后添加以下代码,以便连接到 IoT 中心:                                                                                                                                                                                                            

    注意:为简化起见,本教程不实现任何重试策略。生产代码中应按 MSDN 文章 Transient FaultHandling(暂时性故障处理)中所述实施重试策略(例如指数性的回退)。


    第 5 步:运行应用

    至此已经准备就绪,可以运行应用来更新固件了。步骤如下:

    1、在 manageddevice 文件夹的命令提示符处,运行以下命令进行直接重启方法的侦听。

    2、在 triggerfwupdateondevice 文件夹的命令提示符处运行以下命令,以便触发远程重启并查询设备孪生了解上次重新启动时间。

    3、可以在控制台中看到设备对直接方法的响应。

    通过这样的方式,我们就可以根据需要为物联网边缘设备更新固件了。

     推 荐 阅 读 

    如果你的物联网平台使用了 .Net 和 C# 语言,也可以通过类似方式进行更新,具体方法可参阅:

    使用设备管理启动设备固件更新(.NET/Node)

     Azure IoT 平台对不同开发语言、工具和框架提供了完善的支持。你可以使用不同语言完成相同的任务,资源在此:

    处理设备到云的消息:.Net | Java

    发送云到设备的消息:.Net | Java | Node

    使用直接方法:Node.js | .Net/Node

    计划和广播作业:Node.js | .Net/Node 

    立即访问http://market.azure.cn

  • 相关阅读:
    雅米新一代企业管理平台
    Telerik.Web.UI应用到sharepoint2010注意事项
    SharePoint Server 2010 容量管理:软件边界和限制
    【读】构建可枚举类型(IEnumerator和IEnumerable)
    【读】C# 窗口间传递数据
    分类(转)
    “盗”亦有道
    English学习指南
    爱情是什么?
    客户需要的26个待遇 (转)
  • 原文地址:https://www.cnblogs.com/zangdalei/p/7359160.html
Copyright © 2020-2023  润新知