如何用python-broadlink实现万能遥控器:3步轻松学习IR/RF代码
如何用python-broadlink实现万能遥控器:3步轻松学习IR/RF代码
python-broadlink是一款功能强大的Python库,专为控制Broadlink系列智能设备设计,包括RM2/3(Pro)遥控器、A1传感器平台和SP2/3智能插座。本文将带你通过3个简单步骤,掌握使用python-broadlink学习和控制红外(IR)与射频(RF)设备的核心技能,让你的普通遥控器秒变万能智能控制器!
📋 准备工作:安装与环境配置
在开始学习IR/RF代码前,需完成基础环境搭建:
-
克隆项目仓库
git clone https://gitcode.com/gh_mirrors/py/python-broadlink cd python-broadlink -
安装依赖
通过项目根目录下的requirements.txt安装必要依赖:pip install -r requirements.txt -
设备连接
确保Broadlink设备(如RM Pro)已通电并连接到与电脑相同的网络。使用项目提供的cli/broadlink_discovery工具发现设备:cd cli ./broadlink_discovery记录设备的IP、MAC地址和类型(如
0x2712),后续步骤需使用这些信息。
🔍 第1步:学习红外(IR)代码
红外学习适用于电视、空调等常见家电遥控器。通过broadlink_cli工具可快速捕获IR信号:
-
进入学习模式
执行以下命令让设备进入IR学习状态(替换<host>和<mac>为实际设备信息):./broadlink_cli --host <设备IP> --mac <设备MAC> --learn终端会显示
Learning...,此时将原始遥控器对准Broadlink设备的接收窗口。 -
捕获IR信号
按下原始遥控器上的目标按键(如电视电源键),设备会自动捕获信号。成功后终端将显示:Packet found! Raw: <十六进制代码> Base64: <Base64编码> Pulses: +<时长> -<时长> ... -
保存代码
使用--learnfile参数将代码保存到文件,便于后续调用:./broadlink_cli --host <设备IP> --mac <设备MAC> --learn --learnfile tv_power.txt
核心实现逻辑位于broadlink/remote.py中的rmmini类,通过enter_learning()方法进入学习模式,check_data()方法获取捕获的IR数据。
📡 第2步:学习射频(RF)代码
射频学习适用于车库门、窗帘等使用RF信号的设备,步骤稍复杂但同样简单:
-
扫描RF频率
执行以下命令启动频率扫描(RM Pro及以上型号支持):./broadlink_cli --host <设备IP> --mac <设备MAC> --rflearn终端提示
Detecting radiofrequency...时,长按原始RF遥控器的目标按键,直到显示Radiofrequency detected: X.XMHz。 -
捕获RF信号
按提示松开按键并短按一次,设备将捕获RF数据包:Packet found! Raw: <十六进制代码> Base64: <Base64编码> Pulses: +<时长> -<时长> ... -
保存RF代码
同样使用--learnfile保存:./broadlink_cli --host <设备IP> --mac <设备MAC> --rflearn --learnfile garage_door.txt
RF学习的核心代码在broadlink/remote.py的rmpro类中,通过sweep_frequency()扫描频率,find_rf_packet()捕获具体信号。
🚀 第3步:发送IR/RF代码控制设备
学习完成后,即可通过保存的代码控制设备:
-
发送IR代码
使用--send参数发送之前保存的IR代码:./broadlink_cli --host <设备IP> --mac <设备MAC> --send $(cat tv_power.txt) -
发送RF代码
发送RF代码的命令与IR相同,只需替换文件路径:./broadlink_cli --host <设备IP> --mac <设备MAC> --send $(cat garage_door.txt) -
Python代码集成
除了命令行工具,还可通过Python代码直接调用。例如,发送IR代码的示例:import broadlink from broadlink.remote import rmpro # 初始化设备 dev = broadlink.gendevice(0x2712, ("设备IP", 80), bytearray.fromhex("设备MAC")) dev.auth() # 发送IR代码(替换为实际捕获的十六进制数据) ir_code = bytes.fromhex("2600580000012a94131213361312133613361336131213121312131213121336133613361312131213121312133613121336133613361336133613361336133613361336133613361336133613361336a0") dev.send_data(ir_code)
💡 常见问题与解决方案
- 学习超时:确保设备距离在30cm内,环境无强红外/RF干扰。
- 代码不生效:检查设备类型是否正确(如RM Mini不支持RF),可通过
broadlink_discovery重新确认设备信息。 - 保存路径:代码文件默认保存在当前目录,建议使用绝对路径(如
--learnfile /home/user/remotes/tv.txt)避免丢失。
通过以上3步,你已掌握使用python-broadlink实现万能遥控器的核心技能。无论是家庭自动化场景还是智能控制项目,python-broadlink都能为你提供灵活高效的设备控制能力。更多高级功能可参考项目文档和broadlink/remote.py源码进一步探索。
更多推荐



所有评论(0)