rf-protocols 3.1.0__tar.gz → 3.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/PKG-INFO +1 -1
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/pyproject.toml +1 -1
- rf_protocols-3.2.0/rf_protocols/commands/ev1527.py +124 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols.egg-info/PKG-INFO +1 -1
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols.egg-info/SOURCES.txt +1 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/LICENSE +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/README.md +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/__init__.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/honeywell/string_lights/__init__.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/honeywell/string_lights/turn_off.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/honeywell/string_lights/turn_on.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/__init__.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/ambient_light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/light.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/minus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/plus.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/power.sub +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/somfy/rts/__init__.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/commands/__init__.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/commands/kaku.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/commands/ook.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/commands/pt2262.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/commands/somfy_rts.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/loader.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/parser.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols.egg-info/dependency_links.txt +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols.egg-info/requires.txt +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols.egg-info/top_level.txt +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/setup.cfg +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/tests/test_loader.py +0 -0
- {rf_protocols-3.1.0 → rf_protocols-3.2.0}/tests/test_parser.py +0 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""Protocol for EV1527 compatible devices
|
|
2
|
+
|
|
3
|
+
EV1527, RT1527, FP1527 is a simple 24-bit RF protocol used by self-learning remote controls
|
|
4
|
+
and RF switches. It uses Pulse Width Modulation (PWM) encoding where a wide
|
|
5
|
+
pulse represents 1 and a short pulse represents 0.
|
|
6
|
+
The chip has a fixed 20-bit device id and 4 data pin inputs, which are typically used to encode a button or channel number.
|
|
7
|
+
The protocol uses a configurable time base (step duration). Common manufacturers
|
|
8
|
+
and their step durations:
|
|
9
|
+
- Logilight radio controlled sockets EC0001-EC0004: ~300 µs
|
|
10
|
+
- eMylo switches: ~350 µs
|
|
11
|
+
|
|
12
|
+
Encoding:
|
|
13
|
+
Each bit is encoded as follows:
|
|
14
|
+
|
|
15
|
+
____
|
|
16
|
+
Bit 0 : _| |____________
|
|
17
|
+
|<1a>|<---3a---->|
|
|
18
|
+
|
|
19
|
+
____________
|
|
20
|
+
Bit 1 : _| |____
|
|
21
|
+
|<----3a---->|<1a>|
|
|
22
|
+
|
|
23
|
+
____
|
|
24
|
+
Sync : _| |___________ _ _ _ ____________
|
|
25
|
+
|<1a>|<-----------31a------------->|
|
|
26
|
+
|
|
27
|
+
Telegram layout:
|
|
28
|
+
- Sync
|
|
29
|
+
- 24 data bits
|
|
30
|
+
- End of transmission
|
|
31
|
+
|
|
32
|
+
Common data layout:
|
|
33
|
+
- 20 bits: device/unit code
|
|
34
|
+
- 4 bits: button/channel
|
|
35
|
+
|
|
36
|
+
Reference:
|
|
37
|
+
https://www.seegel-systeme.de/2015/09/05/funksteckdosen-mit-dem-raspberry-pi-steuern/
|
|
38
|
+
http://www.sc-tech.cn/en/EV1527.pdf
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
from __future__ import annotations
|
|
42
|
+
|
|
43
|
+
from typing import override
|
|
44
|
+
|
|
45
|
+
from . import ModulationType, RadioFrequencyCommand
|
|
46
|
+
|
|
47
|
+
_DEFAULT_FREQUENCY = 433_920_000
|
|
48
|
+
_DEFAULT_REPEATS = 4
|
|
49
|
+
_DEFAULT_TIMEBASE_US = 275
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class EV1527Command(RadioFrequencyCommand):
|
|
53
|
+
"""Encode an EV1527-compatible RF command.
|
|
54
|
+
|
|
55
|
+
Data layout:
|
|
56
|
+
- 20 bits: device ID
|
|
57
|
+
- 4 bits: data/button (0..15)
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
device_id: int
|
|
61
|
+
data: int
|
|
62
|
+
timebase_us: int
|
|
63
|
+
|
|
64
|
+
def __init__(
|
|
65
|
+
self,
|
|
66
|
+
*,
|
|
67
|
+
device_id: int,
|
|
68
|
+
data: int,
|
|
69
|
+
frame_repeats: int = _DEFAULT_REPEATS,
|
|
70
|
+
frequency: int = _DEFAULT_FREQUENCY,
|
|
71
|
+
timebase_us: int = _DEFAULT_TIMEBASE_US,
|
|
72
|
+
) -> None:
|
|
73
|
+
"""Initialize the EV1527 command.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
device_id: 20-bit device ID (0..1048575)
|
|
77
|
+
data: Data/button bits (0..15)
|
|
78
|
+
frame_repeats: Number of times to repeat the frame
|
|
79
|
+
frequency: RF frequency in Hz
|
|
80
|
+
timebase_us: Time base in microseconds
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
if device_id < 0 or device_id >= (1 << 20):
|
|
84
|
+
raise ValueError("device_id must be in range 0..1048575 (20-bit)")
|
|
85
|
+
if data < 0 or data > 15:
|
|
86
|
+
raise ValueError("data must be in range 0..15")
|
|
87
|
+
|
|
88
|
+
super().__init__(
|
|
89
|
+
frequency=frequency,
|
|
90
|
+
modulation=ModulationType.OOK,
|
|
91
|
+
repeat_count=frame_repeats,
|
|
92
|
+
)
|
|
93
|
+
self.device_id = device_id
|
|
94
|
+
self.data = data
|
|
95
|
+
self.timebase_us = timebase_us
|
|
96
|
+
|
|
97
|
+
@override
|
|
98
|
+
def get_raw_timings(self) -> list[int]:
|
|
99
|
+
"""Compute EV1527 frame timings using PWM encoding.
|
|
100
|
+
|
|
101
|
+
Encodes: sync + 24 data bits (LSB first).
|
|
102
|
+
"""
|
|
103
|
+
# PWM symbol definitions (1a = short, 3a = long)
|
|
104
|
+
_symbols = {
|
|
105
|
+
"0": [self.timebase_us, -3 * self.timebase_us],
|
|
106
|
+
"1": [3 * self.timebase_us, -self.timebase_us],
|
|
107
|
+
"sync": [self.timebase_us, -31 * self.timebase_us],
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
# Encode 20-bit device ID in LSB (reverse bits)
|
|
111
|
+
device_id_bits = format(self.device_id, "020b")[::-1]
|
|
112
|
+
symstr: list[str] = [*device_id_bits]
|
|
113
|
+
|
|
114
|
+
# Encode 4-bit data in LSB (reverse bits)
|
|
115
|
+
data_bits = format(self.data, "04b")[::-1]
|
|
116
|
+
symstr.extend(data_bits)
|
|
117
|
+
|
|
118
|
+
# Build timings: sync + symbols
|
|
119
|
+
timings: list[int] = []
|
|
120
|
+
timings.extend(_symbols["sync"])
|
|
121
|
+
for s in symstr:
|
|
122
|
+
timings.extend(_symbols[s])
|
|
123
|
+
|
|
124
|
+
return timings
|
|
@@ -65,6 +65,7 @@ rf_protocols/codes/novy/cooker_hood/code_9/plus.sub
|
|
|
65
65
|
rf_protocols/codes/novy/cooker_hood/code_9/power.sub
|
|
66
66
|
rf_protocols/codes/somfy/rts/__init__.py
|
|
67
67
|
rf_protocols/commands/__init__.py
|
|
68
|
+
rf_protocols/commands/ev1527.py
|
|
68
69
|
rf_protocols/commands/kaku.py
|
|
69
70
|
rf_protocols/commands/ook.py
|
|
70
71
|
rf_protocols/commands/pt2262.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/honeywell/string_lights/__init__.py
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/honeywell/string_lights/turn_off.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/honeywell/string_lights/turn_on.sub
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_1/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_10/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_2/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_3/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_4/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_5/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_6/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_7/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_8/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/light.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/minus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/plus.sub
RENAMED
|
File without changes
|
{rf_protocols-3.1.0 → rf_protocols-3.2.0}/rf_protocols/codes/novy/cooker_hood/code_9/power.sub
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|