orvibo CT30W和家亲红外遥控器刷esphome 接入homeassistant
本文实现的是任意红外按键学码 和 发送功能,不支持直接选择某个设备。
1.拆壳子,壳子是卡扣形式的,使用螺丝刀从底部暴力拆就行,可能会断掉一点卡扣;
参考网址:
web1n/ORVIBO-CT30W: 欧瑞博 CT30W 红外遥控器 这个网址介绍了如何拆解,连接,刷固件
CCBP/ORVIBO-CT30W-ESPHome: 基于 ORVIBO CT30W,通过修改固件的方式刷入 ESPHome,实现支持格力 Kelvinator 协议的红外遥控器,支持接入Home Assistant进行空调的远程控制。 这是将某个空调设备的红外信息直接写入esphome固件,这种使用了第三方库,和本文的方法并不一样。
2.USB转ttl工具连接PCB板上对应位置。一定注意CH341上电压的选择是否为3V,不确定的可以自己用电压表测一下,有的USB转TTL模块带有跳线帽选择电压,最好把跳线帽拔了,因为我发现我的模块跳线帽选择电压完全是错的,怎么短接都是出来5V,不插跳线帽就是对的。

3.windows安装esphome,此处省略。
新建esphome的配置文件,填写完下面yml文件需要自己设置的内容,将文件名命名为ir.yml,在该文件的目录,使用cmd命令
esphome run ir.yml 该命令会编译成esphome固件,并根据选择刷入固件,如果只是编译固件可以使用esphome compile ir.yml
因为我们首次刷入esphome,必须用将usb转ttl模块刷,将ct30w连接好插入电脑,按住ct30w上的按钮使ct30w进入下载模式,esphome rum ir.yml 命令执行后,编译固件结束会提示选择下载的串口号,选择后就开始更新固件了。以后再更新esphome固件就不需要再用接线了,直接打开ct30w的ip地址,例如 192.168.2.66,就能看到ota选项,使用esphome compile xx.yml可以编译固件,固件路径:.esphomebuildxx.pioenvsir-controllerfirmware.ota.bin,
esphome:
name: ir-controller
web_server:
port: 80
version: 3
esp8266:
board: esp_wroom_02
# Enable logging
logger:
level: INFO
# Enable Home Assistant API
api:
encryption:
#key 在接入homeassistant时使用,打开如下链接可以生成一个key
key: 打开链接获取https://esphome.io/components/api.html#configuration-variables
services:
- service: send_raw_ir
variables:
raw_data: 'int[]'
freq: float
then:
- remote_transmitter.transmit_raw:
code: !lambda 'return raw_data;' # 直接返回变量
carrier_frequency: !lambda 'return freq;'
- service: send_nec_ir
variables:
addr: int
cmd: int
cmd_repeats: int
then:
- remote_transmitter.transmit_nec:
address: !lambda 'return addr;' #0x1234
command: !lambda 'return cmd;' #0x78AB
command_repeats: !lambda 'return cmd_repeats;' # 1
- service: send_pronto_ir
variables:
pronto_data_string: string
then:
- remote_transmitter.transmit_pronto:
data: !lambda 'return pronto_data_string;' #
ota:
- platform: esphome
password: "自己设置"
wifi:
ssid: "自己设置"
password: "自己设置"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Ir-Controller Fallback Hotspot"
password: "自己设置"
captive_portal:
status_led:
pin: 15
remote_transmitter:
id: my_ir_sender
pin: GPIO14
carrier_duty_percent: 50%
remote_receiver:
pin: GPIO5
dump: all
4.在homeassistant中搜索添加该设备,打开192.168.你的ct30w ip,按下红外遥控器按钮,会在网址中看到解析信息

在homeassistant中建立脚本,选择添加动作,再选调用服务,选择esphome解析到的协议的那个服务,例子中是pronto,那就选择send_pronto_ir这个,然后复制解析到的码。esphome支持许多种协议的发送和接受,上述yml配置中,只支持了raw pronto nec的发送,其他的若要支持可以参考Remote Transmitter — ESPHome这个网址,把其他的服务暴露给homeassistant。 这样将这个脚本保存就可以,运行该脚本就能实现发送某个红外按键的功能了。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
