本帖最后由 姚远 于 2022-2-14 20:45 编辑
HA链接博联的需求 家里有一堆设施,8266自己组装的插座、开关,市场购买的RF无线开关灯、插线板(或智能转换头)、门磁、人体红外探测器、小米温湿度计,电视、空调、扫地机器人等家电; 主要通道有三个,WIFI、RF433(315)、红外;主要集成节点有Homeassistant集成WIFI类、基于ESP32的RF433(315)网关、博联红外网关; 主要控制发出有Homeassistant页面控制、小度音箱、RF433按钮(或墙壁面板)。 目前,除了红外控制部分,其他都已经集成了起来,并已经可以进行语音控制、自动控制。
去年买了个博联RM mini 3红外网关,想打通红外链路,但是始终没能链进HA,电视、空调、扫地机器人,就一直游离于集成控制之外。这两天有时间了,鼓捣了很长时间,越过了很多的坑,终于链进HA了。博联怎么接入HA,网上很多很细致、很贴心的介绍,帮我越过了很多坑,但也让我很是迷茫了很长时间,都快神经错乱了。所以,把自己的接入过程记录下来,写一个小白接入的说明,希望可以帮助到像我这么小白的人。
HA版本
Home Assistant 0.117.6
1. HA集成进博联,增加博联网关 将博联应用集成到HA,并增加红外网关。就是那个博联RM mini 3,有几个就增加几个。
1、HA中进入配置 -> 集成 -> 新增 -> 选择 Broadlink
2、链接博联设备将博联设备的 IP 地址填入 Host 位置提交之后,系统自动将这个博联设备链接到 HA中
2. HA学习博联红外编码
1、学习红外编码方式:直接在HA页面上学习
因为需要学习的开关不多,简单直接的方式是最好的。所以,直接在Home Assistant页面学习
2、页面直接学习红外编码的标准语句说明
参数
描述
示例
entity_id 红外网关的entity_id。在第一步集成博联的时候,新增的博联网关。新增网关之后,在HA可以查询得到 remote.bedroom device 被控制的设备。比如电视、空调。自己起个名字 television command 设备的控制开关或是控制按钮。比如,开关机、声音调高。自己起个名字 Turn on command_type 控制开关的类型(ir),是红外还是射频(rf)。默认红外 rf alternative 这个控制开关是否有多个用途。比如开和关是一个按钮。如果是,就填入 True 。不是就空着 True timeout Timeout, in seconds, for the command to be learned. 30
3、学习红外编码
如果只是将博联链进HA,不需要语音控制,可以使用 SmartIR 的方式,跳过学习红外编码。SmartIR已经包含了大量的设备编码,所以基本不需要学习红外编码这一步。但他的问题也比较突出,采用 SmartIR 方式的设备,它的控制按钮没有办法实体化(entity),语音或其他方式没有办法直接控制这些按钮 。这些话是不对的,是我之前对SmartIR使用没太明白。既使使用了SmartIR,很多命令是可以实体化的。
注意:“ 网关 + 被控制设备 + 控制按钮”为一个编码,也就是说,每个按钮需要一个一个学习。
(1) 填写学习编码的语句
# 示例
entity_id: remote.zhi_neng_yao_kong_remote # 博联RM mini3 网关的entity
device: livingroomtv # 被控制的设备,自己起个名字
command: kaiguan # 控制按钮,自己起个名字
command_type: ir # 红外方式,可以空着,系统默认是红外
alternative: true # 一个按钮多个控制,比如电视开关。可以空着,默认单控
复制代码
(2)学码操作
点击HA页面上的“调用服务”:点击之后,HA页面的“通知”栏中会自动出现一个消息;并且博联网关小灯会闪一下;
用被控制设备自带的遥控器,按动对应的按钮:HA页面的“通知”栏中的消息会自动消失;
这个设备的这个按钮学码完成。
(3)检查HA是否学习到了编码
路径:homeassistant文件夹下的.storage目录,文件是broadlink_remote
这个文件记录了学习到的所有按钮,和这些按钮的编码
检查所有按钮都有,就OK了,啥也不要做。缺失的按钮,就重新再学习一次。我那个电视遥控器惨不忍睹,音量按钮已经不能用了。我是用华为手机里的“智能遥控”功能当做电视自带的遥控器。
3. HA中使用编码
1、编写scripts.yaml文件
红外编码学习之后,如果需要在HA中使用,则需要在scripts.yaml进行设置。之后,系统会生成相应的实体entity,HA就可以使用了。
scripts.yaml文件示例:
living_tv_kaiguan: # 按钮形成实体的名称 script.living_tv_开关
sequence:
- service: remote.send_command # 调用发送命令服务
data: # 命令参数,这些内容对应前面的学习码
entity_id: remote.zhi_neng_yao_kong_remote # 指定博联网关,学习码对应的博联网关
device: livingroomtv # 被控制的设备,学习码对应的设备
command: kaiguan # 命令名称,学习码对应的按钮名称
复制代码
2、保证在configuration.yaml文件中,有如下行
script: !include scripts.yaml # script部分的设置,放置在了 scripts.yaml 文件中
复制代码
3、HA重新启动服务
4、HA查询到新的实体
接下来就可以正常使用了
我的设置清单
学习红外码语句
注意:是一段一段学习编码
# 设备:客厅-电视
# 开关1.1:客厅-电视-开关
entity_id: remote.zhi_neng_yao_kong_remote
device: livingroomtv
command: kaiguan
alternative: true
# 开关1.2:客厅-电视-音量大
entity_id: remote.zhi_neng_yao_kong_remote
device: livingroomtv
command: yinliangda
# 开关1.3:客厅-电视-音量小
entity_id: remote.zhi_neng_yao_kong_remote
device: livingroomtv
command: yinliangxiao
# 开关1.4:客厅-电视-静音
entity_id: remote.zhi_neng_yao_kong_remote
device: livingroomtv
command: jingyin
alternative: true
复制代码
使用红外码scripts.yaml设置
# 客厅-电视-开关
living_tv_kaiguan:
sequence:
- service: remote.send_command
data:
entity_id: remote.zhi_neng_yao_kong_remote
device: livingroomtv
command: kaiguan
# 客厅-电视-音量大
living_tv_yinliangda:
sequence:
- service: remote.send_command
data:
entity_id: remote.zhi_neng_yao_kong_remote
device: livingroomtv
command: yinliangda
num_repeats: 5
# 客厅-电视-音量小
living_tv_yinliangxiao:
sequence:
- service: remote.send_command
data:
entity_id: remote.zhi_neng_yao_kong_remote
device: livingroomtv
command: yinliangxiao
num_repeats: 5
# 客厅-电视-静音
living_tv_jingyin:
sequence:
- service: remote.send_command
data:
entity_id: remote.zhi_neng_yao_kong_remote
device: livingroomtv
command: jingyin
复制代码