通过HA集成接入Dnake后可以实现远程控制门禁开启和电梯、监听室内机呼叫并推送等功能。
注意:切勿利用本教程破坏互联网安全,影响居民生活。
本文共提供两种方案,具体如下。
编号 | 主要设备 | 功能区别 | 成本与复杂度 |
---|---|---|---|
方案1 | Openwrt路由器 x 1 交换机 x 1 |
门禁控制: HA 实现 直播拉流: HA 实现 呼叫接听: 室内机实现 |
成本: 较高 复杂度: 高 |
方案2 | 小米R1CL路由器 x 1 | 门禁控制: Openwrt 实现 直播拉流: HA实现 (待验证) 呼叫接听: Openwrt 实现 |
成本: 低(二手平台20元包邮) 复杂度: 低 |
功能 | HA | 米家 |
---|---|---|
门禁控制 | 支持 | 支持 (通过 巴法云 间接支持) |
视频直播 | 支持 | 暂不支持 |
呼叫推送 | 支持 (需要内网穿透以及独立域名) | 暂不支持 |
室内机进入 设置 -> 网络设置(默认密码一般为123456
),获取IP地址、子网掩码、默认网关和服务器相关信息。
室内机进入 设置 -> 房号设置 获取栋号、单元和房号。
请根据不同方案进行对应配置
由于室内机与服务器和室外机在同一个网络,可以在室内机前增加一台交换机,并将原有连接室内机的网线、室内机、和OpenWrt路由器连接至同一个交换机。
进入 OpenWrt -> 网络 -> 接口 -> 添加端口,增加端口配置:
- 端口:选择您实际使用的物理网口,如 eth1
- 协议:静态IP
- IPv4地址:参考之前室内机的IP和网段,填入一个不会引起冲突的IP地址
- IPv4子网掩码:参考室内机填写
- IPv4网关:参考室内机填写
- IPv4广播:留空
- DNS服务器:参考室内机填写
- 其他注意实现:不要启用DHCP和IPv6相关功能,注意配置防火墙
进入 OpenWrt -> 网络 -> 静态路由,增加静态路由配置:
- 接口:lan
- 对象:填Dnake网络的网段,如 172.16.0.0
- IPv4子网掩码:填室内机的 子网掩码
- IPv4网关:填您设置的 并网IP
- 跃迁点:比默认0大即可
成功配置后,路由器下设备可以ping
通室内机。
参考以下配置两个端口(具体端口视实际情况而定):
- Dnake消息服务器端口:映射到局域网中的HA主机(例如
30884
映射到192.168.1.10
)。 - 内网HTTP Server端口:映射到内网PC主机(例如
8080
)。
首先在PC端安装Python环境后运行以下命令启动HTTP服务:
python -m http.server 8080
打开终端(如CMD),通过Telnet连接室内机(注意将 172.16.1.111 替换成您的室内机IP):
telnet 172.16.1.111 9900
如果提示Telnet不可用,请在 控制面板 -> 程序 -> 启用或关闭Windows功能 中启用Telnet功能。
telnet连接室内机后,逐条运行以下命令(注意将 172.16.1.233 替换成您的室内机IP):
# 复制客户端
cd /dnake/data
/dnake/bin/curl http://172.16.1.233:8080/sip_monitor -o sip_monitor
# 修改可执行权限
chmod 755 sip_monitor
# 编辑自启动文件
vi ex_init.sh
- ex_init.sh文件内容:
#!/system/bin/sh
/dnake/data/sip_monitor 172.16.1.233:30884 &
- 编辑完成后运行以下命令检查程序是否可以正常运行(注意将 172.16.1.233 替换成您的室内机IP):
/dnake/data/sip_monitor 172.16.1.233:30884
如果正常,运行 reboot
重启室内机。
提示:
a. 因为Dnake室内机有多个不同的平台,如果运行异常,请尝试另一个版本 sip_monitor_armv7l (同时需要tcpdump),请将其拷贝到室内机后添加可执行权限后再尝试运行
b. 如果flash空间不足,建议拷贝至 /tmp 目录下运行,但这样实现开机自启就会比较复杂,可能每次重启都需要手动下载一遍,除非自己额外部署http服务,通过脚本实现每次开机自动下载可执行文件。
网上有很多 小米R1CL 进ssh刷 Breed 的教程,这里不做展开描述,注意备份数据即可。
刷入 Breed
后,电脑网线连接路由器的默认 WAN口
(蓝色端口),按住 小米R1CL Reset 按键插电,设备会自动进入 Breed
。访问 192.168.1.1
选择定制固件并刷入,注意核对下MD5,防止文件下载错误。
由于默认系统关闭了dhcp等功能,需要手动设置电脑网卡 ip 为 192.168.5.x
网段才能访问到刚刷入的 OpenWrt 系统。
小米R1CL 重启后等待蓝灯亮起,浏览器输入 192.168.5.1
即可访问 OpenWrt(默认密码password
),然后进入 网络 -> 无线,设置您的 WiFi 名称 和 WiFi密码,保存后并应用即可。
连上网后就可以把连电脑的网线拔了,后续可以直接输入 小米R1CL 无线获取到的ip地址即可访问系统。
将门禁室内机原来的网线插入 小米R1CL 中间的 LAN口
,然后再用一根短一点的网线连接室内机和 小米R1CL 的另一个 LAN口
。
小米R1CL 进入到 网络 -> 端口 -> doorlink,参考之前室内机的IP和网段,填入一个不会引起冲突的IP地址和网段(默认为 172.16.0.201
)。
进入到 网络 -> 路由 -> 编辑,将原来的 172.16.0.201
修改为刚才填入的IP和网段,同时按需修改对应网段。
进入到 网络 -> 网络诊断 -> IPv4 Ping,填入室内机的IP,看ping
是否通畅;此外,室内机上也查看下监控视频,如果都没有问题则继续。
小米R1CL 进入到 服务 -> 门禁助手,参考以下配置:
通用设置
- 品牌:目前仅支持
狄耐克
- 激活码:请私信公众号
hadiy
获取 - 启用服务:一般勾上,开机自启
- 运行状态:显示当前程序的运行状态
Home Assistant
- IP地址:HA的IP,呼叫推送需要
- 服务端口:服务端口,默认
30884
巴法云:米家控制需要
- 私钥:请注册 巴法云 后在 控制台 获取,默认为空时不启用该服务
- 室内机SIP信息:如: 10011201@172.16.10.121:5060
- 室外机SIP信息:如: 10019901@172.16.1.101:5060
- 电梯ID:0为所有电梯,1、2、3对应具体电梯编号
- 家庭ID:一般为1
SIP信息拼接规则:以 10011201@172.16.10.121:5060
为例,可以拆解为 10 01 12 01 @ 172.16.10.121 : 5060
这几部分。
- 第一个
10
:栋号 - 第二个
01
:1单元,同理2单元就是02 - 第三个
12
:12楼 - 第四个
01
:室 - 中间的
172.16.10.121
:您室内机的ip地址
- 最后的
5060
:SIP端口,默认5060
请输入激活码,并按需配置Home Assistant或巴法云,点击 保存并应用,此时程序应该显示运行中
,同时如果有配置巴法云,对应 控制台 会显示新增的订阅主题并显示在线。
提示:
a. 如果保存并应用后还是显示已停止
,请先取消勾选启用服务
,保存并应用后再重新启用。
b. 如果不知道SIP信息,可以默认留空,程序正常运行后,使用室外机呼叫下室内机,正常情况下程序会自动刷新SIP信息。
首先,因为需要从原有的电路上取电,所以需要一分二的延长线,这样就可以在原有的供电线上再扩展出一个供电接口,供电线可以搜索一分二 2.54 延长线找到。
其次,一般室内机使用的是12V供电,但小米R1CL
使用的5V供电。但好在主板上丝印WB5HN
的芯片是一个DC-DC降压芯片,测试可以使用12V电压直接供电。所以,可以直接将12V+
和GND
焊接在对应电容两侧,直接使用12V供电。如果没有条件,可以找一根废弃的Micro-USB线,剪断找出正极和负极,直接接在门禁的12V供电上。
将集成(dnake
文件夹)通过FTP或Samba复制到HA的/config/custom_components
目录,并重启HA。
进入 HA -> 设置 -> 添加集成,搜索dnake
并开始配置以下信息:
- 栋号、单元、房号、室内机IP地址:填入之前室内机上获取的相关信息。
- 家庭ID:默认为1
- 电梯ID:0为所有电梯,1、2、3对应具体电梯编号
- OpenWrt地址:如果使用了方案2,需要填入对应设备的地址,注意需要全称带端口(默认
8080
端口),如http:\\192.168.1.100:8080
- 呼叫监听端口:默认为30884
- 室外机设备:可不填,格式可参考
{"20007": "172.16.0.252"}
。 - 直播流支持:如果视频流或报错有异常请取消勾选。
- MQTT支持:可配置MQTT服务以增加可玩性。
直播流提示:
如果使用的方案2,HA将无法直接访问直播流,您可以尝试在HA或者路由器上增加路由解决。
如果网络通常,但无法正常添加直播流,也可能时密码错误导致,建议HA配置时关闭直播流。
- 门禁控制:选择门禁设备后,点击打开门禁。
- 电梯控制:选择门禁设备后,点击对应电梯操作。
- 视频预览:显示每个门禁设备的预览图像(如果启用了
直播流支持
)。 - 最新事件:查看最近执行的事件详情。
进入 开发者工具 -> 服务,搜索dnake
查看支持的服务(如appoint
、permit
、unlock
)。
在手机上安装 Home Assistant App并完成配置(如果需要不在家里时也能控制设备,请准备好内网穿透),在HA 设置 - 自动化与场景 中 创建自动化,可以自行DIY实现想要的功能。
以下是一个室内机呼叫推送通知示例(YAML格式,请将 10011001 替换成自己的集成条目名称):
alias: Dnake室内机呼叫推送通知
description: ""
triggers:
- trigger: state
entity_id:
- sensor.10011001_last_event
attribute: time
conditions:
- condition: state
entity_id: sensor.10011001_last_event
attribute: event
state: ring
actions:
- data:
title: >-
{{ state_attr('camera.dnake_' + state_attr('sensor.10011001_last_event',
'src_id'), 'friendly_name') or state_attr('sensor.10011001_last_event',
'src_id') }}
message: 有人呼叫室内机,请应答。
data:
entity_id: >-
{{ 'camera.dnake_' + state_attr('sensor.10011001_last_event', 'src_id') }}
actions:
- action: EXECUTE_DNAKE
title: 开放通行
- action: URI
title: 查看详情
uri: /config/devices/device/734100ba2c12b66c70d56f145d186ee5
action: notify.mobile_app_adon
- wait_for_trigger:
- event_type: mobile_app_notification_action
event_data:
action: EXECUTE_DNAKE
trigger: event
timeout: 30
continue_on_timeout: false
- action: dnake.unlock
metadata: {}
data:
dst_id: "{{ state_attr('sensor.10011001_last_event', 'src_id') }}"
dst_ip: "{{ state_attr('sensor.10011001_last_event', 'src_ip') }}"
- action: dnake.permit
metadata: {}
data:
dst_ip: "{{ state_attr('sensor.10011001_last_event', 'src_ip') }}"
dst_id: "{{ state_attr('sensor.10011001_last_event', 'src_id') }}"
mode: queued
OpenWrt侧的门禁助手
程序会自动向巴法云平台添加订阅频道,且都设置了默认昵称。如果不符合期望,可以进入 控制台 点击 更多设置
修改昵称。
进入 米家App -> 我的 -> 连接其他平台 -> 添加,选择 巴法
,输入您的账号密码关联米家并同步 巴法云 上的订阅频道。
巴法云 上订阅频道的默认名称为 门禁
、电梯
、上行
、下行
,类型为开关,所以对 小爱同学 说 打开门禁
就可以打开门禁了。
同理,也可以说打开电梯
、打开上行
、打开下行
实现对电梯的控制。
由于米家无法显示和直接控制第三方平台的设备,所以还是需要借助小爱音响,在米家App中选择 添加(右上角) -> 手动控制,可以自定一个控制名称,比如打开门禁
。然后添加执行动作
,选择 家居设备 -> "小爱音响" -> 执行文本命令,输入打开门禁
,勾选静默执行
,点击完成
。
完成后,首页就会出现一个名为打开门禁
的快捷按钮,点击就可以打开门禁了。同理,也可以添加打开电梯
、打开上行
、打开下行
的快捷方式,实现电梯的控制。
您可以借助一些免费frp穿透服务。如果是个人搭建,除了frp,也可以使用zerotier或wiregurad来实现内网穿透。个人搭建时最好购买域名,并使用https和非80/443端口来访问HA,更安全些,这里不展开讲。
通过HA的 HomeKit Bridge 桥接设备,并通过iOS 家庭 App扫码添加。如果有外网访问需求,请自行额外购买Apple音响或者Apple TV作为中枢。
方案2已详细描述接入方案,如果您使用的方案1,则需要通过bamfa集成将本地实体接入到米家,并参考方案2支持米家。
可修改端口,同时调整室内机和路由器的端口转发规则。
目前是配合rtsp流来实现视频推送没有预加载所以慢。不建议开启 预加载视频流 来加快推流,这会影响HA性能和其他用户的体验。
目前尚未实现,可能后续会支持。
有。最简单的就是替换一些资源文件,比如替换桌面壁纸、图标,抑或是替换响铃声音,但注意不要做危险操作,以免损坏系统。