基于MQTT的智能环境监视控制器
前一个试用中
https://bbs.elecfans.com/jishu_2307663_1_1.html
利用天启M1和传感器采集板S1完成了本地采集和控制功能。
由于天启M1集成了无线连接wifi控制器,同时支持mqtt的功能,所以对第一个设计升级,使它成为一个网络化的监视和控制器。
这个想法在试用开始的时候就有,但是一直也没有很好的解决MQTT的网络化问题,借着十一的时间,认真的研究了一下,终于可以成功的解决了所有的环节。
本测试包换前置采集和执行器,由天启M1+S1来完成,采用树莓派ZeroW架设MQTT的broker,利用Node-Read作为上位的监视和控制部分。
这里重点介绍一下天启M1的实现。
M1程序介绍
变量创建
这里面创建了三个变量,用来存储从S1传感器采集的温度、湿度和亮度值。
无线网络连接
利用wifi连接模块和家里面的路由器建立无线连接,并获取IP地址。
和MQTT Broker建立连接
无线连接建立后,就可以完成MQTT的连接了,通过和厂家的技术支持连接,第一条本机ID的设置很重要,应该被执行,以前在MQTT连接建立的时候总是出错,一个原因是这个ID的设置没有执行,另一个就是MQTT 的 Broker建立的有问题。因此这次我采用了树莓派ZeroW在局域网内来建立。
这里采用的是mosquitto开源软件,在树莓派上编译并运行。这里我们不详细介绍在树莓派上布置mosquitto的相关信息,感兴趣的话可以baidu一下,信息还是很多的。
环境参量获取
这里实现了三个函数,分别是读取温度,读取湿度和读取亮度。
发布环境变量信息
当读取完环境参量后,我们向MQTT服务器发布三条信息。
订阅控制信息及处理
在MQTT链接成功建立后,向服务器发布订阅信息。
通过“接受到的MQTT消息”块,获取MQTT的控制信息,由于系统没有提供更多的处理功能,所以支持选取最简单的信息内容,采用1-6这6个数字,每个数字分别代表一个控制量,这里模拟RGB小灯的红灯和绿灯共6个状态。
MQTT的运行信息监视
通过MQTTX这个软件,我们可以作为监视调试窗口,看到所有M1的信息发布,和订阅的控制信息传输。
Node-Red搭建的采集和控制系统
node-red系统的搭建大家可以在网上查一下,由于不是重点,这里也不介绍整个系统的搭建过程。
在node-red中搭建的温度采集和控制流图。
在dashboard中看到的采集温度图和红绿灯控制接口。
测试总结
实际测试过中,发现M1的MQTT网络连接效果不是太好,整体运行很难持续较长的时间,基本30分钟左右会出现断联的情况。这种情况是如何发生的,目前还没有找到原因。
mqtt发布信息和接收控制信息
|