小米摄像头录像控制:hass-xiaomi-miot camera组件高级功能

小米摄像头录像控制:hass-xiaomi-miot camera组件高级功能

【免费下载链接】hass-xiaomi-miot Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices. 小米米家智能家居设备接入Hass集成 【免费下载链接】hass-xiaomi-miot 项目地址: https://gitcode.com/gh_mirrors/ha/hass-xiaomi-miot

组件概述

hass-xiaomi-miot项目提供了全面的小米摄像头集成方案,通过MIoT规范实现与Home Assistant的无缝对接。camera组件作为核心功能模块,支持Wi-Fi、蓝牙和ZigBee协议的小米摄像头设备,提供实时流媒体、移动侦测录像和智能通知等高级功能。

核心实现代码位于custom_components/xiaomi_miot/camera.py,该文件定义了CameraEntityMiotCameraEntity两个主要类,分别处理基础摄像头功能和MIoT协议特定实现。

录像自动化配置

基础录像通知配置

项目提供了预定义的自动化蓝图,可快速实现摄像头录像和通知功能。基础版本的自动化配置文件为blueprints/automation/camera-recording-notify.yaml,支持以下核心功能:

  • 运动检测触发录像
  • 本地存储录像文件
  • 自定义保留录像数量
  • 事件类型映射与通知

配置示例片段:

# 保存录像脚本配置 (configuration.yaml)
shell_command:
  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
    '

手机通知增强版

增强版配置blueprints/automation/camera-recording-notify-phone.yaml在基础版之上增加了针对移动设备的优化:

  • 直接指定通知设备
  • 自定义通知标题和内容
  • 支持通知操作按钮
  • 电池电量显示

通知配置示例:

# 手机通知配置片段
data:
  image: "{{ img_path }}"
  video: "{{ mp4_path }}"
  url: /config/devices/device/{{ camera_device_id }}
  actions: 
    - action: URI
      title: 打开米家
      uri: '{{ app_link }}'
    - action: none
      title: 我知道了
  push:
    tag: '{{ camera_entity_id }}'
    sound:
      name: default
      critical: "{{ 1 if 'Bell' in motion_video_type else 0 }}"
      volume: 0.3

高级功能实现

运动检测与录像触发

camera组件通过监控摄像头的motion_video_time属性变化来触发录像操作。在custom_components/xiaomi_miot/camera.py中,update_motion_video方法处理运动事件:

def update_motion_video(self, data: dict):
    tim = data.get('motion_video_time')
    if self._last_motion_time == tim:
        return
    self._last_motion_time = tim
    self._attr_extra_state_attributes.update({
        'motion_video_time': tim,
        'motion_video_type': data.get('motion_video_type'),
    })
    if adt := data.get('motion_video_latest'):
        if fid := adt.get('fileId'):
            self._attr_camera_image = self.get_alarm_image_address(fid, adt.get('imgStoreId'), True)
            self._attr_stream_source = self.get_alarm_m3u8_url(fid, adt.get('isAlarm'))
            self._attr_extra_state_attributes.update({
                'stream_address': self._attr_stream_source,
            })

视频流加密与解密

为保护视频隐私,组件实现了AES加密传输,解密过程在get_motion_stream_address方法中处理:

def get_motion_stream_address(self, **kwargs):
    # ... 省略其他代码 ...
    if kwargs.get('crypto'):
        key = base64.b64decode(mic.ssecurity).hex()
        url = f'-decryption_key {key} -decryption_iv {self._segment_iv_hex} -i "crypto+{url}"'
    return url

多事件类型支持

组件支持多种运动事件类型,可在自动化配置中自定义事件名称映射:

# 视频事件类型映射配置
video_events:
  PeopleMotion: 有人移动
  ObjectMotion: 画面变动
  Pass: 有人在门前经过
  PassBell: 有人按门铃
  PassStay: 有人在门前停留

使用流程与最佳实践

基本配置步骤

  1. configuration.yaml中添加shell命令配置
  2. 导入自动化蓝图并配置摄像头实体
  3. 设置录像存储路径和保留数量
  4. 配置通知方式和内容
  5. 重启Home Assistant使配置生效

存储路径设置建议

根据不同的使用场景,推荐以下存储路径配置:

  • 本地存储:/media/camera(需要配置媒体目录)
  • 网络存储:/config/www/doorbell(适用于Web访问)
  • 临时存储:/tmp/camera(重启后自动清理)

性能优化建议

  1. 录像保留策略:根据存储空间大小调整keep_num参数,建议保留30-50个最近录像
  2. 事件过滤:通过video_events配置过滤不重要的事件类型
  3. 网络优化:配置external_url以确保外部访问稳定性
  4. 资源管理:定期清理老旧录像文件,避免存储空间耗尽

常见问题解决

录像无法保存

检查以下可能原因:

  1. 存储路径权限不足,确保Home Assistant有权限写入目标目录
  2. ffmpeg未安装或路径配置错误
  3. 摄像头流地址获取失败,检查网络连接和设备状态

通知不触发

排查步骤:

  1. 检查自动化触发器是否正确配置
  2. 确认手机设备已在Home Assistant中注册
  3. 查看Home Assistant日志,查找通知发送错误信息
  4. 验证external_url配置是否正确

视频流卡顿

优化建议:

  1. 降低视频分辨率或比特率
  2. 缩短单段录像时长
  3. 检查网络带宽,确保摄像头上传速度稳定
  4. 调整FFmpeg参数,减少资源占用

功能扩展与定制

camera组件提供了多种自定义配置选项,可在实体配置中添加:

# 摄像头实体高级配置示例
customize:
  camera.xiaomi_camera:
    use_motion_stream: true
    motion_stream_slice: 0
    keep_streaming: true
    disable_check_stream: false

通过修改这些参数,可以实现特定场景下的功能定制,如运动检测灵敏度调整、视频切片大小控制等高级功能。

完整的配置选项和参数说明,请参考项目文档和代码注释。如需进一步定制功能,可以扩展custom_components/xiaomi_miot/camera.py中的相关类和方法。

【免费下载链接】hass-xiaomi-miot Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices. 小米米家智能家居设备接入Hass集成 【免费下载链接】hass-xiaomi-miot 项目地址: https://gitcode.com/gh_mirrors/ha/hass-xiaomi-miot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值