干货分享丨玩转物联网IoTDA服务系列六-恒温空调
场景简介
通过恒温控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节。
该场景主要描述的是应用侧或控制台可以给离线设备下发缓存命令,待设备上线后执行,控制台通过设备影子配置属性,待设备上线后上报的属性不匹配的话,会自动下发属性修改的指令,直至修改成功。
核心知识点:产品模型、编解码插件、设备影子、属性上报、属性修改。
场景流程
流程解释:
上传产品模型(编解码插件):产品模型定义了设备的基本属性和命令。您可以通过控制台在线开发产品模型,通过模板离线开发产品模型再上传到控制台,也可以导入公共产品库的模型。通过前面几个示例,您应该发现当设备若采用二进制上传方式时,需要开发编解码插件上传到平台;若采用Json数据格式上传,则无需编解码插件。
注册恒温空调设备:平台提供了应用侧API接口可以注册设备,也可以通过控制台批量注册。注册时获取的设备ID,是设备侧与平台交互的唯一标识。
配置恒温预期温度:这里需要引入一个概念:设备影子。当设备不在线时,平台可以缓存来自应用侧的设备影子预期配置,待设备上线后同步属性给设备,若设备上报的对应属性值与预期不一致时,平台会继续下发,直到属性更改成功。这里的预期是恒温控制系统,根据季节情况,统一调整空调的默认温度,例如冬天设置为28度,夏天设置为24度。
设备影子可以通过控制台“设备详情 > 设备影子 > 属性配置”中进行设置。如果无法配置,那可能是您没有添加产品模型。设备影子依赖设备属性,而属性又依赖产品模型的定义,所以设备影子跟属性一样,您需要先有产品模型的属性定义,才能正常使用设备影子。
设备影子缓存预期值:设备影子是IoTDA里面的一个服务,设备在平台的孪生数据,主要提供缓存属性修改,属性同步的机制,目的是确保设备属性值与平台保持一致,即使设备离线,也能提供修改属性的能力,待设备上线后自动同步生效。
空调通电开机:空调开机后,通过二进制或MQTT都可以上线或上报(与平台建立连接),平台缓存的预期值就会通过设备属性修改下发给空调。
上报当前温度属性值:空调上报当前的温度属性值,即空调的默认温度调节的度数。
设备影子更新属性值:如果预期温度是28度,而空调上报的温度调节度数是26度,则说明未设置成功,平台会重复下发属性修改,通知空调调节温度到28度。如果空调上报的度数是28度,说明预期值在设备侧设置成功,平台不再下发属性修改。
上报空调温度属性值:当空调按预期设置温度成功后,上报的属性值平台会通知给应用侧恒温控制系统。当然,应用侧和控制台都可以主动查询设备影子,来决定是否要做预期的调整。
最佳实践
场景说明
通过恒温控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节。空调接入到物联网平台后,用户可以在应用侧或者设备接入控制台设置设备影子,将预置的温度通过设备影子下达属性修改给空调。空调收到修改属性的要求后,自动调节温度。
恒温空调产品开发
登录华为云官方网站,访问设备接入服务。
单击“立即使用”进入设备接入控制台。
单击左侧导航栏的“产品”,单击右下角下拉框,选择新建产品所属的资源空间。
单击右上角的“创建产品”,创建恒温空调产品,填写参数后,点击“立即创建”。
基本信息
产品名称
自定义,如aircondition
协议类型
选择“MQTT”
数据格式
选择“JSON”
厂商名称
自定义
功能定义
选择模型
按照步骤5自定义产品模型
所属行业
自定义
设备类型
在功能定义页面,选择“自定义功能”,参考下表,完成产品模型配置。
服务数据
服务
服务名称:temperature
属性
属性名称:temperature
是否必选:是
数据类型:jsonObject(JSON结构体)
访问权限:可读、可写、可执行
长度:1
参数名称
说明
所属产品
选择在步骤4中创建的产品。
设备标识码
自定义,英文字母和数字的组合字符串。通过注册成功后生成的“设备ID”(与设备标识码一一对应)和“设备密钥”接入平台。
设备名称
自定义。
设备认证类型
选择“密钥”。
密钥
设备密钥,可自定义,不填写物联网平台会自动生成。
配置设备影子
用户可以选择在应用侧调用配置设备影子预期数据接口设置设备影子,也可以在设备接入控制台设置设备影子。此处以在设备接入控制台设置设备影子为例。
选择“设备影子”页签,单击“属性配置”。
在弹出窗口中输入服务属性对应的期望值。此处设置“temperature”的属性值为25。
验证操作
方法一:
您可以使用MQTT.fx模拟设备验证。
使用MQTT.fx模拟恒温空调,并连接到物联网平台。操作方法请参考通过MQTT.fx体验设备接入。
选择“Subscribe”页签,输入订阅设备影子的topic=$oc/devices/{device_id}/sys/shadow/get/response/#,其中{device_id}与步骤6的设备ID保持一致,点击“Subscribe”按钮。
选择“Pubish”页签,输入请求设备影子的Topic=$oc/devices/{device_id}/sys/shadow/get/request_id={request_id}。
输入一条获取设备影子的请求,点击“Publish”按钮。
示例:
{ "object_device_id": "40fe3542-f4cc-4b6a-98c3-61a49ba1acd4", "service_id": temperature" }
选择“Subscribe”页签,看到平台下发的设备影子数据。
方法二:
您可以使用配置设备接入服务时注册的真实设备接入平台,设备会收到平台下发的设备影子,修改空调的预设温度值。
- 点赞
- 收藏
- 关注作者
评论(0)