rainow 发表于 2024-4-15 16:51:35

人体传感器接入HA后一直显示有人的解决方案

本帖最后由 rainow 于 2024-4-15 16:55 编辑

之前有一个涂鸦的人体传感器(PIR),在涂鸦App内做的自动化工作正常,但是通过smartlife集成接入HA以后,发现全天大部分时间显示的都是有人,偶尔有那么几分钟显示无人:

这显然是有问题的,完全没办法用啊,于是就研究了一下,发现外网上有人给了思路,原因是传感器只通知HA触发有人移动,但是不通知HA无人移动(因为实际上是没有无人移动这个事件的),从有人移动变成有人移动是没有任何状态变化被触发的,所以解决方案也很简单:触发有人移动以后,过一两分钟后从HA把传感器强制置为无人状态。由于HA中传感器的状态是只读的,不能修改,所以需要用到一个插件(homeassistant_py_set_state),作用就是可以强制修改某个只读的状态。

详细步骤:
1、安装插件(TheBigNeo/homeassistant_py_set_state: Home Assistant Python Script to force set an entity state (github.com))
      这个很简单,HA配置目录(configuration.yaml所在的目录,对,不是custom_components下面)下面新建一个python_scripts文件夹,然后把services.yaml、set_state.py俩文件放进去就行。如果不是homeassistant账号下操作的话,记得chmod一下权限。
      防止有人没有科学上网,我也贴附件里面吧。



2、修改配置文件并重启
      configuration.yaml里面加一行
python_script: 来让插件生效。对,没错,这里是script不是scripts,上面的文件夹是scripts不是script。
      然后别忘了重启(最好在重启前在HA里面检查一下配置文件格式有没有问题:开发者工具-yaml配置-检查配置)。
      重启完以后看下开发者工具-服务 里面找一下有没有set_state,有就是生效了,没有就好好检查一下上面哪一步不对,比如是不是没有重启成功。
      

3、创建自动化
      这一步应该是最简单的了。大家自己发挥吧,我给一个示例
      
      
      
      记得把传感器ID改成你自己的。

4、效果
   

5、自动化的yaml
       触发条件:
platform: time_pattern
minutes: /2
      环境条件:
condition: state
entity_id: binary_sensor.ren_ti_chuan_gan_qi_motion
state: "on"
      动作:
service: python_script.set_state
data:
entity_id: binary_sensor.ren_ti_chuan_gan_qi_motion
state: "off"







rainow 发表于 2024-4-15 16:58:59

提交了两次帖子,一直出错,但是我出去看了一下列表里面还有俩同名帖子,但是点不进去,哪位管理帮忙给删掉吧,谢谢

godzqh 发表于 2024-4-16 13:08:24

学习一下!!
页: [1]
查看完整版本: 人体传感器接入HA后一直显示有人的解决方案