本帖最后由 evantalk 于 2021-1-14 18:47 编辑
看到论坛有人提到“攀藤G5003ST ”模块,支持采集pm2.5、甲醛、温湿度,支持串口输出数据,可以通过ESPHome接入HA,果断买了一个。
最基础的颗粒物检测只要60多,加上甲醛检测需要多加100
线就能轻松秒杀,(5V、GND给模块供电,rx接模块的tx)。 代码如下:
uart:
rx_pin: GPIO03
baud_rate: 9600
sensor:
- platform: pmsx003
type: PMS5003ST
temperature:
name: "temperature"
id: tmp
pm_2_5:
name: "pm25"
id: p25
humidity:
name: "humidity"
id: hmd
formaldehyde:
name: "hcho"
id: hh
打开ESPHome自带的web页面 HA能自动发现esphome的设备 基础教程到处结束 ======================================================================= 以下是进阶教程 显示屏 想想成品的设备都有一个小屏幕可以查看数据,我也来弄一个ssd1306的屏幕,反正手头有存货。设计了2个页面,start_page为开机页面,state_page为数据显示页面。增加代码如下:
i2c:
sda: GPIO4
scl: GPIO2
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
address: 0x3C
pages:
- id: start_page
lambda: |-
it.line(64, 20, 64, 44);
it.line(50, 32, 78, 32);
- id: state_page
lambda: |-
it.line(64, 20, 64, 44);
it.line(50, 32, 78, 32);
it.printf(5, 23, id(font_S), TextAlign::BASELINE_LEFT, "%d µg", int(id(p25).state));
it.printf(5, 60, id(font_S), TextAlign::BASELINE_LEFT, "%d µg", int(id(hh).state));
it.printf(70, 23, id(font_S), TextAlign::BASELINE_LEFT, "%.1f °C", id(tmp).state);
it.printf(70, 60, id(font_S), TextAlign::BASELINE_LEFT, "%.1f %%", id(hmd).state);
为了屏幕拆装方便,还特定焊接了母座,屏幕可以插在上面,因为设备检测时需要良好得通风,所以懒得做外壳了,就这样裸着用。 休眠 模块运行后,数据实时采集,频率还刷新频率还挺高得,其实家用纯属浪费,网页上设备的针脚定义如下: 将模块的set脚飞一根线接入nodemcu的D1针脚,增加代码如下:
switch:
- platform: gpio
pin: GPIO5
name: "en_switch"
id: relay
on_turn_on:
- display.page.show: state_page
- delay: 60s
- switch.turn_off: relay
time:
- platform: homeassistant
on_time:
# Every 10 minutes
- seconds: 0
minutes: /10
then:
- switch.turn_on: relay
给nodemcu的gpio5口定义成一个开关,再通过定义time去控制这个开关,每隔10分钟打开一下。开关打开后,on_turn_on中的逻辑,显示数据页面,延时一分钟后,关闭自己。 当然,也可以在HA中手动打开和关闭这个开光,决定模块是否休眠。
翻车记录 一开始用D8(gpio15)作为switch开关的引脚,发现安装了以后,nodemcu无法启动;但是nodemcu先启动后,再接攀藤模块可以正常使用。这个问题搞了很长时间,一度还接受可这个缺陷。 后来换了一个针脚到D1,一切正常了。 |