小蚁摄像头

偶然找到一个闲置的小蚁云台摄像机,型号为Yi 1080p Dome,版本为15CN,虽然年代久远但是还可以正常使用,于是萌生了将其接入Home Assistant的想法。

YI Dome Camera 1080P

小蚁摄像头需要接入“小蚁摄像头”APP,此摄像头的国行和美版各有限制,国行(CN)的机器只能使用中文商店的小蚁摄像头APP,US的机器需要使用 Yi Home APP。在APP中有实时串流、操控移动、全景照相、移动检测报警等功能,当然,还有云存储之类的功能,当然那是收费的(笑)

接入智能家居的办法是给摄像头刷入破解固件,使之除了能连接Yi Cloud还能支持本地rtsp串流、支持ONVIFMQTTssh 等功能。摄像头视频流通过rtsp流接入Home Assistant和HomeKit,运动检测等通过MQTT接入

刷入固件

破解固件使用的是 Yi-Hack-V5,Github仓库为:alienatedsec/yi-hack-v5,由于摄像头年代久远,即便是V5固件仅有两年前的更新且仅有BETA版。

yi-hack-v5-header

比较成熟的是yi-hack-v3和v4固件,都比较古老,但是v3不支持rtsp流(即便加上插件也不能正常使用),v4的rtsp流服务需要收费。。因此选择了提供免费rtsp流服务的v5这一测试版固件。

此固件仍为测试版固件,功能并未全部得到验证,此项目已经停更多日,且仍有较多未解决issue,请谨慎使用。

固件版本选择

按照github页面提供的表格,不同的机型下载Release中对应的不同的分区文件。

Camerarootfs partitionhome partitionRemarks
Yi Home 17CN / 27US / 47USrootfs_y18home_y18Firmware files required for the Yi Home 17CN / 27US / 47US camera.
Yi 1080p Homerootfs_y20home_y20Firmware files required for the Yi 1080p Home camera.
Yi Domerootfs_v201home_v201Firmware files required for the Yi Dome camera.
Yi 1080p Domerootfs_h20home_h20Firmware files required for the Yi 1080p Dome camera.
Yi 1080p Cloud Domerootfs_y19home_y19Firmware files required for the Yi 1080p Cloud Dome camera.
Yi Outdoorrootfs_h30home_h30Firmware files required for the Yi Outdoor camera.

Github页面列出了可使用机型。

刷入流程

按照Github页面提供的步骤操作。

  1. 准备一张16GB左右大小的micro SD卡,格式化成FAT32格式。
  2. 将Release中下载的文件解压后,直接拷贝至SD卡根目录。
  3. 拔掉摄像头电源,插上SD卡,重新开机。
  4. 待黄灯闪烁30秒后,固件刷入完成,之后黄灯常亮大约2分钟。
  5. 之后蓝灯亮起,遵循常规步骤设置Wi-Fi和连接至APP

去路由器管理页面找到摄像头IP地址,打开摄像头的Web管理页面: http://[IP]:8080

功能设置

在Web管理页面可以设置摄像头的时区、ssh功能、运动检测录像功能、FTP自动上传等等功能的开启。

对于1080p dome机型,高负载下最好开启在SD卡创建SWAP文件。

  • 开启FTP上传

默认开启当监测到运动时,自动录制1min的视频,由于存储卡只有32GB,可以将录制的视频及时转存到异地硬盘中。

设置通过FTP方式自动上传视频到服务器,并上传后删除SD卡内的文件。

FTP上传设置

如果本地文件未能及时删除,也可以在Web管理页面,通过可视化的 cron 手动设置定时删除文件。

RTSP流接入HA

在Web管理页面设置开启RTSP串流,设置画质

RTSP开关

记录RTSP高画质的URL为 rtsp://[IP]/ch0_0.h264

在Home Assistant的设置文件 cofiguration.yaml 中添加通用摄像头:

camera:
  - platform: generic
    name: YiCam
    stream_source: rtsp://[IP]/ch0_0.h264

验证配置文件后重启Home Assistant,可以看见摄像头实体。

摄像头RTSP流

MQTT 功能的接入

此固件支持使用MQTT方式将运动传感器、人类传感器、声音传感器和运动检测捕获的图片上传至MQTT broker。

HA端设置broker

确保Home Assistant装有Supervisor,我的是Home Assistant Supervised,使用docker安装。https://zhuanlan.zhihu.com/p/482610042

在Supervisor设置页面打开加载项商店,下载安装 Mosquitto broker

HA Broker

启动之后进入配置页面,可以添加新用户(如果不添加也可使用homeassistant默认账户),在login中添加:

- username: cam
  password: camvhyimy@7805

开放端口无冲突保持默认即可。

摄像头端设置

在摄像头Web管理界面设置开启MQTT,填写MQTT broker server即Home Assistant服务器的IP、端口、账户密码。

点击此处进入新页面:

MQTT开关

在此页面打开HA发现,这样可以减去在Home Assistant上的配置文件设置,在HA中可以自动发现并添加实体。

MQTT HA发现

设置完成后返回Home Assistant,添加集成 MQTT ,服务器填写本地 127.0.0.1 ,用户密码保持一致,添加MQTT集成。

MQTT集成设置

重启HA后,会自动发现并添加实体:

MQTT添加实体

三个二进制传感器为运动传感器、人类检测传感器和声音传感器,而且还有运动侦测时捕获的图片。

目前人类传感器和声音传感器无法正常工作,猜测是要在云端app中开启相应功能报警(可能吧,也可能是固件bug,不过目前我用不到就是)

配合运动传感器和捕获图片可以创建自动化,配合其他智能家居的联动。

桥接至Home Kit

将摄像头RTSP流、二进制传感器桥接至HomeKit,与https://zhuanlan.zhihu.com/p/535998824 配置过程相同:

根据*官方文档*1,摄像头、遥控器、电视、媒体播放器、锁等实体(media_player, remote, lock, camera )不能直接桥接至HomeKit,需要设置成accessory添加至HomeKit。

在UI界面中,可以通过HomeKit集成添加摄像头配件:

  1. 创建新的HomeKit集成,勾选上Camera,点击“提交”。HomeKit集成会自动将未加入HomeKit的摄像头添加成Accessory

添加HomeKit配件

  1. 之后会自动创建含有此摄像头的桥接(HASS Bridge),如若之前已建立过桥接,且包含此摄像头(camera.XXX实体),则可放心地删除自动新建的Bridge。

二进制传感器也需要通过桥接至HomeKit。

在HomeKit家庭中可见看到摄像头:

家庭摄像头

家庭传感器

configuration 备份

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate
  - platform: edge_tts
    language: zh-CN

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

camera:
  - platform: generic
    name: HW_cam_rtsp
    stream_source: rtsp://moonhikari:vhyimy%[email protected]:8080/h264_pcm.sdp
    username: moonhikari
    password: vhyimy@7805
    framerate: 30
  - platform: generic
    name: YiCam
    stream_source: rtsp://192.168.50.158/ch0_0.h264
android_ip_webcam:
  - host: 192.168.50.111
    port: 8080
    name: Hw_cam
    username: moonhikari
    password: vhyimy@7805
    sensors:
      - audio_connections
      - battery_level
      - battery_temp
      - battery_voltage
      - light
      - motion
      - pressure
      - proximity
      - sound
      - video_connections
    switches:
      - exposure_lock
      - ffc
      - focus
      - gps_active
      - motion_detect
      - night_vision
      - overlay
      - torch
      - whitebalance_lock
      - video_recording
    motion_sensor: true

参考资料