EMQX Cloud 设备影子物联网应用

EMQX Cloud 技术支持发表于:2023年06月25日 16:16:12更新于:2023年06月25日 16:25:11

EMQX Cloud 设备影子物联网应用


设备影子是一项用途非常广泛的物联网应用。使用 EMQX Cloud 的影子服务可以快捷构建出设备影子服务。


什么是设备影子


物联网平台提供设备影子功能,用于缓存设备状态。设备在线时,可以直接获取物联网平台指令;设备离线后,再次上线可以主动拉取物联网平台指令。

设备影子是一个 JSON 文档,用于存储设备上报状态、应用程序期望状态信息。每个设备应该有一个设备影子,设备可以通过MQTT获取和设置设备影子来同步状态,该同步可以是影子同步给设备,也可以是设备同步给影子。


创建设备影子


前期准备


1.  创建用户名密码,并将设备连接到部署。设置用户名密码请查看认证鉴权。连接到部署请查看连接指引

2.  本文将使用 MQTTX 作为客户端连接到部署并模拟设备。

3.  开通影子服务,开通条件及流程请参考影子服务概览


创建影子模型


在影子服务,影子模型列表中点击添加按钮,填入名称,其他的系统默认生成即可。

image.png

点击影子模型 ID,进入详情页面,让模拟智能灯的客户端连接订阅“订阅主题”。


image.png

image.png

创建一个设备影子 JSON 模型,用来描述智能灯的颜色状态和亮度,指令下发的目标颜色和亮度。

{
"state": {
"reported": {
"color": null,
"volumn": null
},
"desired": {
"color": null,
"volumn": null
}
}
}


属性

说明

reported

设备的报告状态。设备可以在reported部分写入数据,报告其最新状态。应用程序可以通过读取该参数值,获取设备的状态。 包含两个字段:“color” - 字符串,“volumn” - 正整数

desired

设备的预期状态。仅当设备影子文档具有预期状态时,才包含desired部分。 应用程序向desired部分写入数据,更新事物的状态,如没有指令则为 “null”。


首先可以在影子模型中更新 JSON 的初始状态,点击修改按钮并更新。

image.png


应用场景一:应用程序请求获取设备状态


场景描述:

● 设备网络不稳定,设备频繁上下线,无法正常响应应用程序的请求。

● 设备网络稳定,同时响应多个应用程序的请求,即使响应的结果一样,设备本身处理能力有限,也会无法负载多次请求。

使用设备影子机制,设备状态变更,只需同步状态给设备影子一次,应用程序请求获取设备状态,不论应用程序请求数量,和设备是否联网在线,都可从设备影子中获取设备当前状态,实现应用程序与设备解耦。


1.  设备上线后上报最新的状态,只需要增量更新 “reported” 字段。

{
"method": "PATCH",
"payload": {
"state": {
"reported": {
"color": "GREEN",
"volumn": 80
}
}
}
}


image.png

2.  可以看到影子模型数据已经更新

image.png

3.  应用端获取设备状态,可以响应多个应用程序的请求

image.png


应用场景二:应用程序下发指令给设备,变更设备状态


场景描述:

● 设备处于下线状态,或设备网络不稳定,设备频繁上下线,应用程序发送控制指令给设备,设备不在线,指令就会发送失败。

● 使用设备影子机制,可以将应用程序下发的指令,携带时间戳存储到设备影子中。设备再上线时,获取设备影子中指令,并根据时间戳确定是否执行。


1.  模拟设备的客户端连接处于下线状态

image.png

2.  应用端发送指令

image.png

3.  可以看到影子模型数据已经更新

image.png

4.  设备上线发送获取消息方法

image.png

5.  设备获取到最新的指令状态,并可以根据时间戳选择是否执行更新状态

image.png




    您需要登录后才可以回复