本帖最后由 智控源码君 于 2026-7-8 19:26 编辑
门锁已经接进 HA 了,实体是 lock.front_door,手机定位(person 实体)和人在传感器也都有。最近想做一个"回家自动开门"的联动,但越想越觉得逻辑上有不少隐患,写出来请各位帮忙拍拍砖。
我现在的写法是这样的(YAML):
automation:
- alias: 回家自动开门
trigger:
- platform: state
entity_id: person.zhangsan
to: "home"
condition:
- condition: state
entity_id: lock.front_door
state: "locked"
- condition: sun
after: sunset
before: sunrise
- condition: state
entity_id: binary_sensor.someone_home
state: "on"
action:
- service: lock.unlock
target:
entity_id: lock.front_door
- delay: "00:05:00"
- service: lock.lock
target:
entity_id: lock.front_door
mode: single
但我对几个地方心里没底,想请教:
1. 定位漂移导致误开门
手机 GPS 偶尔会跳变,或者人只是路过家门口,person 实体会不会瞬间变成 home 然后触发开门?大家一般怎么防这种误触发?是加一个"在区域内停留超过 X 秒"的判定,还是干脆用门前的存在传感器代替定位?
2. 开锁后的自动重新上锁
我现在是 delay 5 分钟再锁,但如果这 5 分钟里人又走出去了,会不会出现"刚锁上又判断在家"的循环?有没有更稳的兜底写法?
3. 门锁状态 unknown / unavailable 时的处理
HA 重启或者门锁短暂掉线,实体会变成 unavailable。等状态恢复的那一刻,这个自动化会不会误判"门是锁着的"然后去开锁?需不需要额外判断实体状态是可用的?
4. 安全性兜底
自动开门毕竟是个有风险的动作。除了我上面写的几个 condition,社区里一般还建议加哪些兜底?比如是不是只应该在"门当前是锁着的状态"下才开(这个我加了),还有没有别的?
大家是怎么处理"人在家→开门"这种联动的?有没有更稳妥的写法或者现成的思路?先谢过。
|