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

标题: ESPHome 轻松实现房间内人员计数 [打印本页]

作者: louis_lee    时间: 2020-10-25 23:09
标题: ESPHome 轻松实现房间内人员计数
本帖最后由 louis_lee 于 2020-10-25 23:10 编辑

1.缘起
坐在马桶上忽然灯灭了,坐着干会活突然陷入黑暗,感觉现有PIR人体传感器基本都会陷入这种尴尬场景。一直苦思冥想,想找到一个合适的判断是否有人的感应装置,无奈人体存在感应器价格太贵,也不知道效果是否理想。后来忽然发现论坛大佬@neroxps的神贴https://bbs.hassbian.com/thread-6185-1-1.html,惊叹一声牛B。无奈电路啥的硬件纯小白,用红外对管看起来安装比较麻烦;用VL53L0X传感器,还涉及到I2C啥的,不是很懂,也懒得重头学,只得作罢。
2.硬件
2.1传感器
某天淘宝中闲逛,发现一个简单的神器,光电反射开关,感觉瞬间解决了我的问。简单好用,学习成本低,而且不用对射,省去安装的麻烦。另外,可以安装在桌下等地方,看不见,也就不妨碍装修风格。当然啦,前提是房间门附件有个桌子或是其他可以隐蔽安装的家具。
大概是长这样的:
[attach]25410[/attach]

[attach]25411[/attach]
原理非常简单易懂,当反射距离大于/小于阈值时(通过螺丝调节)时,输出高/低电平。通过两个光电反射二元传感器的时间差,可以判断进/出房间,如同上述帖子提到的一样。
2.2接线
根据选用的开发板不同,引脚有差异,以我购买的ESP32S node-mcu开发板来说,如图(灵魂接线图哈哈

[attach]25412[/attach]
另外电源我就选用了3米长的microUSB联到桌下的插线板上
3.esphome刷写固件
大佬用的我都不会用,只能用esphome这种简单的刷固件方式喽
  1. esphome:
  2.   name: 随便起个名吧
  3.   platform: ESP32
  4.   board: nodemcu-32s

  5. wifi:
  6.   ssid: "你的WiFi名"
  7.   password: "你的WiFi密码"

  8.   # Enable fallback hotspot (captive portal) in case wifi connection fails
  9.   ap:   
  10.     ssid: "Esphome 32 Fallback Hotspot"
  11.     password: "zrSLkHpn8Ufd"

  12. captive_portal:

  13. # Enable Home Assistant API
  14. api:
  15.   password: "自定义一个密码"

  16. ota:
  17.   password: "自定义一个密码"

  18. binary_sensor:
  19.   - platform: gpio
  20.     pin:
  21.       number: GPIO22
  22.       mode: INPUT_PULLUP
  23.       inverted: True
  24.       name: throughs_sensor_1
  25.   - platform: gpio
  26.     pin:
  27.       number: GPIO18
  28.       mode: INPUT_PULLUP
  29.       inverted: True
复制代码

4.home assistant集成
利用HA 的自带集成工具就可以把传感器集成到HA上,自动化建议在node-red上做,我觉得用neroxps大佬的那个就行。但这个传感器不能识别距离比较近的两个人,比如说你和你老婆抱着就走进来了
所以建议加些逻辑,比如说联合其它传感器一起使用,利用其它传感器进行纠错。还可以加些重置计数的逻辑,比如说所有人离开家就重置计数等等,我觉得还是可以提高传感器的准确率的。





作者: 0703005    时间: 2020-10-26 15:45
这个不错,以前也有坐在马桶上灯就关了,一直想着用人体传感器去实现,但总有瑕疵。
作者: evantalk    时间: 2020-10-26 21:34
这个跟HC-SR04 超声波测距模块是一个原理吗?
作者: louis_lee    时间: 2020-10-26 23:24
evantalk 发表于 2020-10-26 21:34
这个跟HC-SR04 超声波测距模块是一个原理吗?

类似吧,没用过超声波测距,不知道效果如何。红外线测距还是比较稳定的
作者: jyz_0501    时间: 2020-10-27 19:02
超声应该比这个好隐藏一些。计数原理一样。
作者: huang7dede    时间: 2020-10-29 09:58
就是同样的货得买2个咯
作者: guitengyue    时间: 2020-11-2 08:11
0703005 发表于 2020-10-26 15:45
这个不错,以前也有坐在马桶上灯就关了,一直想着用人体传感器去实现,但总有瑕疵。 ...

为什么没人提洗澡的时候灯关了。。。
作者: guitengyue    时间: 2020-11-2 08:12
lz,你的这个是要正对门安装? 或者是要朝着人走的方向安装?
作者: needs    时间: 2020-11-4 16:37
已撸4个,等周末接一下试试效果
作者: louis_lee    时间: 2020-11-5 02:05
guitengyue 发表于 2020-11-2 08:12
lz,你的这个是要正对门安装? 或者是要朝着人走的方向安装?

垂直于人走的方向装哈
作者: louis_lee    时间: 2020-11-5 02:06
guitengyue 发表于 2020-11-2 08:11
为什么没人提洗澡的时候灯关了。。。

我之前分享过一个洗澡关灯的解决方案哈哈
作者: louis_lee    时间: 2020-11-5 02:08
huang7dede 发表于 2020-10-29 09:58
就是同样的货得买2个咯

是的哈,就俩传感器,通过不同顺序判断进出
作者: wfx    时间: 2020-11-5 17:16
up分享一下node-red的配置吗

作者: shayulei    时间: 2020-11-6 09:52
0703005 发表于 2020-10-26 15:45
这个不错,以前也有坐在马桶上灯就关了,一直想着用人体传感器去实现,但总有瑕疵。 ...

我家厕所也有这个问题,如果用这个实现,怎么判断人出去了!
作者: needs    时间: 2020-11-11 11:23
本帖最后由 needs 于 2020-11-11 11:28 编辑
shayulei 发表于 2020-11-6 09:52
我家厕所也有这个问题,如果用这个实现,怎么判断人出去了!

2个传感器进出方向不同,出去的顺序是
SENSOR2_ON->SENSOR2_OFF->SENSOR1_ON->SENSOR1_OFF
进来的顺序是
SENSOR1_ON->SENSOR1_OFF->SENSOR2_ON->SENSOR2_OFF

作者: deyu260    时间: 2020-11-18 19:15
太厉害了

作者: 45348289    时间: 2020-11-30 16:31
感谢分享
作者: koymeha    时间: 2020-12-6 07:26
这个方案很好啊,感觉比人体传感器靠谱的多啊
作者: huang7dede    时间: 2020-12-8 10:09
这方案不是还是计数吗?
我要的是房间人体存在

比如,你坐在沙发玩手机,一动不动,,他不就检测不到了.
作者: a1324256    时间: 2021-8-10 17:32
huang7dede 发表于 2020-12-8 10:09
这方案不是还是计数吗?
我要的是房间人体存在

很简单啊,只要房间人员计数不是0,就是有人在屋子
作者: bainiu    时间: 2021-10-29 15:54
本帖最后由 bainiu 于 2021-10-29 15:55 编辑

1、楼主这个计数效果应该很好吧,利用前后触发时间差判断进还是出。
2、当然这两个探头是要垂直安装在人员经过的通道上,如果没有遮蔽物,安装后就可能不美观。
3、node-mcu要接通过220V插座用电转换,旁边没有插座也不太好安装,延长线太长不好隐藏。
4、如果过道上有个插座86盒子的话,能不能在空白面板上开两个孔,安装探头,并在里面取电,但这么短距离,只有厘米间隔,反应到hass上的时间差应该是ms级了,不知道在nodered上自动化还能不能判断先后。
5、我依照楼主的思路在过道上粘了两个zigbee人体传感器,触发间隔时间1个是1至2S,另一个是硬改的aqara人体5S,利用触发先后,判断人员进出,用input_boolean计数,目前稳定。


作者: tangli159    时间: 2021-11-11 22:29
bainiu 发表于 2021-10-29 15:54
1、楼主这个计数效果应该很好吧,利用前后触发时间差判断进还是出。
2、当然这两个探头是要垂直安装在人员 ...

可以默默地蹲一个你的配置文件么,很感兴趣
作者: sailingfan    时间: 2021-12-1 17:05
mark  记录一下~

作者: s450586793    时间: 2021-12-6 11:52
bainiu 发表于 2021-10-29 15:54
1、楼主这个计数效果应该很好吧,利用前后触发时间差判断进还是出。
2、当然这两个探头是要垂直安装在人员 ...

你好,请问一下,你的两个zigbee人体传感器是哪家的?
作者: bainiu    时间: 2021-12-6 12:38
s450586793 发表于 2021-12-6 11:52
你好,请问一下,你的两个zigbee人体传感器是哪家的?

我的zigbee人体乱买的,喜欢折腾,买了好多种:sonoff 的、涂鸦的、 aqara的、Feibit的
作者: bainiu    时间: 2021-12-6 13:01
tangli159 发表于 2021-11-11 22:29
可以默默地蹲一个你的配置文件么,很感兴趣

我这个比较简单,比如卧室里没有人时进1人设个自动化如下,用两个虚拟状态记录人数。如何判断人进,就是卧室内侧人体刚触发时,外侧的人体状态是触发的,就判断进1个人。因为两个体传感器距离比较近,1米左右吧,所以要求两个人体传感器的刷新时间在5S以内(就是触发on后,5S后能重置,显示off),短时间的刷新才能解决人进去马上再出来也会触发;卧室外侧人体刚触发时,内侧人体状态是触发的。就判断为从卧室里出来1个人。我这个计数配合短时间刷新的人体基本无误差,当然如果两个人同时进出就判断不了,只要是间隔5S的人员进出都能判断准确。有了准确的房间人数这个状态,可以做许多自动化了。

  1. alias: 43-主卧没人进1人
  2. description: ''
  3. trigger:
  4.   - platform: state
  5.     entity_id: binary_sensor.zhu_wo_nei_che_ren_ti_chuan_gan_qi_occupancy
  6.     from: 'off'
  7.     to: 'on'
  8. condition:
  9.   - condition: state
  10.     entity_id: input_boolean.zhuwo_home1
  11.     state: 'off'
  12.   - condition: state
  13.     entity_id: input_boolean.zhuwo_home2
  14.     state: 'off'
  15.   - condition: state
  16.     entity_id: binary_sensor.zhu_wo_wai_ce_ren_ti_chuan_gan_qi_occupancy
  17.     state: 'on'
  18. action:
  19.   - service: input_boolean.turn_on
  20.     target:
  21.       entity_id: input_boolean.zhuwo_home1
  22. mode: single
复制代码

作者: lastdanger01    时间: 2021-12-14 15:22
needs 发表于 2020-11-11 11:23
2个传感器进出方向不同,出去的顺序是
SENSOR2_ON->SENSOR2_OFF->SENSOR1_ON->SENSOR1_OFF
进来的顺序是

请教一下 这要如何设定sensor有前后顺序,是要加上delay吗 谢谢
作者: jasona3    时间: 2022-10-23 22:33
用距离传感器1个搞定。又小巧。
打算做几个,有需要的可以私我。
作者: chinahuanqiu    时间: 2022-11-3 17:19
jasona3 发表于 2022-10-23 22:33
用距离传感器1个搞定。又小巧。
打算做几个,有需要的可以私我。

您微信多少?我需要。




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5