找回密码
 立即注册

微信扫码登录

搜索
查看: 889|回复: 14

[进阶教程] 给HomeAssistant装上眼睛:玄关平板手势识别自动离家布防实战

[复制链接]

240

主题

3539

回帖

1万

积分

元老级技术达人

积分
11931
金钱
8132
HASS币
100
发表于 2026-9-14 12:00:42 | 显示全部楼层 |阅读模式
本帖最后由 bugensui 于 2026-9-14 12:03 编辑

640.png

在智能家居的各种场景里,“离家模式”绝对是平时使用频率最高、最能提升幸福感的自动化之一。一个合理的离家自动化,能帮我们在关门出门后,在家里没人的情况下,自动关闭所有无用的电器(比如客厅卧室的灯、空调、风扇、电视等),同时把家里的安防摄像头切换到布防告警状态。

在折腾智能家居这几年里,我家目前主要保留了 4 种触发离家模式的方式(共同存在):

  1. 玄关入户86盒智能开关(长按):出门换鞋顺手长按一下;
  2. 手机/手环设备追踪:全家所有人离家超过 30 分钟且无人移动,自动兜底开启离家模式;
  3. 钥匙扣蓝牙防丢器(单击):拿钥匙出门时顺手按一下,这个老年人用起来最简单,我之前的帖子有讲过,花了2.9元买的,是蓝牙BLE协议的;
  4. 玄关上墙平板中控的手势识别:换好鞋走到门口,对着墙上的中控平板比一个手势,离家场景瞬间执行。

今天这篇文章,我就想跟大家分享一下:如何利用 Home Assistant + 玄关上墙平板(或闲置监控),通过手势识别来优雅触发“离家模式”。当然,手势识别不仅能用来开离家模式,还可以用来开关指定灯光、执行自定义脚本或联动任何 HA 自动化,离家模式只是最实用也最帅气的一个示例。


一、系统原理与准备工作

整套系统的运作逻辑非常清晰直接:

[安卓上墙平板 / 监控摄像头] 
        │ (RTSP 实时视频流)
        ▼
[HA 手势识别加载项 (Google MediaPipe 引擎)] 
        │ (毫秒级骨骼点识别 / 1S防抖复位 / 状态守护)
        ▼
[MQTT Broker (EMQX / Mosquitto)] 
        │ (MQTT 自动发现实体)
        ▼
[Home Assistant 自动化引擎] ──► 触发【离家模式】(关灯/关空调/摄像头布防)

需要准备的软硬件:

  1. Home Assistant 系统(Supervised 或 OS 架构,支持安装 Add-on 加载项);
  2. MQTT 服务器与 HA 集成(如官方 Mosquitto Broker 或自建 EMQX);
  3. 视频采集源:一台安装在玄关的安卓上墙平板,或者一台普通的家用 RTSP 监控摄像头;
  4. 手势识别加载项:基于 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大致效果如下图!

640.jpg

💡 小提示:如果你使用的是现成的家用 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. 安装步骤

  1. 打开 Home Assistant,进入 设置 ➔ 应用 ➔ 加载项应用商店;
  2. 点击右上角三点,选择 存储库 (Repositories),添加上述 GitHub 仓库链接;
  3. 刷新后在商店最下方找到 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 查看最放心;
  • 随手路过房间,无线物理按键反馈最扎实;
  • 而环境温湿度与光照,则完全交给无感自动化处理。

手势识别则完美填补了“特定位置(如玄关、厨房、客厅)不需要触碰屏幕、不想发出声音”时的交互空白。多一种选择,就多一份智能家居的乐趣!

评分

参与人数 2金钱 +20 收起 理由
rf5 + 10 高手,这是高手!
6907367 + 10 高手,这是高手!

查看全部评分

公众号:Home Assistant分享
回复

使用道具 举报

5

主题

68

回帖

1515

积分

金牌会员

积分
1515
金钱
1442
HASS币
0
发表于 2026-9-14 16:13:06 | 显示全部楼层
可以用docker部署吗
回复

使用道具 举报

0

主题

189

回帖

1822

积分

金牌会员

积分
1822
金钱
1633
HASS币
0
发表于 2026-9-14 16:27:01 | 显示全部楼层
1. 安装步骤


打开 Home Assistant,进入 设置 ➔ 应用 ➔ 加载项应用商店;

点击右上角三点,选择 存储库 (Repositories),添加上述 GitHub 仓库链接;

刷新后在商店最下方找到 Hand Gesture Recognition,点击 安装。
在HAOS上安装会出现错误无法安装


回复

使用道具 举报

240

主题

3539

回帖

1万

积分

元老级技术达人

积分
11931
金钱
8132
HASS币
100
 楼主| 发表于 2026-9-14 16:34:50 | 显示全部楼层
rf5 发表于 2026-9-14 16:27
在HAOS上安装会出现错误无法安装

添加仓库能成功吗?安装不了。可能是网络的问题,你可能要多试几次,可能你的网络拉取不了镜像
公众号:Home Assistant分享
回复

使用道具 举报

240

主题

3539

回帖

1万

积分

元老级技术达人

积分
11931
金钱
8132
HASS币
100
 楼主| 发表于 2026-9-14 16:43:40 | 显示全部楼层
C哩C哩 发表于 2026-9-14 16:13
可以用docker部署吗

暂时不支持,要微调下代码,
公众号:Home Assistant分享
回复

使用道具 举报

4

主题

78

回帖

933

积分

高级会员

积分
933
金钱
851
HASS币
0
发表于 2026-9-14 22:37:07 | 显示全部楼层
rf5 发表于 2026-9-14 16:27
在HAOS上安装会出现错误无法安装

这次已经定位得非常明确了。是这个项目的 Dockerfile 太旧,基于 Debian 11(Bullseye),而 Debian 11 在 2026-08-31 已经正式结束 LTS。
我也是无法安装,这是AI诊断的原因。
回复

使用道具 举报

240

主题

3539

回帖

1万

积分

元老级技术达人

积分
11931
金钱
8132
HASS币
100
 楼主| 发表于 2026-9-14 23:18:40 | 显示全部楼层
fanjiayun 发表于 2026-9-14 22:37
这次已经定位得非常明确了。是这个项目的 Dockerfile 太旧,基于 Debian 11(Bullseye),而 Debian 11  ...

我已经更新了,你在试下,应该是可以了。应用商店——检查更新,重新安装,试试,我是5月份测试的,当时是好的
公众号:Home Assistant分享
回复

使用道具 举报

4

主题

78

回帖

933

积分

高级会员

积分
933
金钱
851
HASS币
0
发表于 2026-9-15 10:35:57 来自手机 | 显示全部楼层
bugensui 发表于 2026-9-14 23:18
我已经更新了,你在试下,应该是可以了。应用商店——检查更新,重新安装,试试,我是5月份测试的,当时 ...

启动失败,用AI检查了下,是这样说的,你看看:
很可能你之前为了修复 Debian 11 → Debian 12 的 404 问题,修改了 Dockerfile。
你这个 Dockerfile 最后两行是:
RUN chmod +x /app/run.sh 2>/dev/null || true
CMD [ "/app/run.sh" ]
但你刚才的目录截图已经证明:
hand_gesture/
├── Dockerfile
├── app.py
├── config.yaml
├── icon.png
└── logo.png
根本没有 run.sh。
所以发生的过程就是:
Docker 构建
   ↓
COPY . .
   ↓
/app 里面只有 Dockerfile、app.py、config.yaml……
   ↓
没有 /app/run.sh
   ↓
CMD 尝试执行 /app/run.sh
   ↓
No such file or directory
   ↓
容器退出 127

只需要把 Dockerfile 最后的:
RUN chmod +x /app/run.sh 2>/dev/null || true
CMD [ "/app/run.sh" ]
改成:
CMD ["python", "/app/app.py"]
回复

使用道具 举报

240

主题

3539

回帖

1万

积分

元老级技术达人

积分
11931
金钱
8132
HASS币
100
 楼主| 发表于 2026-9-15 11:07:21 | 显示全部楼层
fanjiayun 发表于 2026-9-15 10:35
启动失败,用AI检查了下,是这样说的,你看看:
很可能你之前为了修复 Debian 11 → Debian 12 的 404 问 ...

我修改好,我在本机部署下,在通知你,晚点,现在有点忙,我之前没有卸载重装
公众号:Home Assistant分享
回复

使用道具 举报

240

主题

3539

回帖

1万

积分

元老级技术达人

积分
11931
金钱
8132
HASS币
100
 楼主| 发表于 2026-9-15 13:31:09 | 显示全部楼层
本帖最后由 bugensui 于 2026-9-15 13:32 编辑
fanjiayun 发表于 2026-9-15 10:35
启动失败,用AI检查了下,是这样说的,你看看:
很可能你之前为了修复 Debian 11 → Debian 12 的 404 问 ...

调试好了。我测试过。可以了,最新插件版本是5.6
公众号:Home Assistant分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )|网站地图

GMT+8, 2026-10-7 20:20 , Processed in 0.018348 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表