背景

出门遛娃时懒得锁门带钥匙,客厅的米家摄像头云台3有看家助手功能,有人移动时手机会发通知,但是如果一直开启,正常有人在家时也会通知。所以需要人出门时开启,回家时关闭,而且家里有多人。一般情况在家手机都会连WIFI,出门就断开,可以考虑用WIFI 来识别有没有人在家。好像现在新款的路由器有「WIFI 电子围栏」功能,我的没有,但是可以用ARP 命令曲线实现类似功能。

方案

要求:局域网内要有一台长时间运行的小设备,比如树莓派、NAS、玩客云等,路由器本身应该也可以。

原理:在小设备上每分钟运行ARP 命令获取局域网内设备,匹配到特定的MAC地址就表示在家,否则是离家,然后调用HA 接口控制摄像头。

  1. 在小设备上安装 Home Assistant米家插件 ,教程很多不赘述。

  2. 安装完之后在HA 上就能看到米家摄像头设备,看家助手的开关叫「移动侦测」,如「小米智能摄像机3 云台版 移动侦测 」,复制其「实体标识符」,switch. 开头的就是

  1. 生成HA 的「长期访问令牌」,路径是 左下角用户头像->安全->长期访问令牌

  2. 获取家人的手机MAC 地址,类似这种 00:0A:02:0B:03:0C,在路由器后台或手机WIFI设置里都能找到。

  3. 将 「实体标识符」、「长期访问令牌」和「MAC地址」复制到下面Python脚本(AI写的),配置crontab,每分钟运行一次。

问题

  1. ARP 有缓存,缓存时间系统可配置,通常是1分钟,所以有延迟,问题不大;

  2. 运气不好会出现在家门口就连上WIFI,然后开启看家,自己开门后就收到画面变动通知,可以把crontab间隔调大点。