本帖最后由 evantalk 于 2020-6-27 21:29 编辑
本人是个强迫症患者,出门必须把灯和门(露台)检查一遍,确认都关了才放心走。这些状态HA面都有,在门口鞋柜上放过一个平板,用了一段时间觉得还是不够好,存在三个问题。
- 位置太低,需要低头查看
- 屏幕常亮晚上不舒服,锁屏又不能实现检测人体后自动解锁,只能做到挥手解锁。
- 小孩常常拿走玩游戏,这个真的头疼。
经过一番探索,利用nodemcu+ssd1306,刷ESPHOME实现了这个功能,非常满意,先上图,附件是视频。- 左上角显示灯泡图标,表示家里有灯亮着
右上角显示门图标,表示家里户外们开着 - 右下角显示风扇图标,表示空调开着
- 左下角空闲中。。。
- 中间的数字表示今日的空气质量
利用门口一块空盖,把模块都塞在里面,把屏幕和人体感应器露在外面,检测到人体运动解锁显示状态,过一段时间又自动锁屏。
所需材料: - nodemcu一个,14元
- 杜邦线几条,忽略
- ssd1306_i2c屏幕一块,16元
- 5V电源模块一个,6元
- AM315人体传感器一个,5元
图片说明: 下载合适的图片,利用photoshop制作32×32带有透明通道的png图片,放入esphome的yaml文件同一个目录下
代码说明: 代码说明参考文档:
sensor:
- platform: homeassistant
id: aqi
entity_id: sensor.aqi
internal: true
- platform: homeassistant
id: ac_power
entity_id: sensor.dts2626_power
internal: true
binary_sensor:
- platform: gpio
pin: GPIO23
name: "motion_sensor_xuanguan"
id: motion_sensor_xuanguan
device_class: motion
on_state:
then:
- if:
condition:
binary_sensor.is_on: motion_sensor_xuanguan
then:
- display.page.show: home_page
- if:
condition:
binary_sensor.is_off: motion_sensor_xuanguan
then:
- display.page.show: screen_protector
text_sensor:
- platform: homeassistant
id: group_lights
entity_id: group.all_lights
internal: true
- platform: homeassistant
id: group_doors
entity_id: group.out_doors
internal: true
font:
- file: 'font.ttf' #字体文件
id: font_L
size: 32
glyphs: 0123456789
image:
- file: "pig.png"
id: image_pig
resize: 128x64
- file: "light.png"
id: image_light
resize: 24x24
- file: "door.png"
id: image_door
resize: 24x24
- file: "ac.png"
id: image_ac
resize: 20x20 #可以重新指定图片大小,进行调整
i2c:
sda: GPIO22
scl: GPIO21
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
address: 0x3C
id: my_display
pages:
- id: screen_protector
lambda: |-
it.image(0, 0, id(image_pig));
- id: home_page
lambda: |-
it.printf(64, 20, id(font_L), TextAlign::TOP_CENTER, "%d", int(id(aqi).state));
if (id(group_lights).state == "on" ) {
it.image(6, 0, id(image_light));
}
if (id(group_doors).state == "on" ) {
it.image(98, 0, id(image_door));
}
if (int(id(ac_power).state) > 20){
it.image(98, 40, id(image_ac));
}
|