[文章]

基于Hi3861WIFIIOT搭建属于自己的物联网IOT平台 4-数据传输并控制设备

2020-11-30 21:53:53  275 鸿蒙系统 IOT 智能家居 wifi HarmonyOS
分享
完成前面几篇后,本项目已经接近尾声了,这一篇为把设备数据上报到可视化平台,并接收平台的控制指令
接收数据
只需一步,把nodered的MQTT接收端的订阅的主题改成设备端发布的主题,nodered发送端的发布主题设置成设备端的订阅主题即可
829e7d3acc1e97ee3bb5ca27eea5648.png da7773915cdb494175a9e491b52eb3b.png



设备端的订阅发布宏定义:
4d8c67f574a73bbb5c6bc8d9e8d8d90.png

然后就上电连接指定wifi,就可以在平台看到数据了
1606744061(1).png


发布数据
此次教程所用到的数据格式均为Json格式,所以发布数据也遵循Json格式
输入设定的参数后点确定,就会下发数据。
5b5e14ec15e84c67fedaa198605d377.png
在设备端还需要解析Json数据,鸿蒙代码已经移植了C-Json库,我们直接使用就可以了
代码中包含头文件
然后根据Json代码中的例子编写自己的解析函数
19e5ffb71626fde4d68867ba850ecd9.png
然后就可以在主循环中调用了,我这里使用了一个标志位来处理,一旦接收到数,把标志位置1,然后就把数据取出来,给Json函数解析,得到想要的数据,然后就可以根据阈值来做逻辑判断了。
ede4ffe0ea5146fa3a7038a225b3462.png
逻辑处理比较简单
612c53ec0c62cd5951660b94c8f6b22.png
在上报这里加了一点处理,我的处理思路是这样的,在IOT平台中,你一旦下发了数据,要收到设备返回报文,才能确定设备正确接收到了你的控制指令,这里我用灯的状态上报来作为报文,我下发了开灯指令,如果设备接收到了指令,把灯开了之后要立即上报灯已经开的状态指令,这样才能认为控制成功。
a064dac8efebbaf88d9930f1c8a091a.png
所以在逻辑处理处可以这样设计,一旦接收到控制指令,响应了控制指令之后,要立即上报当前的状态。如果没有接收到控制指令,则计时到保活时间就自动上报状态。
Ps:这里还可以再加一道警报响应,意思是 假如我定时上报的时间为15S,但是在第2秒的时候,温度超过了报警限值,那么由于没有接受到控制指令,所以要等13S之后平台才能接收到数据,如果真正遇到危险,这样是很不可取的,所以可以再加一个标志位,传感器的值超过阈值,就立马上报数据,保证实时性。
好了,基于3861WIFIIOT开发属于自己的IOT平台并部署智能家居场景教程完结,相信动手能力强的你也能够实现自己的IOT平台~~~
下一篇:项目成果视频展示。

0
2020-11-30 21:53:53   评论 分享淘帖
老哥高产似那啥?
2020-12-1 13:53:05 评论

举报

您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发表新帖