本帖最后由 qiaoqiao1235 于 2023-10-23 10:38 编辑
新增nodered流接入方式,比较简单,可以参考
非可视门铃接入homekit
背景:
家里米家和homekit双平台,手机都是iphone,每个房间有一个homepod mini,所以想要装一个支持homekit的门铃。
homekit本身是有标准可视门铃配件的,很强大。按门铃时,homepod会响,如果有apple tv电视上会弹出实时画面,手机也可以实时通知预览。
分析:
分析了现有的几种门铃接入homekit的情况
×1.原生homekit门铃
问题:需要直接供电,价格贵,种类少,Logic Circle View Doorbell等。有条件可以上,可以用HomeKit Secure Video。
×2.米家门铃接入:
可行性:买了一个小米门铃3,可以通过xiaomi miio auto 接入。
问题:产品本身问题:关联了小爱音箱了但是显示门铃画面特别慢;室内要插单独一个门铃接收器为了实时响铃;全程云端存储,不支持本地;电池供电,只有人经过、按门铃才会可控,其他时候断网,切换成普通模式效果也不好。
接入hass问题:只可以云端接入,没有本地方式;只可以获取记录视频的最后一帧画面,没有视频;门铃按钮、人体传感器无法有效工作。基本不可用。
×3.其他成品可视门铃
可行性:包括ring、eufy、nest等,homebridge有插件可以直接接入;国内其他几家的没试过。
问题:不容易买,价格贵,其中电池供电设备的可用性不太确定。
√4.自制门铃
可行性:接入第三方相机或者创建一个fake camera,关联一个按钮,关联一个人体传感器就可以了。
问题:不支持HomeKit Secure Video。(scrypted可以支持,可以研究下)
结论:
经过对比,当前计划按照方案4来尝试。
方案:
需要材料:实体开关(必须,按钮比如aqara智能开关,米家那个有点丑);能接入hass的摄像机(可选,一般支持rtsp、onvif即可);人体传感器(可选,如果摄像头本身支持就不需要这个了)。
按照场景来分:
- 支持按门铃,homepod会响,电视、手机弹出通知——需要开关
- 支持按门铃,homepod会响,电视、手机弹出实时画面——需要开关、摄像头
- 支持按门铃,homepod会响,电视、手机弹出实时画面,支持人体检测——需要开关、摄像头、人体传感器
一.支持按门铃,homepod会响,电视、手机弹出通知
1.新建一个静态图片的fake camera
参考:https://www.home-assistant.io/integrations/generic/
在/config/www下放入 your_image.png,如果没有www请新建,放入后重启hass,在浏览器打开https://IP:8123/local/your_image.png可以看看是否正常
在/config下新建camera.yaml
- platform: generic
name: doorbell
still_image_url: https://127.0.0.1:8123/local/your_image.png
verify_ssl: false
2.将按钮转换成一个binary sensor
在/config下新建bianry_sensor.yaml
因为linked_doorbell_sensor关联的只可以是binary sensor,通常添加的按钮可能是一个action,需要通过模板转换一下。 aqara button会有single、hold、release等几种状态,我只要识别单击就认为有人按门铃即可,所以配置 on:single,其他按钮根据自己情况适配,可以看一下添加完成按下去之后的二元传感器状态是否符合预期。
- platform: template
sensors:
doorbell_switch:
friendly_name: Doorbell Button
value_template: "{{ is_state('sensor.0x00158d0001b92d08_action', 'single') }}"
3.新增homekit设备
在/config下新建homekit.yaml
使用accessory模式新增一个homekit设备(相机只可以用accessory mode),包括相机,配置关联的按钮
- name: Doorbell
mode: accessory
filter:
include_entities:
- camera.doorbell
entity_config:
camera.doorbell:
name: Doorbell
support_audio: false
linked_doorbell_sensor: binary_sensor.doorbell_switch
4.修改configuration.yaml
将camera、binary_sensor、homekit都包含进去
camera: !include camera.yaml
binary_sensor: !include binary_sensor.yaml
homekit: !include homekit.yaml
5.重启
重启后,home扫描通知中的配对码新增配件就可以了。
进阶:fake相机不仅可以显示静态图片,也可以显示天气或者地图(一般动态刷新的)
显示天气参考https://developer.yr.no/doc/guides/deprecating-old-widgets/ 获取svg地址
按照如下配置修改:
- platform: generic
name: Weather
still_image_url: https://www.yr.no/en/content/1-72837/meteogram.svg
content_type: "image/svg+xml"
显示地图参考https://lbs.amap.com/api/webservice/guide/api/staticmaps/ 获取静态地图地址
建议使用高德的,google的现在比较麻烦。高德需要申请开发者api,获取key参考:https://lbs.amap.com/api/webservice/guide/create-project/get-key
按照如下配置修改:
- platform: generic
name: Map
still_image_url: https://restapi.amap.com/v3/staticmap?location=116.481485,39.990464&zoom=10&size=750*300&markers=mid,,A:116.481485,39.990464&key=<用户的key>
limit_refetch_to_url_change: true
二、支持按门铃,homepod会响,电视、手机通知弹出实时画面
在方案一的基础上修改一下camera.yaml需要真实的相机。目的是支持视频流即可,其他不变
可以使用其他任何办法把相机接入进hass,把homekit配置文件修改成对应的相机实体即可,相机如何添加请自行搜索。
- platform: generic
name: doorbell
username: user
password: pass
stream_source: rtsp://user:[email protected]:554
三、支持按门铃,homepod会响,电视、手机弹出实时画面,支持人体检测
在方案一或者方案二的基础上修改homekit.yaml,添加一条配置 linked_motion_sensor。
有的相机添加进来就自带传感器了就可以直接使用那个,onvif接入一般会支持事件通知。没有的话就单独关联一个自己安装的也可以。
- name: Doorbell
mode: accessory
filter:
include_entities:
- camera.doorbell
entity_config:
camera.doorbell:
name: Doorbell
support_audio: false
linked_doorbell_sensor: binary_sensor.doorbell_switch
linked_motion_sensor: binary_sensor.0x00158d000549bb6e_motion
其实如果没有实时画面我觉得人体传感器意义不大,检测到人也看不到……
我当前使用的是方案一,因为门前没有办法供电接摄像头,主要就是想有人按门铃,homepod和手机会提醒就够了。
成本很低,几十块,一个开关。就算使用方案3,人体传感器+一个tplink的摄像头最多也就200块左右。
使用效果达到预期,延迟很低,homepod的功能又可以+1了。
|