开发基于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 Hub
的cli
扩展。Azure IoT Explorer
: 是一个图形界面的桌面管理工具。Azure PowerShell模块
: 类似于Azure Cli
,不过是基于PowerShell
的模块。设备SDK
: 多种语言支持的设备SDK
, 嵌入式设备SDK(只有C
)。Service SDK
: 多种语言支持的服务SDK
, 用于开发后端应用。各种扩展功能的服务
:Azure Device Provisioning Service
以及SDK
,Azure IoT Edge
,Azure IoT Hub Plug and Play
,Device 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 Hub
的SDK
或者查询接口来查询,
后面我们会详细的介绍这个部分。
设备用于和云通讯的方式
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
提供的主要通讯方式,我们在后面的章节再一一展开来学习。