本帖最后由 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一下权限。
防止有人没有科学上网,我也贴附件里面吧。
services.yaml
(637 Bytes, 下载次数: 4)
set_state.py
(1.87 KB, 下载次数: 2)
2、修改配置文件并重启
configuration.yaml里面加一行
来让插件生效。对,没错,这里是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"
|