『瀚思彼岸』» 智能家居技术论坛

标题: 利用AI分析摄像头/门铃视频并识别场景执行自动化 [打印本页]

作者: anlong    时间: 2025-8-18 11:47
标题: 利用AI分析摄像头/门铃视频并识别场景执行自动化
本帖最后由 anlong 于 2025-8-18 11:46 编辑

Camera Recording and Explain


操作步骤:



  1. 摄像头/门铃通过Xiaomi Miot Auto接入Home Assistant

  2. 安装AI Conversation Agent集成

    • 要求HA版本 2025.8 及以上

    • HACS一键安装

    • 安装命令: wget -O - https://get.hacs.vip | DOMAIN=ai_conversation REPO_PATH=hasscc/ai-conversation ARCHIVE_TAG=main bash -


  3. 添加保存录像脚本
    # configuration.yaml
    shell_command:
      # other commands ...
      save_xiaomi_video: |
        bash -c '
          mp4="{{ name|default('latest') }}.mp4"
          dir="{{ dir|default('/media/camera',true) }}"
          mkdir -p "$dir" && cd "$dir"
          script=/config/custom_components/xiaomi_miot/scripts/save_xiaomi_video.sh
          if [ -f "$script" ]; then
            bash "$script" "{{ url }}" "$mp4"
          else
            ffmpeg -y -i "{{ url }}" -c copy "$mp4"
          fi
          ls *.mp4 | sort | head -n -{{ keep|default(100) }} | xargs rm -vf
          if [ -n "{{ img }}" ]; then
            curl -o "{{ name|default('latest') }}.jpg" "{{ img }}"
            ls *.jpg | sort | head -n -{{ keep|default(100) }} | xargs rm -vf
          fi
        '


    由于小米摄像机/门铃看家助手提供的hls流在通过ffmpeg转换成mp4时会出错,仅能保存第一个切片(5秒内),因此提供了save_xiaomi_video.sh脚本,该脚本会逐个转换每个ts切片最后拼接成完整mp4,该脚本已随着v1.0.17版本一起发布了。



  4. 重启 Home Assistant

  5. 添加AI视觉模型

    1. 免费视觉模型申请并获取ApiKey

    2. 添加AI账号配置

    3. 添加对话模型 (推荐智谱AI的免费模型: glm-4.1v-thinking-flash)


  6. 导入蓝图

  7. Telegram永久保存视频回放(如不需要可跳过)

    需要特殊网络环境



    1. 通过BotFather创建一个机器人并获取token

    2. 创建一个私人群组并添加机器人为管理员

    3. 通过GetIDs Bot获取群组ID (如果你获得的群组ID不是-开头的,一段时间后可能会变)

    4. 在HA中配置Telegram Bot集成

    5. +添加允许的聊天标识符



  8. 通过蓝图创建自动化
    alias: Camera Recording and Explain
    description: 利用AI分析摄像头/门铃视频
    use_blueprint:
      path: gitee.com/camera-recording-notify.yaml
      input:
        camera: camera.isa_hlc7_xxxx_camera_control
        mihome_notify: sensor.mi_xxxxyyyy_message
        mihome_notify_kwd: 门铃
        save_dir: /media/camera
        keep_num: 20
        video_events:
          ObjectMotion: 画面变动
        notify_action:
          - action: ai_conversation.explain_media
            data:
              entity_id: conversation.agent_glm_4_1v_thinking_flash
              video: "{{ mp4_path }}"
              prompt: 这是我家门铃录制的视频。分析并简单总结一下,重点描述人物特征及行为。
              tags:
                - 回家
                - 离家
                - 敲门
                - 按门铃
                - 快递员
                - 外卖员
            response_variable: ai_result
          - parallel:
              - if:
                  - alias: AI正常回复
                    condition: template
                    value_template: "{{ '敲门' in ai_result.tags }}"
                then:
                  - alias: 推送通知到手机上
                    action: notify.mobile_app_your_iphone
                    data:
                      title: "{{ home_name }}{{ camera_device_name }}"
                      message: "{{ ai_result.message or event }}"
                      data:
                        video: "{{ mp4_path }}"
                        image: "{{ img_path }}"
                        url: /config/devices/device/{{ camera_device_id }}
                        actions:
                          - action: URI
                            title: 打开米家
                            uri: "{{ app_link }}"
                          - action: none
                            title: 我知道了
                        push:
                          tag: "{{ camera_entity_id }}"
              - alias: 发送视频到TG群永久保存回放
                action: telegram_bot.send_video
                data:
                  config_entry_id: xxxyyyzzz # Telegram Bot 配置条目ID
                  target: -1234567890 # 群组/会话ID
                  # message_thread_id: xxxx # 话题ID
                  file: "{{ mp4_path.replace('/local','') }}"
                  caption: |-
                    #{{ home_name }} #{{ camera_device_name }} #{{ event }}
                    {{ ai_result.tags_string|default('') }}
                    {{ ai_result.message }}
                  parse_mode: plain_text
                response_variable: tg_result

    Camera Recording and Explain




作者: gky008    时间: 2025-8-18 12:17
视觉模型是体验?还是永久免费
作者: anlong    时间: 2025-8-18 13:00
gky008 发表于 2025-8-18 12:17
视觉模型是体验?还是永久免费

永久免费
作者: yinghu183    时间: 2025-8-18 13:56
感谢,有空体验一下
作者: laojimigu    时间: 2025-8-18 14:09
感谢大佬分享 马上试试
作者: ilongjiang    时间: 2025-8-18 15:45
我的小米门铃是不知道能不能用。接入后只有一个传感器显示不可用
设备信息
madv.cateye.miowl
制造商:madv
固件:1.1.18_5827 ☁️

作者: anlong    时间: 2025-8-18 18:59
ilongjiang 发表于 2025-8-18 15:45
我的小米门铃是不知道能不能用。接入后只有一个传感器显示不可用
设备信息
madv.cateye.miowl

这款门铃有点老,如果HA中看不到门铃截图就不支持
作者: laojimigu    时间: 2025-8-18 19:58
本帖最后由 laojimigu 于 2025-8-23 01:01 编辑

感谢~已经用上了,视频短的时候效果不错
但是我发现视频有多个切片的时候拼接会出问题,组合出的视频只有第一部分是正常的,后面会变花屏.
目前把save_xiaomi_video中的-c copy "$seg"改成-c:a copy "$seg" 可以正常使用了.
但是这样需要重新编码,对硬件的要求提高了

改回测试这两天都没再出过问题,效果相当好。估计之前是部分下载失败导致的。
作者: 隔壁的王叔叔    时间: 2025-8-18 20:03
哈哈哈,这个用起来某些人可能会瑟瑟发抖
作者: Zuray    时间: 2025-8-18 23:22
如果门铃可以实现,是不是小米摄像头也可以实现,我出门的时候会打开摄像头,主要家里有猫咪在,然后是不是可以录像,分析我出门后猫一天的生活轨迹,哈哈哈哈但是隐私全被暴露了
作者: a784174467    时间: 2025-8-19 11:12
你好,我在 Home Assistant 使用 ai_conversation 集成时遇到了报错,日志如下:
TypeError: AsyncClient.__init__() got an unexpected keyword argument 'proxies'
在新版 httpx(>=0.28)中,AsyncClient 构造函数已经移除了 proxies 参数,请问大大怎么解决这个问题的呀?
作者: lystyle    时间: 2025-8-19 14:36
看看,感觉还挺有用的
作者: anlong    时间: 2025-8-20 08:48
a784174467 发表于 2025-8-19 11:12
你好,我在 Home Assistant 使用 ai_conversation 集成时遇到了报错,日志如下:
TypeError: AsyncClient._ ...

确认你的HA版本≥2025.8.0
作者: a784174467    时间: 2025-8-20 11:44
anlong 发表于 2025-8-20 08:48
确认你的HA版本≥2025.8.0

你好,我都更新到了最新版:
安装方式 Home Assistant OS
Core 2025.8.2
Supervisor 2025.08.1
Operating System 16.1
Frontend 20250811.0
作者: loadfly    时间: 2025-8-20 12:11
感觉还挺有用的
作者: wangling75    时间: 2025-8-20 15:24
没有看懂第三步怎么添加录像脚本
作者: wangling75    时间: 2025-8-20 16:09
摄像头可以用吗?只有小米摄像头没有门铃
作者: wangling75    时间: 2025-8-20 19:52
不知道啥问题[attach]73059[/attach]

作者: anlong    时间: 2025-8-21 11:53
wangling75 发表于 2025-8-20 15:24
没有看懂第三步怎么添加录像脚本

在HA配置文件 configuration.yaml 中添加脚本,不是很老的摄像头应该都可以。
作者: anlong    时间: 2025-8-21 11:56
a784174467 发表于 2025-8-19 11:12
你好,我在 Home Assistant 使用 ai_conversation 集成时遇到了报错,日志如下:
TypeError: AsyncClient._ ...

重启HA之后应该就能修复。
https://github.com/home-assistant/core/issues/140894
作者: a784174467    时间: 2025-8-21 22:33
anlong 发表于 2025-8-21 11:56
重启HA之后应该就能修复。
https://github.com/home-assistant/core/issues/140894

看到啦,谢谢!
作者: 1475069547    时间: 2025-8-22 14:01
牛哇牛哇,有规定摄像头型号吗?是必须小米吗?
作者: anlong    时间: 2025-8-22 18:52
1475069547 发表于 2025-8-22 14:01
牛哇牛哇,有规定摄像头型号吗?是必须小米吗?

其他摄像头参考 https://github.com/al-one/hass-x ... ssions/2610#frigate
作者: wangling75    时间: 2025-8-23 12:02
anlong 发表于 2025-8-21 11:53
在HA配置文件 configuration.yaml 中添加脚本,不是很老的摄像头应该都可以。

都搞定了也不保存了,就是没看到推送消息不知道啥情况
作者: dyq12345600    时间: 7 天前
没有公网IP是不是不行,我是IPV6的地址,解析错误呢一直
作者: zachary0101    时间: 7 天前
[attach]73221[/attach]
已经用上了!
app的推送需要app一直在后台运行,比较耗电。不然只有在手机亮屏时才能收到,我又加了个persistent notify。
能给AI反馈调教吗?比如纠正识别错误的地方,或者告诉AI视频中哪些是邻居哪些是家人?
作者: anlong    时间: 6 天前
zachary0101 发表于 2025-8-27 14:29
已经用上了!
app的推送需要app一直在后台运行,比较耗电。不然只有在手机亮屏时才能收到,我又加了个pers ...

可以通过prompt参数设置提示词调教,但是识别邻居/家人只能在提示词描述人物特征或移动方向,不支持人脸识别。
作者: zachary0101    时间: 6 天前
anlong 发表于 2025-8-28 15:21
可以通过prompt参数设置提示词调教,但是识别邻居/家人只能在提示词描述人物特征或移动方向,不支持人脸 ...

好的,知道了!谢谢!
作者: devoofo    时间: 4 天前
[attach]73352[/attach][attach]73351[/attach]大佬们,请问一下这是什么情况





欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5