『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 61498|回复: 55

nodemcu+ssd1306=低成本HA状态显示屏

  [复制链接]

46

主题

641

帖子

4411

积分

元老级技术达人

积分
4411
金钱
3740
HASS币
120
发表于 2020-6-13 22:10:09 | 显示全部楼层 |阅读模式
本帖最后由 evantalk 于 2020-6-27 21:29 编辑

本人是个强迫症患者,出门必须把灯和门(露台)检查一遍,确认都关了才放心走。这些状态HA面都有,在门口鞋柜上放过一个平板,用了一段时间觉得还是不够好,存在三个问题。

  • 位置太低,需要低头查看
  • 屏幕常亮晚上不舒服,锁屏又不能实现检测人体后自动解锁,只能做到挥手解锁。
  • 小孩常常拿走玩游戏,这个真的头疼。

经过一番探索,利用nodemcu+ssd1306,刷ESPHOME实现了这个功能,非常满意,先上图,附件是视频。
IMG_20200613_211043-1536x1375.jpg
VID_20200613_210942.mp4 (4.69 MB, 下载次数: 268)
图片.zip (13.1 KB, 下载次数: 68)
  • 左上角显示灯泡图标,表示家里有灯亮着
  • 右上角显示门图标,表示家里户外们开着
  • 右下角显示风扇图标,表示空调开着
  • 左下角空闲中。。。
  • 中间的数字表示今日的空气质量

IMG_20200613_215506-707x1536.jpg
利用门口一块空盖,把模块都塞在里面,把屏幕和人体感应器露在外面,检测到人体运动解锁显示状态,过一段时间又自动锁屏。

所需材料:
  • nodemcu一个,14元
  • 杜邦线几条,忽略
  • ssd1306_i2c屏幕一块,16元
  • 5V电源模块一个,6元
  • AM315人体传感器一个,5元

图片说明:
下载合适的图片,利用photoshop制作32×32带有透明通道的png图片,放入esphome的yaml文件同一个目录下
image-15.png

代码说明:
代码说明
参考文档:
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));
          }




评分

参与人数 6金钱 +54 HASS币 +20 收起 理由
gtyun + 5
zin + 4 纳尼,还有这种操作?
情非殇 + 10 赠人玫瑰,手留余香!
+ 20 + 20 膜拜大神!
Jerrylee + 5
chinyaolin + 10 我也是在門口放了台平板 樓主的點子也很不.

查看全部评分

回复

使用道具 举报

70

主题

596

帖子

3409

积分

论坛元老

Rank: 8Rank: 8

积分
3409
金钱
2813
HASS币
0
发表于 2020-6-13 22:35:13 | 显示全部楼层
不错,屏能再大点更好。
回复

使用道具 举报

46

主题

641

帖子

4411

积分

元老级技术达人

积分
4411
金钱
3740
HASS币
120
 楼主| 发表于 2020-6-13 23:18:41 | 显示全部楼层
lrving163 发表于 2020-6-13 22:35
不错,屏能再大点更好。

的确是,再大一点,图标可以更大,看起来更舒服
回复

使用道具 举报

3

主题

119

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
金钱
1258
HASS币
10
发表于 2020-6-13 23:28:26 | 显示全部楼层
evantalk 发表于 2020-6-13 23:18
的确是,再大一点,图标可以更大,看起来更舒服

屏幕大一点价格贵几倍
回复

使用道具 举报

14

主题

660

帖子

3959

积分

论坛元老

Rank: 8Rank: 8

积分
3959
金钱
3294
HASS币
10
发表于 2020-6-14 01:31:51 | 显示全部楼层
能不能扣个屏幕的长方形 和人体感应一样放里面
回复

使用道具 举报

73

主题

1165

帖子

6641

积分

论坛元老

Rank: 8Rank: 8

积分
6641
金钱
5471
HASS币
30
发表于 2020-6-14 06:54:49 | 显示全部楼层
我用的淘汰手机做的中控屏,也不用哪些花里胡哨的界面,只是用了类似win10方块按钮,这样一个屏幕分成大概20几个大方块按钮,常用的控制和查看都非常方便。
其实平板自动熄屏比较简单:
tasker+mqttclient与hass联动。
无人在家:熄屏
家中警戒:熄屏
客厅无人:熄屏
这样一天算下来,屏幕也没有开启多长时间。
回复

使用道具 举报

70

主题

596

帖子

3409

积分

论坛元老

Rank: 8Rank: 8

积分
3409
金钱
2813
HASS币
0
发表于 2020-6-14 08:57:51 | 显示全部楼层
xuyang 发表于 2020-6-14 06:54
我用的淘汰手机做的中控屏,也不用哪些花里胡哨的界面,只是用了类似win10方块按钮,这样一个屏幕分成大概2 ...

方案很实用,有没有详细教程,小白一个
回复

使用道具 举报

46

主题

641

帖子

4411

积分

元老级技术达人

积分
4411
金钱
3740
HASS币
120
 楼主| 发表于 2020-6-14 11:25:36 来自手机 | 显示全部楼层
余歌唱晚 发表于 2020-6-14 01:31
能不能扣个屏幕的长方形 和人体感应一样放里面

圆的转一个洞就好,方的,手工弄得平整太难了
回复

使用道具 举报

46

主题

641

帖子

4411

积分

元老级技术达人

积分
4411
金钱
3740
HASS币
120
 楼主| 发表于 2020-6-14 11:29:08 | 显示全部楼层
本帖最后由 evantalk 于 2020-6-14 11:34 编辑
xuyang 发表于 2020-6-14 06:54
我用的淘汰手机做的中控屏,也不用哪些花里胡哨的界面,只是用了类似win10方块按钮,这样一个屏幕分成大概2 ...

IMG_20200614_080109.jpg
你说的是这种吗?这个我也有
对于强迫症的我来说,还是不够直观
回复

使用道具 举报

73

主题

1165

帖子

6641

积分

论坛元老

Rank: 8Rank: 8

积分
6641
金钱
5471
HASS币
30
发表于 2020-6-14 15:01:33 | 显示全部楼层
本帖最后由 xuyang 于 2020-6-14 15:09 编辑
evantalk 发表于 2020-6-14 11:29
你说的是这种吗?这个我也有
对于强迫症的我来说,还是不够直观
温度显示直接不需要,按钮还可以再大一点。实际使用来看:在家中枢纽位置,设置手机中控屏,三行,大概20个按钮,就足够用了。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 22:37 , Processed in 0.190763 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表