Skip to main content

管理和转换许多 IR/RF 远程协议

项目描述

远程协议

remoteprotocols是一个命令行实用程序和 Python 库,用于在 20 多种编码的 IR 和 5 种 RF 远程协议(nec、jvc、RC 开关,请参阅完整协议列表)和 4 种原始格式(pronto、Broadlink、小米 miio、原始持续时间)之间进行转换以及它们之间。目标是能够将任何现有代码列表与任何发射器一起使用,并能够将任何设备接收到的原始信号解码为适当的编码格式。

远程命令字符串

要与远程协议交互,您将使用远程命令使用以下语法进行编码/解码/转换:

protocol:<arg 1>:<arg 2>: ... :<arg n>

# Example signatures
sony:<data>:<nbits?=12>
toshiba_ac:<rc_code_1>:<rc_code_2?=0>

# Example usage
nec:0x7A:0x57

您可以在此处和从命令行获取所有支持的协议及其命令签名的列表。

可选参数可以省略,::中间为空或末尾完全省略冒号。

命令行

您可以从命令行使用远程协议:

usage: remoteprotocols [-h] [-v] command ...

remoteprotocols v0.0.1

positional arguments:
  command            Command to run:
    validate-protocol
                     Validate a protocol definition file.
    validate-command
                     Validate a send command string(s).
    encode           Encodes command string(s) into raw signal (durations).
    convert          Converts command string(s) to other protocols.
    list             List supported protocols.

optional arguments:
  -h, --help         show this help message and exit
  -v, --version      Show version information.

API 使用情况

要与您自己的程序中的远程协议交互,您可以导入它并通过注册表与之交互,该注册表具有所有内置协议定义

from remoteprotocols import ProtocolRegistry


protocols = ProtocolRegistry()

matches = protocols.convert("nec:0x7A:0x57", 0.2, ["durations", "broadlink"])

主要的ProtocolRegistry方法:

  • convert ( command :str, tolerance : float, codec_filter :list[str]) -> list[DecodeMatch] 将给定命令转换为其他协议(全部或过滤)。返回具有成功转换的DecodeMatch对象列表,如果无法转换,则返回空列表。比赛具有以下属性:

    • protocol : 作为ProtocolDef对象的匹配协议
    • args : 解析参数数组(包括默认参数)
    • 容差:匹配此协议所需的容差(越低越好)
    • uniquematch : 布尔值,指示匹配对于此协议是否唯一。对于定义明确的协议,它应该总是正确的。当为false时,这意味着返回的匹配是在同一信号中编码的多个结果之一
    • missing_bits:每个参数的位掩码数组,无法解码,因此这些位中的任何值都是有效结果。如果任何掩码不为零,则该匹配对于协议来说不是唯一的
    • toggle_bit:切换位的状态(内部参数)。仅与使用它的协议相关(如 RC5)
  • 解码(信号:SignalData,容差:float,协议:Optional[list[str]])-> list[DecodeMatch]

    解码信号(可选频率和持续时间数组)并返回所有匹配协议和相应解码参数的列表。它解码成所有已知的协议或过滤的子集。

  • parse_command (command: str)-> RemoteCommand

    将命令字符串解析并验证为RemoteCommand对象。voluptuous.Invalid如果有任何解析问题,它会引发异常。

示例协议定义

使用定义 yaml 文件中的直观声明性语法轻松定义编码协议,然后用于编码和解码。

nec:
  desc: NEC IR code (in LSB form)
  type: IR
  args:
    - name: address
      max: 16bits
      desc: Address to send
      print: 04X
    - name: command
      max: 16bits
      desc: NEC command to send
      print: 04X
  timings:
    frequency: 38000
    unit: 1
    one: [560, -1690]
    zero: [560, -560]
    header: [9000, -4500]
    footer: [560]

  pattern: header {address LSB 16} {command LSB 16} footer

致谢

感谢以下所有站点和项目,我从中获得了有关不同编解码器定义的信息:

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

remoteprotocols-0.0.7.ta​​r.gz (28.5 kB 查看哈希

已上传 source

内置分布

remoteprotocols-0.0.7-py2.py3-none-any.whl (33.3 kB 查看哈希

已上传 py2 py3