【插件·改】升级Home Assistant官方博联和空调伴侣插件的红外功能

现在使用的两个插件switch/broadlink.py(官方自带)climate/xiaomi_miio.py(syssi大神的),都是一个设备初始化一个服务,然后以红外码作为传入参数进行调用。如果想调用预设的红外码,得配置成switch或script之类的entity,间接调用service发送红外码,假如要使用按键多的电视遥控器,会额外生成很多entity。另外,一个博联RM或者空调伴侣生成一个service,会让HA的service列表很长,特别加上一个script会独立生成一个servcie,会长得令人崩溃。于是乎对两个插件改造了一下。


0. 插件说明

INFO:连带文件夹,放到{HA配置目录}/custom_components/下。

  • switch/broadlink.py

    • 修正开关复位的bug
    • 增加显示不可用状态
    • 增加配置内置红外码
    • 通过服务方式调用预设内置红外码
  • climate/xiaomi_miio.py

    • 增加配置内置红外码
    • 通过服务方式调用预设内置红外码

1.环境

  • Ubuntu 18.04 + HA 0.80.0

2.使用说明(0.82版)

2.1学码

  • service: switch.broadlink_rm_learn_command[博联RM]
字段 是否必填 描述
entity_id 如果不指定,指令将发送到所有博联RM设备

INFO:参考climate.xiaomi_miio.py的服务调用代码进行修改。

  • service: climate.xiaomi_miio_learn_command[空调伴侣]
字段 是否必填 描述
entity_id 如果不指定,指令将发送到所有的空调伴侣设备
slot 存储的槽位,默认1
timeout 学习红外状态等待时间,默认10秒

INFO:没做修改,顺带介绍。

2.2发码

  • service: switch.broadlink_rm_send_command[博联RM]
字段 是否必填 描述
entity_id 如果不指定,指令将发送到所有的博联RM设备
command 红外指令字符串
command_name 内置红外指令名称,优先级高于command参数
1
2
3
4
5
6
7
8
9
10
11
# 配置 configuration.yaml
switch:
- platform: broadlink
name: rm_living_room
host: 10.11.12.200
mac: '34:ea:34:42:ce:bb'
timeout: 10
type: remote #注,要设置为remote
commands: #commands层级定义内置红外指令
ir_cmn0: 'FE0123456789' #调用的command_name为ir_cmn0
ir_cmn1: 'FE112233445566' #调用的command_name为ir_cmn1

INFO:在任意一个博联RM中定义红外码即可,其它博联RM可共用。

  • service: climate.xiaomi_miio_send_command[空调伴侣]
字段 是否必填 描述
entity_id 如果不指定,指令将发送到所有的空调伴侣设备
command 红外指令字符串,需’FE’或’01’开头
command_name 内置红外指令名称,优先级高于command参数
1
2
3
4
5
6
7
8
9
10
11
# 配置 configuration.yaml
climate:
- platform: xiaomi_miio
name: Aqara Air Conditioning Companion
host: 192.168.130.71
token: b7c4a758c251955d2c24b1d9e41ce47d
target_sensor: sensor.temperature_158d0001f53706
scan_interval: 60
commands: #commands层级定义内置红外指令
ir_cmn0: 'FE0123456789' #调用的command_name为ir_cmn0
ir_cmn1: 'FE112233445566' #调用的command_name为ir_cmn1

INFO:在任意一个空调伴侣中定义红外码即可,其它空调伴侣可共用。


3.使用说明(0.92版)

2.1学码

  • service: broadlink.learn[博联RM]
字段 是否必填 描述
host entity_id或者ip

INFO:参考climate.xiaomi_miio.py的服务调用代码进行修改。

  • service: climate.xiaomi_miio_learn_command[空调伴侣]
字段 是否必填 描述
host entity_id或者ip,如果不指定,指令将发送到所有的空调伴侣设备
slot 存储的槽位,默认30
timeout 学习红外状态等待时间,默认10秒

INFO:没做修改,顺带介绍。

2.2发码

  • service: broadlink.send[博联RM]
字段 是否必填 描述
host entity_id或者ip
packet 红外指令字符串,支持多个(数组)
command 内置红外指令名称,支持多个(数组)
1
2
3
4
5
6
7
8
9
10
11
# 配置 configuration.yaml
switch:
- platform: broadlink
name: rm_living_room
host: 10.11.12.200
mac: '34:ea:34:42:ce:bb'
timeout: 10
type: remote #注,要设置为remote
commands: #commands层级定义内置红外指令
ir_cmn0: 'FE0123456789' #调用的command_name为ir_cmn0
ir_cmn1: 'FE112233445566' #调用的command_name为ir_cmn1

INFO:在任意一个博联RM中定义红外码即可,其它博联RM可共用。

  • service: climate.xiaomi_miio_send_command[空调伴侣]
字段 是否必填 描述
host entity_id或者ip,如果不指定,指令将发送到所有的空调伴侣设备
packet 红外指令字符串,需’FE’或’01’开头,支持多个(数组)
command 内置红外指令名称,支持多个(数组)
1
2
3
4
5
6
7
8
9
10
11
# 配置 configuration.yaml
climate:
- platform: xiaomi_miio
name: Aqara Air Conditioning Companion
host: 192.168.130.71
token: b7c4a758c251955d2c24b1d9e41ce47d
target_sensor: sensor.temperature_158d0001f53706
scan_interval: 60
commands: #commands层级定义内置红外指令
ir_cmn0: 'FE0123456789' #调用的command_name为ir_cmn0
ir_cmn1: 'FE112233445566' #调用的command_name为ir_cmn1

INFO:在任意一个空调伴侣中定义红外码即可,其它空调伴侣可共用。