在智能家居的各种场景里,“离家模式”绝对是平时使用频率最高、最能提升幸福感的自动化之一。一个合理的离家自动化,能帮我们在关门出门后,在家里没人的情况下,自动关闭所有无用的电器(比如客厅卧室的灯、空调、风扇、电视等),同时把家里的安防摄像头切换到布防告警状态。
在折腾智能家居这几年里,我家目前主要保留了 4 种触发离家模式的方式(共同存在):
- 玄关入户86盒智能开关(长按):出门换鞋顺手长按一下;
- 手机/手环设备追踪:全家所有人离家超过 30 分钟且无人移动,自动兜底开启离家模式;
- 钥匙扣蓝牙防丢器(单击):拿钥匙出门时顺手按一下,这个老年人用起来最简单,我之前的帖子有讲过,花了2.9元买的,是蓝牙BLE协议的;
- 玄关上墙平板中控的手势识别:换好鞋走到门口,对着墙上的中控平板比一个手势,离家场景瞬间执行。
今天这篇文章,我就想跟大家分享一下:如何利用 Home Assistant + 玄关上墙平板(或闲置监控),通过手势识别来优雅触发“离家模式”。当然,手势识别不仅能用来开离家模式,还可以用来开关指定灯光、执行自定义脚本或联动任何 HA 自动化,离家模式只是最实用也最帅气的一个示例。
一、系统原理与准备工作
整套系统的运作逻辑非常清晰直接:
[安卓上墙平板 / 监控摄像头]
│ (RTSP 实时视频流)
▼
[HA 手势识别加载项 (Google MediaPipe 引擎)]
│ (毫秒级骨骼点识别 / 1S防抖复位 / 状态守护)
▼
[MQTT Broker (EMQX / Mosquitto)]
│ (MQTT 自动发现实体)
▼
[Home Assistant 自动化引擎] ──► 触发【离家模式】(关灯/关空调/摄像头布防)
需要准备的软硬件:
- Home Assistant 系统(Supervised 或 OS 架构,支持安装 Add-on 加载项);
- MQTT 服务器与 HA 集成(如官方 Mosquitto Broker 或自建 EMQX);
- 视频采集源:一台安装在玄关的安卓上墙平板,或者一台普通的家用 RTSP 监控摄像头;
- 手势识别加载项:基于 Google MediaPipe 的高性能 HA 插件。
二、为什么放弃传统Android IP Webcam?我的痛点与解决方案
前两年我刚开始折腾手势识别时,是用开源的 Hand Gesture Recognition HA-Addon 配合安卓手机/平板上的 Android IP Webcam 这个app软件来推流。
但在实际使用中,我发现了几个非常现实的痛点:
- 发烫与耗电:家用监控摄像头 24 小时开着录像没问题,但上墙的平板中控如果 24 小时常开摄像头,平板发热非常严重,而且电池半天就耗光了,严重影响平板使用寿命;
- 缺乏远程控制能力:Android IP Webcam 无法很好地配合 HA 的人体传感器进行“按需启停”。
我真正理想的需求是:只有玄关有人经过时,才提前唤醒并开启平板摄像头推流;等玄关没人 1 分钟后,自动关闭平板摄像头,恢复省电休眠。
为了解决这个问题,今年上半年我借助 Google AI 专门为这台安卓平板定制开发了一款监控推流 App,在三星平板和联想平板上测试过。它内部集成了 MQTT 客户端与轻量级视频流服务,Home Assistant 可以通过 MQTT 开关实体直接远程控制平板摄像头的开启与关闭,平板监控app大致效果如下图!
💡 小提示:如果你使用的是现成的家用 RTSP 监控摄像头(本来就是常开推流),那完全不需要额外安装 App;如果你也用安卓平板当中控,后续我也会把这个 APK 安装包整理上传到 GitHub 上供大家下载使用,或者大家也可以用 Google AI 自己开发这个专属的app。
三、加载项核心特性与 8 种手势支持
本加载项基于 Google MediaPipe 高性能视觉推理库开发,针对 Home Assistant 的联动场景做了深度优化,这个加载项应用我也是通过Google AI来定制开发的,已经使用了4个月:
1. 支持 8 种高识别度手势
- ✊ 握拳 (Fist)
- 👋 张开挥手 (Wave)
- ✌️ 剪刀手 (Victory)
- 👍 点赞 (Thumbs Up)
- 👎 踩 (Thumbs Down)
- ☝️ 食指指向 (Point Up)
- 🤟 摇滚 (Rock On)
- 👌 OK 手势 (OK)
2. 关键优化亮点
- 纯净状态推送:MQTT 中推送纯净的英文代号(如
Victory、Fist),日志中保留生动的 Emoji 表情,写自动化极其方便;
- 1 秒防抖自动复位:识别出手势后,传感器会在 1 秒后自动恢复为
None 状态,为下一次自动化触发做好准备,避免状态粘滞;
- 断线自适应静默重连:当平板关闭摄像头或家用监控断电时,后台自动进入守护重连,并在 MQTT 中同步更新连接状态实体,绝不崩溃;
- MQTT 自动发现(即插即用):启动即可自动在 HA 中生成传感器,无需在
configuration.yaml 中手动写代码。
四、加载项安装与配置指南
该加载项应用已经上传到我的GitHub 仓库地址:
🔗 https://github.com/bugensui2022/-ha-hand-gesture-addon
1. 安装步骤
- 打开 Home Assistant,进入 设置 ➔ 应用 ➔ 加载项应用商店;
- 点击右上角三点,选择 存储库 (Repositories),添加上述 GitHub 仓库链接;
- 刷新后在商店最下方找到 Hand Gesture Recognition,点击 安装。
2. 配置参数说明
安装完成后,进入加载项的 “配置” 页面,填写对应参数:
| 配置项 |
说明与示例 |
rtsp_url |
视频流地址,例如平板推流地址或摄像头 RTSP 地址 rtsp://192.168.1.100:8554/live |
mqtt_host |
MQTT 服务器 IP,例如 192.168.1.2(若用本机 Mosquitto 可填 core-mosquitto) |
mqtt_port |
MQTT 端口,默认 1883 |
mqtt_user |
MQTT 登录用户名(若无鉴权可留空) |
mqtt_password |
MQTT 登录密码 |
mqtt_topic |
手势状态推送主题,默认 homeassistant/sensor/hand_gesture/state |
reconnect_interval |
视频流断开后的重连间隔秒数,默认 5 秒 |
sensor_name |
定义该手势传感器在 Home Assistant 中显示的设备友好名称(如玄关中控中控)。 |
reset_hand_status_time |
手势识别触发后自动恢复为 None 空闲状态的倒计时秒数(默认1秒,用于防重复误触并确保下次手势能正常触发自动化)。 |
保存并启动加载项,查看加载项日志,当看到 成功注册实体!Home Assistant 传感器已同步发布 即代表运行正常。
3. 在 HA 中查看实体
进入 HA 设置 ➔ 设备与服务 ➔ MQTT,你会看到新发现的设备,包含两个核心实体:
sensor.hand_gesture_status:手势识别状态传感器(值为 Victory、Fist、None 等);
binary_sensor.hand_gesture_stream_connected:视频流在线状态(已连接/已断开)。
五、编写 HA 离家自动化示例
拿到手势实体后,自动化就非常简单了。比如我们在出门前比一个 ✌️ 剪刀手 (Victory),触发执行离家脚本:
alias: "手势识别 - 触发离家模式"
description: "玄关平板识别到剪刀手手势,自动执行离家自动化"
trigger:
- platform: state
entity_id: sensor.hand_gesture_status
to: "Victory"
condition: []
action:
- action: light.turn_off
target:
entity_id: all
- service: climate.turn_off
target:
entity_id: all
- action: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.home_alarm
- action tts.speak
target:
entity_id: tts.google_en_com
data:
media_player_entity_id: media_player.living_room_speaker
message: "已识别手势,离家模式已启动,祝您出行愉快!"
mode: single
六、总结与思考:手势识别在智能家居中的定位
折腾完这套系统,出门前的交互体验确实提升了一大截。双手提着垃圾袋或者刚换好鞋时,抬头对着平板随意比一个手势,家里的灯光电器应声全关,那种科技感和仪式感真的非常酷炫。
但平心而论,手势识别在智能家居中并不是为了取代其他交互方式,而是一种非常棒的“场景化补充”。
在实际生活中:
- 躺在沙发上,语音控制更自然;
- 远程在办公室,手机 App 查看最放心;
- 随手路过房间,无线物理按键反馈最扎实;
- 而环境温湿度与光照,则完全交给无感自动化处理。
手势识别则完美填补了“特定位置(如玄关、厨房、客厅)不需要触碰屏幕、不想发出声音”时的交互空白。多一种选择,就多一份智能家居的乐趣!