CH582M低功耗蓝牙温湿度传感器接入HASS

发布于:2024-08-17 ⋅ 阅读:(230) ⋅ 点赞:(0)

一、低功耗温湿度仪

  1. 参考开源温湿度仪进行制作:https://oshwhub.com/hotant/wireless-temperature-and-humidity-detector-414381a
  2. 使用V3版本,即CH582F的芯片,具有更低的功耗。
  3. 在源码中,可以增加广播时间,默认是1s,可以通过手机蓝牙识别到。更改到10s后,减少功耗,并仍可以通过后续的网关进行识别。
    在这里插入图片描述

二、ESP32 MQTT网关

  1. 使用硬件ESP32-C3,其具有4M的flash。
  2. 使用固件OpenMQTTGateway,需要进行相应的配置才可以适配,配置可以参考视频
  3. 下载OpenMQTTGateway后,路径不能存在中文,否则编译错误。
  4. 进行配置,选择C3芯片,打开BT和HA找寻,设置MQTT的地址和账号密码(即后续的HASS中的MQTT)。
  5. 烧录后,使用wifi进行配网,其中注意配置MQTT的前缀,默认是home,但是需要根据HASS中的MQTT进行相应修改,最后可以在HASS中的MQTT中找到对应设备:
    在这里插入图片描述

三、HASS+Nodered配置

  1. 通过MQTT EXPLORER连接到HASS的MQTT,查看网关上传的数据。发现并未识别到温湿度仪的数据,需要在MQTT中对网关进行配置(设置更快的scan、关闭只找传感器的选项)。
  2. 发现设备后,在nodered中进行配置,逻辑如下:
    在这里插入图片描述
  3. 获取温湿度数据,即通过mqtt进行获取,找到对应的topic即可:
    在这里插入图片描述
  4. 从名字中解析温湿度数据并转换成合理数据
var dat = { payload: msg.payload.name };
// dat类型为 26.4C 69.3H 或者 " 26.4C 69.3H" 或者 "-26.4C 69.3H"
var temp = 0.0;
var humi = 0.0;

// 使用正则表达式解析温度和湿度数据
var matches = dat.payload.match(/([ -]?\d+\.\d+)C\s+(\d+\.\d+)H/);

if (matches && matches.length === 3) {
    // 第一个匹配项是温度
    temp = parseFloat(matches[1].trim());

    // 第二个匹配项是湿度
    humi = parseFloat(matches[2].trim());
}

var newMsg = { payload: { "temp": temp, "humi": humi } };
return newMsg;

  1. 发布数据到hass
    在这里插入图片描述
    在这里插入图片描述
  2. 之后就可以在HASS中看到数据,加入到主页即可。

四、WCH MESH测试

上述已经基本完成了功能,设置成10s,纽扣可以使用一两年时间。但是这种方式需要防止很多的esp32网关,同时实时性存在问题。
蓝牙mesh一直是我想要学习并测试的,参考资料如下:
https://www.cnblogs.com/cchHers/p/15470049.html
https://www.cnblogs.com/JayWellsBlog/category/2160216.html
https://www.cnblogs.com/JayWellsBlog/p/16266404.html

  1. 配网方式
    配网方式有两种,配网器配网和手机自配网。其中、手机自配网就得所有的节点都设置为自配网,可以实现更多的节点配网并可以通过手机进行设置。配网器配网可以实现 配网器+朋友节点+低功耗节点的方式,但是配网器flash限制、朋友节点内存限制,都导致无法存在太多的节点。
  2. 手机自配网注意事项:自配网中,需要将4个(包括MESH_LIB)都烧录到节点中,才可以正常运行。
    在这里插入图片描述
  3. 配网器配网:由于需要使用串口进行debug,而没有相应的设备,暂时无法进行测试。

五、后续待测试

  1. 测试配网器
  2. 测试低功耗节点
  3. 测试自定义数据,实现灯开关、pwm等功能。

网站公告

今日签到

点亮在社区的每一天
去签到