Skip to main content

开发基于Azure IoT Hub的物联网应用

分类:  Azure物联网 标签:  #Azure # #IoT Hub #入门 #指南 发布于: 2023-06-13 21:48:37

要想开发基于Azure IoT Hub的物联网应用,仅仅了解Azure IoT Hub的基本功能是不够的,必须了解和学习由Azure IoT Hub提供的其他功能,这包括:

  • Azure IoT Hub提供的设备接入和认证方式
  • Azure IoT Hub提供的设备和云之间的通讯方式
  • Azure IoT Hub提供的消息处理机制
  • Azure IoT Hub提供的工具和SDK

我们本节先给大家分别介绍一下这些基本的概念,后继的章节再持续展开。

Azure IoT Hub给设备和云提供了双向通讯的能力:设备可以主动和云进行通讯,云也可以向设备发起主动交互和通讯,基于物联网的基本设想,Azure IoT Hub提供两大类的应用方向:

  • 设备应用的开发:Azure IoT Hub向用户提供基于设备的SDK,便于用户开发运行在设备上的代码,并且将设备和云连接,使得设备具备和云通讯的能力。
  • 后端应用开发:Azure IoT Hub同样也提供基于云服务的SDK, 使得用户可以开发运行在云上或者运行在传统后端上的代码,用户可以通过代码对设备进行远程查询,监控,管理等等常规业务操作。

另外Azure IoT Hub将设备分为两大类:

  • 嵌入式设备:这类设备基本上由各种单片机组成,有些能够运行实时操作系统,有些压根没有操作系统。Azure为了支持这类系统的开发,提供嵌入式设备SDK以及Azure实时操作系统。
  • 微处理器设备:这类设备可以运行通用的操作系统,例如windows, Linux等等,拥有强大的硬件,Azure提供多语言SDK支持。

对于后端应用的开发,Azure提供Service SDK, 同时也提供了一个供用户管理Azure IoT Hub资源的SDK, 不过对于新手我们有Azure Portal足够好用了。

Azure IoT Hub提供的基本工具

我们来看一下Azure提供的基本工具

  • Azure Portal: 图形界面的管理工具,新手直接上手,我们文章之前也有介绍。
  • Azure Cli扩展: 提供了一个用于在命令行管理Azure IoT Hubcli扩展。
  • Azure IoT Explorer: 是一个图形界面的桌面管理工具。
  • Azure PowerShell模块: 类似于Azure Cli,不过是基于PowerShell的模块。
  • 设备SDK: 多种语言支持的设备SDK, 嵌入式设备SDK(只有C)。
  • Service SDK: 多种语言支持的服务SDK, 用于开发后端应用。
  • 各种扩展功能的服务Azure Device Provisioning Service以及SDKAzure IoT EdgeAzure IoT Hub Plug and PlayDevice Update Service以及他们的SDK
  • Azure RTOS: 微软提供的实时操作系统。

这个名单还在持续增长,我们这里只是一个很简短的列表,这个列表里其中的一些工具我们会在后继章节介绍,另外一些可能会开新的篇章来学习。

Azure IoT Hub提供的设备接入方式

为了将设备接入到Azure IoT Hub, 用户可以使用如下的协议:

  • MQTT 以及 MQTT on WebSocket
  • AMQP 以及 AMQP on WebSocket
  • HTTPS

当设备和云相连时,Azure IoT Hub提供了如下几种方式对设备进行认证:

  • SAS Key
  • X509证书
  • X509自签发证书

注意
微软推荐使用X509证书作为产线上认证设备的唯一方式,其他两种用于开发和测试。

和设备相关概念

Device Identity

通过Azure Portal创建的设备,严格来讲不能称为设备,而应该称为设备标识(Device Identity), 用于表示物理设备在云上的一个映射或者说是逻辑设备,设备标识里规定了设备的名称 - 设备ID, 连接Azure IoT Hub的方式,状态等等信息。要禁止一个设备,只需在Azure IoT Hub将该设备设置为禁止(Disabled), 即可以使得该设备失效。

Azure IoT Hub为用户存储和保管所有的Device Identity

Device Twin/Module Twin

Device Identity 表示了设备的一些属性,那么Device Twin完全用于表示设备的状态,这包括:设备元数据配置条件等等。

Device Twin是使用json文档来记录一个设备的所有状态。该文档可以通过Azure IoT HubSDK或者查询接口来查询,

后面我们会详细的介绍这个部分。

设备用于和云通讯的方式

Azure IoT Hub以及SDK为设备提供了如下几种用于在设备端和云通讯的方式:

  • Device-to-Message: 设备向云发送的消息,也即D2C消息,多用于遥测数据的发送,特别是大量,高频率的数据。
  • Device/module Twin Reported Property: 设备或者模块的上报属性,后端应用可以通过事件监听上报属性的更改,或者主动查询上报属性的更改。
  • File upload: 从设备上向云上传文件,可以用于批量的数据上传,需要在Azure IoT Hub上配置Azure Storage Account用于接收上传的文件。

后端应用/云和设备通讯的方式

为了从云端或者后端应用和设备通讯,对设备进行控制和监控,Azure IoT Hub以及SDK提供如下几种通讯的方式:

  • Direct Method: 直接方法调用,主要的应用场景是后端应用或者云希望设备能够及时的动作反馈,例如关闭指示灯等等,如果要对大量的设备操作,可以使用Schedule Jobs来处理。
  • Twin desired property: 期望属性,设备可以监听期望属性的更改事件,从而触发某些需要长事件运行的动作,后端可以通过更改期望属性,自动事件通知设备,设备监听到之后,进行操作,操作的时候通过上报属性更新进度。
  • Cloud-to-Message: 云到设备的消息。

以上是Azure IoT Hub提供的主要通讯方式,我们在后面的章节再一一展开来学习。