【智能家居4】摄像头接入HASS

您所在的位置:网站首页 ai智能摄像头app连接视频教程下载 【智能家居4】摄像头接入HASS

【智能家居4】摄像头接入HASS

2023-12-23 09:59| 来源: 网络整理| 查看: 265

本篇文档采用两种摄像头接入HomeAssistant,并接入HomeKit。

一种是使用安信可的ESP32-CAM,通过ESPHome编辑配置文件并刷入固件,然后接入HomeKit,但这种方式没有较好的分辨率,不能串流至HomeKit,且不具备较多的功能。如果是通过Arduino编程,烧录官方示例的Camera WebServer等项目,是可以RTSP串流的,也可以开发其他的功能。

另一种是采用旧手机作为IP摄像头,iOS端可以使用App Store下载的IP摄像头(国人编写的基础版即可),Android端可以使用Google Play 商店的IP摄像头App,不仅能从Web访问进行控制和配置修改,还可以将控制按钮传入Home Assistant和HomeKit。

1 ESP32-CAM 接入ESPHome安信可ESP32-CAM

我使用安信可的ESP32-CAM的开发板作为IP摄像头,通过ESPHome编程烧录固件,最终接入HA与HomeKit。

买安信可的ESP32尽量到安信可的官方旗舰店购买,避免买到冒牌货。

ESP32-CAM可以采用Arduino编程,也可以采用较简单的ESPHome,通过编写配置文件烧录固件。不过通过ESPHome接入HA能实现功能较为简单,不如自己编程有可玩性。

这里只展示通过ESPHome接入HA的方案。

ESPHome配置

安信可ESP32-CAM摄像头的配置,包括在的LED灯和在的运动传感器。

安信可的摄像头配置参照ESPHome文档的配置8,如不同的摄像头类型请对照官网自行修改。

 esphome:   name: esp32-cam  esp32:   board: esp32dev   framework:     type: arduino  # Enable logging logger:  # Enable Home Assistant API api:   reboot_timeout: 0s ota:   password: "1"  wifi:   ssid: "blue_sky"   password: "720805zzy"    # Enable fallback hotspot (captive portal) in case wifi connection fails   ap:     ssid: "Esp32-Cam Fallback Hotspot"     password: "12345678"  captive_portal:   # Example configuration entry esp32_camera:   external_clock:     pin: GPIO0     frequency: 20MHz   i2c_pins:     sda: GPIO26     scl: GPIO27   data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]   vsync_pin: GPIO25   href_pin: GPIO23   pixel_clock_pin: GPIO22   power_down_pin: GPIO32    # Image settings   name: My Camera   # ...    # Flashlight output:   - platform: gpio     pin: GPIO4     id: gpio_4 light:   - platform: binary     output: gpio_4     name: esp32cam-light  # Binary Sensor binary_sensor:   - platform: gpio     pin: GPIO13     name: "westcam2_pir"     device_class: motion

HA端

在Home Assistant上直接添加ESPHome设备即可。

通过ESPHome添加的摄像头有如下问题:

无声音,HA上可查看串流

桥接至HomeKit无法查看串流,只可查看10s更新一次的缩略图

运动传感器可用,但貌似只有在光线变化剧烈时才会动作

2 手机做IP摄像头添加至HASS

如果无法忍受ESP32-CAM较低的帧率和分辨率,手头又没有较好的摄像头或者监控设备的话,使用旧手机作为IP摄像头是一个不错的尝试。

目前我拿了一台 HUAWEI Mate 10 Pro 作为IP摄像头,裸机散热基本可用,功能全开待机功耗在3.5W左右。注意在电池未满的情况,尽量选择5V2A以上的充电器和传输线,否则可能会导致充电监控,电量不升反降。

2-1 传输方式

采取协议,或。

手机端使用IP摄像头App,作为的推流端。

配置HASS,添加摄像头实体,并桥接给HomeKit。

2-2 手机端配置IP摄像头-iOS端

配置推流端即可。

我使用过一款国产的IP摄像头,可以显示时间和电量覆盖,提供RTSP流服务器,免费版功能不是很多,但基本够用。

安卓端-Google Play商店应用:Android IP WebcamAndroid IP Webcam

IP Webcam的免费版提供足够多的功能,包括显示时间与电量的覆盖(overlay)、运动和声音检测、检测到移动自动录像30s、远程管理对焦和切换摄像头等诸多功能。

Home Assistant有IP Camera对应的集成,可以通过修改配置文件添加摄像头实体,而且可以将诸多控制开关和传感器接入Home Assistant。

1)基本配置

配置主、副摄像头

配置开启时间、电量和充电状态的Overlay

配置传感器动作的阈值

2)推流与录像配置

推流服务器要设置开机自启、防止休眠。

RTSP推流可以选择\mu律编码还是PCM编码

设置检测到运动后,开始录像,要选择录像的保存位置,必要时,还要设置定时清理和实时异地备份:

我是使用Syncthing同步至Home Assistant所在的服务器,在设置过期删除。

3)Web端配置

默认在摄像机 或即可打开Web端配置页面。

Web端配置

在网页端可以配置大部分功能,包括启用运动检测、切换摄像头、自动对焦、是否显示时间电量、对焦模式、场景模式、夜视增益等等。

还能设置运动传感器监测范围,和查看传感器图像。

此外,网页端也可以访问录制的视频。

2-3 HA端配置

可以参考类别下的多种集成可以选择:

Generic Camera1:只需添加串流源,可以每10s自动generate缩略图。

FFmpeg Camera2:  可以控制画质

Camera Proxy3:摄像头代理

Android IP Webcam4:可以直接配置源于Android App:IP Webcam的摄像头

通过ONVIF协议的摄像头5:暂时未用

不支持使用UI添加实体,可以去配置,按照不同实体,在配置文件中添加以下内容:

2.3.1 使用 FFmpeg Camera 和代理的配置

使用了集成和集成。

使用FFmpeg可以重新编码视频流的分辨率,使用Camera Proxy可以创造出一个新的摄像机,专门用于10s生成一张缩略图片。具体的配置参照各自的文档23。

 camera:   - platform: ffmpeg     input: -rtsp_tramsport tcp -i rtsp://admin:[email protected]:8554/live     name: iphone14_cam     extra_arguments: -pred 1 -q:v 2 -s 1280x720   - platform: proxy     entity_id: camera.iphone14_cam     max_stream_width: 1280     max_image_width: 720     image_refresh_rate: 10.0

事实上IP摄像头原编码够用的情况下,可以使用FFmpeg二压,这样更占用系统资源。

2.3.2 只使用 Generic Camera1 的配置:

Generic Camera实体可以直接捕获RTSP流。安全认证方面,可以直接在流地址前写上(注意含特殊字符需要URL转义),特殊认证方式可以参照官方文档修改。

不加参数,默认每10s自动生成一张缩略图。

 camera:   - platform: generic     name: iphone14_cam_1     stream_source: rtsp://admin:[email protected]:8554/live     username: admin     password: 1105     framerate: 30

2.3.3 使用 Android IP Webcam 的配置

源自官方示例4:

 # Example configuration.yaml entry 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

添加了官方文档中全部的传感器与控制开关,基本上包括了Web端控制IP摄像头的大部分功能。

另外添加了一个二进制传感器:运动传感器。在Web管理页面可以设置阈值,待数值的运动传感器捕获的数值大于阈值时触发二进制运动传感器。此二进制传感器可以接入HomeKit,并参与自动化配置。

HW手机摄像头接入HA后能展现如下多的实体:

Home Assistant中的实体

在iOS的手机摄像头中,HA端我先后尝试使用了FFmpeg Camera配置和Generic Camera配置,只接入RTSP流,可以实时串流至HomeKit。

在Android IP Webcam摄像头中,在HA端我同时使用了原生Android IP Webcam集成和Generic Camera集成。这样我可以传入RTSP流,同时可以传入摄像头的控制按钮与传感器。

3 摄像头接入HoneKit

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

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

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

HomeKit中添加Camera Accessory

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

推荐为不同的实体类型创建不同的Bridge。

串流设置

需要注意的是,直接通过ESPHome方式添加至Home Assistant的摄像头,无法提供类似RTSP的串流,因此仅能在Home Assistant中查看视频流,而无法在HomeKit中看到实时串流,只能看到10s更新一次的图片。

想要在HomeKit中查得到实时串流的画面和声音,需要摄像头端支持RTSP,ONVIF等串流模式,且能提供不止一条视频流。

我将手机IP摄像头接入HomeKit的方案,是利用实体将控制和传感器以及二进制传感器接入HomeKit。

再使用实体将RTSP流桥接至HomeKit。总体的如文末所示。

成功接入HomeKit后,在家庭中可以看见摄像头,并可实时串流:

HomeKit中的摄像头

HomeKit配件还可以通过编辑配置文件手动配置,可以给摄像头添加对应的、7

4 HA 配置文件备份

时间 2022.2.20

  # Configure a default setup of Home Assistant (frontend, api, etc) default_config:  # Text to speech tts:   - platform: google_translate  group: !include groups.yaml automation: !include automations.yaml script: !include scripts.yaml scene: !include scenes.yaml  camera:0   - platform: generic     name: HW_cam_rtsp     stream_source: rtsp://moonhikari:vhyimy%[email protected]:8080/h264_pcm.sdp     username: moonhikari     password: vhyimy@7805     framerate: 30 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 

参考资料

[1]    Generic Camera - Home Assistant: https://www.home-assistant.io/integrations/generic/

[2]    FFmpeg Camera- Home Assistant: https://www.home-assistant.io/integrations/camera.ffmpeg/

[3]    Camera Proxy- Home Assistant: https://www.home-assistant.io/integrations/proxy/

[4]    Android IP Webcam- Home Assistant: https://www.home-assistant.io/integrations/android_ip_webcam/

[5]    ONVIF- Home Assistant: https://www.home-assistant.io/integrations/onvif/

[6]    HomeKit.Accessory Mode - Home Assistant: https://www.home-assistant.io/integrations/homekit/#accessory-mode

[7]    HomeKit.Configuration Variables - Home Assistant:https://www.home-assistant.io/integrations/homekit/#linked_doorbell_sensor

[8]    ESP32CAM-ESPHome: https://esphome.io/components/esp32_camera.html#configuration-for-ai-thinker-camera



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3