如何用python-broadlink实现万能遥控器:3步轻松学习IR/RF代码

【免费下载链接】python-broadlink Python module for controlling Broadlink RM2/3 (Pro) remote controls, A1 sensor platforms and SP2/3 smartplugs 【免费下载链接】python-broadlink 项目地址: https://gitcode.com/gh_mirrors/py/python-broadlink

python-broadlink是一款功能强大的Python库,专为控制Broadlink系列智能设备设计,包括RM2/3(Pro)遥控器、A1传感器平台和SP2/3智能插座。本文将带你通过3个简单步骤,掌握使用python-broadlink学习和控制红外(IR)与射频(RF)设备的核心技能,让你的普通遥控器秒变万能智能控制器!

📋 准备工作:安装与环境配置

在开始学习IR/RF代码前,需完成基础环境搭建:

  1. 克隆项目仓库

    git clone https://gitcode.com/gh_mirrors/py/python-broadlink
    cd python-broadlink
    
  2. 安装依赖
    通过项目根目录下的requirements.txt安装必要依赖:

    pip install -r requirements.txt
    
  3. 设备连接
    确保Broadlink设备(如RM Pro)已通电并连接到与电脑相同的网络。使用项目提供的cli/broadlink_discovery工具发现设备:

    cd cli
    ./broadlink_discovery
    

    记录设备的IP、MAC地址和类型(如0x2712),后续步骤需使用这些信息。

🔍 第1步:学习红外(IR)代码

红外学习适用于电视、空调等常见家电遥控器。通过broadlink_cli工具可快速捕获IR信号:

  1. 进入学习模式
    执行以下命令让设备进入IR学习状态(替换<host><mac>为实际设备信息):

    ./broadlink_cli --host <设备IP> --mac <设备MAC> --learn
    

    终端会显示Learning...,此时将原始遥控器对准Broadlink设备的接收窗口。

  2. 捕获IR信号
    按下原始遥控器上的目标按键(如电视电源键),设备会自动捕获信号。成功后终端将显示:

    Packet found!
    Raw: <十六进制代码>
    Base64: <Base64编码>
    Pulses: +<时长> -<时长> ...
    
  3. 保存代码
    使用--learnfile参数将代码保存到文件,便于后续调用:

    ./broadlink_cli --host <设备IP> --mac <设备MAC> --learn --learnfile tv_power.txt
    

核心实现逻辑位于broadlink/remote.py中的rmmini类,通过enter_learning()方法进入学习模式,check_data()方法获取捕获的IR数据。

📡 第2步:学习射频(RF)代码

射频学习适用于车库门、窗帘等使用RF信号的设备,步骤稍复杂但同样简单:

  1. 扫描RF频率
    执行以下命令启动频率扫描(RM Pro及以上型号支持):

    ./broadlink_cli --host <设备IP> --mac <设备MAC> --rflearn
    

    终端提示Detecting radiofrequency...时,长按原始RF遥控器的目标按键,直到显示Radiofrequency detected: X.XMHz

  2. 捕获RF信号
    按提示松开按键并短按一次,设备将捕获RF数据包:

    Packet found!
    Raw: <十六进制代码>
    Base64: <Base64编码>
    Pulses: +<时长> -<时长> ...
    
  3. 保存RF代码
    同样使用--learnfile保存:

    ./broadlink_cli --host <设备IP> --mac <设备MAC> --rflearn --learnfile garage_door.txt
    

RF学习的核心代码在broadlink/remote.pyrmpro类中,通过sweep_frequency()扫描频率,find_rf_packet()捕获具体信号。

🚀 第3步:发送IR/RF代码控制设备

学习完成后,即可通过保存的代码控制设备:

  1. 发送IR代码
    使用--send参数发送之前保存的IR代码:

    ./broadlink_cli --host <设备IP> --mac <设备MAC> --send $(cat tv_power.txt)
    
  2. 发送RF代码
    发送RF代码的命令与IR相同,只需替换文件路径:

    ./broadlink_cli --host <设备IP> --mac <设备MAC> --send $(cat garage_door.txt)
    
  3. 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源码进一步探索。

【免费下载链接】python-broadlink Python module for controlling Broadlink RM2/3 (Pro) remote controls, A1 sensor platforms and SP2/3 smartplugs 【免费下载链接】python-broadlink 项目地址: https://gitcode.com/gh_mirrors/py/python-broadlink

更多推荐