管理和转换许多 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
致谢
感谢以下所有站点和项目,我从中获得了有关不同编解码器定义的信息:
- ESP首页
- IRremoteESP8266
- IRMP
- MakeHex
- IrScrutinizer
- python-miio用于小米 miio 原始格式
- 用于 Broadlink 原始格式的python-broadlink
- 用于 Pronto 的harctoolbox
项目详情
remoteprotocols -0.0.7.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | d7eaa76ff2137f80bfb2e9e80d4ec0cd36a1177365889f5a2181bc889d96269e |
|
| MD5 | ea6e5509cfa0e866a957b9859b3ecc3a |
|
| 布莱克2-256 | b52e670cbd575ef537c2a5d7740215f94aedb957359fc5d5af437333fe57b5be |
remoteprotocols -0.0.7-py2.py3-none-any.whl 的哈希
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | b5371698397bfa255b755b38f6add113be484072a38ddd7a9d31362cdf1c39fb |
|
| MD5 | 275a6db91528aeea59233a60720f23c4 |
|
| 布莱克2-256 | e33596260ee9d8cc65507af844b09545c3bff3d83c52a14483ce6f53162fd161 |