干货分享丨玩转物联网IoTDA服务系列六-恒温空调
摘要:本文主要讲述空调接入到物联网平台后,通过恒温空调控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节。
场景简介
通过恒温控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节。
该场景主要描述的是应用侧或控制台可以给离线设备下发缓存命令,待设备上线后执行,控制台通过设备影子配置属性,待设备上线后上报的属性不匹配的话,会自动下发属性修改的指令,直至修改成功。
核心知识点:产品模型、编解码插件、设备影子、属性上报、属性修改。
场景流程

流程解释:
1.创建恒温空调产品:物联网平台以产品为粒度管理批量设备。用户可以通过平台提供的API接口或控制台创建产品。
2.上传产品模型(编解码插件):产品模型定义了设备的基本属性和命令。您可以通过控制台在线开发产品模型,通过模板离线开发产品模型再上传到控制台,也可以导入公共产品库的模型。通过前面几个示例,您应该发现当设备若采用二进制上传方式时,需要开发编解码插件上传到平台;若采用Json数据格式上传,则无需编解码插件。
3.注册恒温空调设备:平台提供了应用侧API接口可以注册设备,也可以通过控制台批量注册。注册时获取的设备ID,是设备侧与平台交互的唯一标识。
4.配置恒温预期温度:这里需要引入一个概念:设备影子。当设备不在线时,平台可以缓存来自应用侧的设备影子预期配置,待设备上线后同步属性给设备,若设备上报的对应属性值与预期不一致时,平台会继续下发,直到属性更改成功。这里的预期是恒温控制系统,根据季节情况,统一调整空调的默认温度,例如冬天设置为28度,夏天设置为24度。
设备影子可以通过控制台“设备详情 > 设备影子 > 属性配置”中进行设置。如果无法配置,那可能是您没有添加产品模型。设备影子依赖设备属性,而属性又依赖产品模型的定义,所以设备影子跟属性一样,您需要先有产品模型的属性定义,才能正常使用设备影子。
5.设备影子缓存预期值:设备影子是IoTDA里面的一个服务,设备在平台的孪生数据,主要提供缓存属性修改,属性同步的机制,目的是确保设备属性值与平台保持一致,即使设备离线,也能提供修改属性的能力,待设备上线后自动同步生效。
6.空调通电开机:空调开机后,通过二进制或MQTT都可以上线或上报(与平台建立连接),平台缓存的预期值就会通过设备属性修改下发给空调。
7.上报当前温度属性值:空调上报当前的温度属性值,即空调的默认温度调节的度数。
8.设备影子更新属性值:如果预期温度是28度,而空调上报的温度调节度数是26度,则说明未设置成功,平台会重复下发属性修改,通知空调调节温度到28度。如果空调上报的度数是28度,说明预期值在设备侧设置成功,平台不再下发属性修改。
9.上报空调温度属性值:当空调按预期设置温度成功后,上报的属性值平台会通知给应用侧恒温控制系统。当然,应用侧和控制台都可以主动查询设备影子,来决定是否要做预期的调整。
最佳实践
场景说明
通过恒温控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节。空调接入到物联网平台后,用户可以在应用侧或者设备接入控制台设置设备影子,将预置的温度通过设备影子下达属性修改给空调。空调收到修改属性的要求后,自动调节温度。
恒温空调产品开发
(1)登录华为云官方网站,访问设备接入服务。
(2)单击“立即使用”进入设备接入控制台。
(3)单击左侧导航栏的“产品”,单击右下角下拉框,选择新建产品所属的资源空间。
(4)单击右上角的“创建产品”,创建恒温空调产品,填写参数后,点击“立即创建”。


(5)在功能定义页面,选择“自定义功能”,参考下表,完成产品模型配置。


(6)进入“设备 > 设备注册”页面,单击“注册设备”,参考下表填写参数。


配置设备影子
用户可以选择在应用侧调用配置设备影子预期数据接口设置设备影子,也可以在设备接入控制台设置设备影子。此处以在设备接入控制台设置设备影子为例。
1)登录控制台,在左侧导航栏点击“设备”,单击步骤6注册的设备进入到恒温空调设备的详情页面。
2)选择“设备影子”页签,单击“属性配置”。
3)在弹出窗口中输入服务属性对应的期望值。此处设置“temperature”的属性值为25。

验证操作
方法一:
您可以使用MQTT.fx模拟设备验证。
(1)使用MQTT.fx模拟恒温空调,并连接到物联网平台。操作方法请参考通过MQTT.fx体验设备接入。
(2)选择“Subscribe”页签,输入订阅设备影子的topic=$oc/devices/{device_id}/sys/shadow/get/response/#,其中{device_id}与步骤6的设备ID保持一致,点击“Subscribe”按钮。

(3)选择“Pubish”页签,输入请求设备影子的Topic=$oc/devices/{device_id}/sys/shadow/get/request_id={request_id}。
(4)输入一条获取设备影子的请求,点击“Publish”按钮。
示例:
{
"object_device_id": "40fe3542-f4cc-4b6a-98c3-61a49ba1acd4",
"service_id": temperature"
}
(5)选择“Subscribe”页签,看到平台下发的设备影子数据。

方法二:
您可以使用配置设备接入服务时注册的真实设备接入平台,设备会收到平台下发的设备影子,修改空调的预设温度值。
至此,通过该文档的学习,您应该对恒温空调场景有了一定的了解。接下来,可以在系列后续文章中,可以学习到更多的物联网业务场景。
干货分享丨玩转物联网IoTDA服务系列六-恒温空调的更多相关文章
- 干货分享丨玩转物联网IoTDA服务系列五-智能家居煤气检测联动
摘要:该场景主要描述的是设备可以通过LWM2M协议与物联网平台进行交互,用户可以在控制台或通过应用侧接口创建设备联动规则,把设备上报的属性转发,通过物联网平台规则引擎转变成命令下发给其他指定设备. 场 ...
- 干货分享丨玩转物联网IoTDA服务系列四-智能网关
摘要:该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧 ...
- 玩转华为物联网IoTDA服务系列三-自动售货机销售分析场景示例
场景简介 通过收集自动售货机系统的销售数据,EI数据分析售货销量状况. 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,应用侧可以到物联网平台订阅设备侧变化的通知,用户可以在控制台或通 ...
- 干货分享丨jvm系列:dump文件深度分析
摘要:java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因.那么dump文件的内容是什么样的呢? JVM ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 Mars 系列 - 我们如约而至
导语 昨天上午,微信在广州举办了微信公开课Pro.于是,精神哥这两天的朋友圈被小龙的"八不做"刷屏了.小伙伴们可能不知道,下午,微信公开课专门开设了技术分论坛.在分论坛中,微信开源 ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(二) - 信令传输超时设计
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/9DJxipJaaBC8yC-buHgnTQ 作者简介: ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ff5932cde42f1f03de29b1 本文来源: 微信客户端开发团队 ...
- 玩转Windows服务系列——Windows服务小技巧
伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服务程序,编译后为Win32的窗口程序.我们在程序启动或运行过程 ...
- 【干货分享】Node.js 中文资料导航
这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...
- 玩转Windows服务系列——Windows服务小技巧
原文:玩转Windows服务系列——Windows服务小技巧 伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服 ...
随机推荐
- 21.4 Python 使用GeoIP2地图定位
GeoIP2是一种IP地址定位库,它允许开发人员根据IP地址查找有关位置和地理位置的信息.它使用MaxMind公司的IP地址数据库,并提供一个方便的Python API.GeoIP2可以用于许多不同的 ...
- CSP2023 模拟赛总结合集
9.9 ZZFLS 感觉 ucup 剩下的题完全不可做了啊!先对比赛时间来写总结对队友道歉(鞠躬.jpg 开题策略很失败.开场 30min 得的分数是一整场考试的分数. 开题,发现 T1 是水题,30 ...
- 洛谷P1990
这是一道dp的题,好像也不算dp.需要递推,感觉能训练思维!!!很棒的一道题. 覆盖墙壁 关于这道题的分析 状态表示:f[i][0]表示前i列全部填满的所有方案,f[i][1]表示前i列全部填满缺一个 ...
- 放弃老旧的Mybatis,强类型替换字符串,这是一款你不应该错过的ORM
一款轻量级.高性能.强类型.易扩展符合C#开发者的JAVA自研ORM github地址 easy-query https://github.com/xuejmnet/easy-query gitee地 ...
- k8s-服务网格实战-入门Istio
背景 终于进入大家都比较感兴趣的服务网格系列了,在前面已经讲解了: 如何部署应用到 kubernetes 服务之间如何调用 如何通过域名访问我们的服务 如何使用 kubernetes 自带的配置 Co ...
- hci0 command 0xfc20 tx timeout(Realtek 8761B Chipset, Bluetooth 5.0)
当前使用的Linux内核版本: 4.4.189 插上USB Bluetooth 5.0 Adapter后,dmesg显示如下log: [ 240.348480] usb 3-1.2: new full ...
- require()、import、import()有哪些区别?
require().import.import()是我们常用的引入模块的三种方式,代码中几乎处处用到.如果对它们存在模糊,就会在工作过程中不断产生困惑,更无法做到对它们的使用挥洒自如.今天我们来一起捋 ...
- CSS 尺寸单位概述
在本文中,我们将探讨 CSS 尺寸单位的四大类别.我们将了解这些尺寸单位的用途.它们的最佳工作原理,以及如何在每种情况下选择最佳尺寸单位,从而在各种媒体和设备尺寸下优化我们的布局. 关于 CSS 尺寸 ...
- SpringBoot + 通义千问 + 自定义React组件,支持EventStream数据解析!
一.前言 大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教. 最近ChatGPT非常受欢迎,尤其是在编 ...
- vim的各种快捷键
目录 一.准备一份用于练习的文件 二.命令模式下的快捷键 1.移动光标 2.删除文字 3.复制粘贴 4.撤销上一次操作 5.恢复上一次撤销的操作 6.查找 7.替换单个字符 8.光标移动到最左边 9. ...