M5Atom+SHT31+MHZ19+HA

最近在逛HARDOFF的时候翻到了个熟悉的好东西,而且价格才110,所以直接入了。也算是捡了个大便

宜。(对我故意的

看外表只知道是M5 Atom的Matrix版,拆开来才发现里面有2个传感器,分别是测量CO2浓度的MH-Z19,以及温湿度计SHT31。

MHZ19用只2个pin作为数据,2个pin是供电,还是比较容易测量出来的,而且是标准的串口。网上已经有人写ATOM+MHZ19的demo了所以基本直接用。拿出万用表测量了一下,基本确定了走的是G19和G23。

SHT31也是2个pin数据2个pin电源,但是数据不是串口而是I2C。M5 ATOM的I2C除了白色4pin接口的grove之外就只有G21和G25,只需要在代码里改一下地址就好。虽然没有Atom的demo不过毕竟都是ESP32,能找到的代码还是很多的。

然后就是将MHZ19的demo代码和SHT31的组合起来就完成了:

实际测试发现MHZ19也自带有温度传感器,但是读不出数值变化,可能正是因为这个原因才加了个SHT31。

本来想着用这个5×5的Matrix滚动显示文字的,这样可以直接知道温湿度和CO2信息。但是试了下发现网上给的库基本都无法用,即便能滚动显示对于数字和英文小字母以及特殊符号处理都不好。所以最后只能放弃。目前用的是根据CO2浓度来RGB显示。之后会考虑将Martix分割成不同区块然后用不同颜色显示不同传感器得到数值的区间。这也算是没有屏幕的最优解了╮(╯▽╰)╭

然后就是HomeAssistant的联动了。传感器触发通知的话最好用的还是MQTT协议。

MQTT服务就是当传感器等设备触发时,会自动发送信息给MQTT服务器,服务器将该消息广播出去,监听的服务收到消息就可以进行解析以及后续处理。类似小型版本的推送服务器。

而且这样也不用去轮巡各传感器状态,也不用考虑各种API以及TLS/HTTPS问题。而且这个用得也挺广的参考示例也多。

之前用M5Stack尝试过连接web的云服务,各种蛋疼(毕竟TLS挡着),所以这类协议不走加密简单方便快捷反而对IoT这种性能不足的设备更加友好。

虽然也有针对ESP32的HA,不过那个太复杂了。我的需求仅仅只是将传感器数据发给HA记录/显示而已。自己写的东西反而最靠谱。

首先需要有一台MQTT服务器。这个可以自己在电脑上搭也可以用云服务。我的话则是直接在NAS上跑了一个(反正本身NAS就有在跑HA),可以配置listen地址和端口,如果是内网的话可以设置同一网段,建议配置上用户名和密码。

然后HA里配置了MQTT服务后就可以开启监听,剩下的就是ATOM这部分了。网上找了下确实有MQTT的发送demo,只需要自定义Topic名和payload,把数据塞入固定格式的JSON里发过去即可。

HA的MQTT设置里配置好对应的topic就能收到消息了。

之后根据官方的教程,修改HA的configuration.yaml,设置MQTT服务监听特定的Topic以及解析payload的JSON即可。保存重启HA后就能在overview里添加对应的传感器了。每次传感器更新数据就会发送给HA,HA就能同时显示以及记录。

所有的代码包括configuration.yaml的修改内容我都发到了GitHub Gist上,有兴趣的可以去看看。

不过这么说起来,我的M5Stack也确实吃灰很久了(

作者: bi119aTe5hXk

bi~

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

:b1 :b2 :b3 :b4 :b5 :b6 more »

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据