velbus-aio 2021.8.7__py3-none-any.whl → 2025.11.0__py3-none-any.whl
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.
- scripts/parse_specs.py +156 -0
- velbus_aio-2025.11.0.dist-info/METADATA +71 -0
- velbus_aio-2025.11.0.dist-info/RECORD +194 -0
- {velbus_aio-2021.8.7.dist-info → velbus_aio-2025.11.0.dist-info}/WHEEL +1 -1
- velbus_aio-2025.11.0.dist-info/top_level.txt +3 -0
- velbusaio/channels.py +443 -109
- velbusaio/command_registry.py +126 -13
- velbusaio/const.py +36 -12
- velbusaio/controller.py +252 -177
- velbusaio/discovery.py +2 -2
- velbusaio/exceptions.py +22 -0
- velbusaio/handler.py +311 -145
- velbusaio/helpers.py +6 -18
- velbusaio/message.py +46 -132
- velbusaio/messages/__init__.py +12 -2
- velbusaio/messages/blind_status.py +16 -25
- velbusaio/messages/bus_active.py +3 -9
- velbusaio/messages/bus_error_counter_status.py +3 -4
- velbusaio/messages/bus_error_counter_status_request.py +3 -4
- velbusaio/messages/bus_off.py +3 -4
- velbusaio/messages/channel_name_part1.py +49 -33
- velbusaio/messages/channel_name_part2.py +49 -33
- velbusaio/messages/channel_name_part3.py +49 -33
- velbusaio/messages/channel_name_request.py +26 -12
- velbusaio/messages/clear_led.py +3 -4
- velbusaio/messages/counter_status.py +3 -17
- velbusaio/messages/counter_status_request.py +6 -6
- velbusaio/messages/counter_value.py +44 -0
- velbusaio/messages/cover_down.py +4 -29
- velbusaio/messages/cover_off.py +5 -29
- velbusaio/messages/cover_position.py +4 -19
- velbusaio/messages/cover_up.py +4 -27
- velbusaio/messages/dali_device_settings.py +178 -0
- velbusaio/messages/dali_device_settings_request.py +53 -0
- velbusaio/messages/dali_dim_value_status.py +44 -0
- velbusaio/messages/dimmer_channel_status.py +6 -19
- velbusaio/messages/dimmer_status.py +14 -31
- velbusaio/messages/edge_set_color.py +114 -0
- velbusaio/messages/edge_set_custom_color.py +56 -0
- velbusaio/messages/fast_blinking_led.py +3 -4
- velbusaio/messages/forced_off.py +3 -4
- velbusaio/messages/forced_on.py +3 -4
- velbusaio/messages/interface_status_request.py +3 -4
- velbusaio/messages/ir_receiver_status.py +18 -0
- velbusaio/messages/kwh_status.py +3 -19
- velbusaio/messages/light_value_request.py +3 -4
- velbusaio/messages/memo_text.py +3 -5
- velbusaio/messages/memory_data.py +3 -16
- velbusaio/messages/memory_data_block.py +3 -4
- velbusaio/messages/memory_dump_request.py +3 -4
- velbusaio/messages/module_status.py +107 -55
- velbusaio/messages/module_status_request.py +7 -6
- velbusaio/messages/module_subtype.py +11 -19
- velbusaio/messages/module_type.py +132 -21
- velbusaio/messages/module_type_request.py +1 -0
- velbusaio/messages/psu_load.py +56 -0
- velbusaio/messages/psu_values.py +53 -0
- velbusaio/messages/push_button_status.py +3 -16
- velbusaio/messages/raw.py +74 -0
- velbusaio/messages/read_data_block_from_memory.py +3 -4
- velbusaio/messages/read_data_from_memory.py +3 -4
- velbusaio/messages/realtime_clock_status_request.py +3 -4
- velbusaio/messages/receive_buffer_full.py +3 -4
- velbusaio/messages/receive_ready.py +3 -4
- velbusaio/messages/relay_status.py +13 -42
- velbusaio/messages/restore_dimmer.py +33 -24
- velbusaio/messages/select_program.py +35 -0
- velbusaio/messages/sensor_settings_request.py +3 -4
- velbusaio/messages/sensor_temp_request.py +3 -4
- velbusaio/messages/sensor_temperature.py +15 -19
- velbusaio/messages/set_date.py +10 -30
- velbusaio/messages/set_daylight_saving.py +8 -24
- velbusaio/messages/set_dimmer.py +43 -41
- velbusaio/messages/set_led.py +3 -4
- velbusaio/messages/set_realtime_clock.py +10 -30
- velbusaio/messages/set_temperature.py +3 -4
- velbusaio/messages/slider_status.py +16 -20
- velbusaio/messages/slow_blinking_led.py +3 -4
- velbusaio/messages/start_relay_blinking_timer.py +3 -4
- velbusaio/messages/start_relay_timer.py +3 -4
- velbusaio/messages/switch_relay_off.py +3 -16
- velbusaio/messages/switch_relay_on.py +3 -16
- velbusaio/messages/switch_to_comfort.py +4 -15
- velbusaio/messages/switch_to_day.py +4 -15
- velbusaio/messages/switch_to_night.py +4 -15
- velbusaio/messages/switch_to_safe.py +4 -15
- velbusaio/messages/temp_sensor_settings_part1.py +3 -4
- velbusaio/messages/temp_sensor_settings_part2.py +27 -0
- velbusaio/messages/temp_sensor_settings_part3.py +27 -0
- velbusaio/messages/temp_sensor_settings_part4.py +27 -0
- velbusaio/messages/temp_sensor_settings_request.py +3 -4
- velbusaio/messages/temp_sensor_status.py +34 -35
- velbusaio/messages/temp_set_cooling.py +3 -13
- velbusaio/messages/temp_set_heating.py +3 -13
- velbusaio/messages/update_led_status.py +3 -4
- velbusaio/messages/very_fast_blinking_led.py +3 -4
- velbusaio/messages/write_data_to_memory.py +3 -4
- velbusaio/messages/write_memory_block.py +3 -4
- velbusaio/messages/write_module_address_and_serial_number.py +3 -4
- velbusaio/module.py +680 -158
- velbusaio/module_spec/01.json +62 -0
- velbusaio/module_spec/02.json +16 -0
- velbusaio/module_spec/03.json +23 -0
- velbusaio/module_spec/04.json +283 -0
- velbusaio/module_spec/05.json +54 -0
- velbusaio/module_spec/06.json +110 -0
- velbusaio/module_spec/07.json +16 -0
- velbusaio/module_spec/08.json +38 -0
- velbusaio/module_spec/09.json +30 -0
- velbusaio/module_spec/0A.json +58 -0
- velbusaio/module_spec/0B.json +58 -0
- velbusaio/module_spec/0C.json +18 -0
- velbusaio/module_spec/0E.json +25 -0
- velbusaio/module_spec/0F.json +16 -0
- velbusaio/module_spec/10.json +111 -0
- velbusaio/module_spec/11.json +111 -0
- velbusaio/module_spec/12.json +73 -0
- velbusaio/module_spec/13.json +4 -0
- velbusaio/module_spec/14.json +16 -0
- velbusaio/module_spec/15.json +83 -0
- velbusaio/module_spec/16.json +129 -0
- velbusaio/module_spec/17.json +129 -0
- velbusaio/module_spec/18.json +129 -0
- velbusaio/module_spec/1A.json +79 -0
- velbusaio/module_spec/1B.json +107 -0
- velbusaio/module_spec/1D.json +89 -0
- velbusaio/module_spec/1E.json +306 -0
- velbusaio/module_spec/1F.json +178 -0
- velbusaio/module_spec/20.json +178 -0
- velbusaio/module_spec/21.json +326 -0
- velbusaio/module_spec/22.json +426 -0
- velbusaio/module_spec/23.json +129 -0
- velbusaio/module_spec/24.json +30 -0
- velbusaio/module_spec/25.json +3 -0
- velbusaio/module_spec/28.json +454 -0
- velbusaio/module_spec/29.json +235 -0
- velbusaio/module_spec/2A.json +239 -0
- velbusaio/module_spec/2B.json +239 -0
- velbusaio/module_spec/2C.json +257 -0
- velbusaio/module_spec/2D.json +270 -0
- velbusaio/module_spec/2E.json +215 -0
- velbusaio/module_spec/2F.json +211 -0
- velbusaio/module_spec/30.json +58 -0
- velbusaio/module_spec/31.json +465 -0
- velbusaio/module_spec/32.json +385 -0
- velbusaio/module_spec/33.json +249 -0
- velbusaio/module_spec/34.json +313 -0
- velbusaio/module_spec/35.json +313 -0
- velbusaio/module_spec/36.json +313 -0
- velbusaio/module_spec/37.json +333 -0
- velbusaio/module_spec/38.json +111 -0
- velbusaio/module_spec/39.json +4 -0
- velbusaio/module_spec/3A.json +306 -0
- velbusaio/module_spec/3B.json +306 -0
- velbusaio/module_spec/3C.json +306 -0
- velbusaio/module_spec/3D.json +454 -0
- velbusaio/module_spec/3E.json +302 -0
- velbusaio/module_spec/3F.json +4 -0
- velbusaio/module_spec/40.json +4 -0
- velbusaio/module_spec/41.json +241 -0
- velbusaio/module_spec/42.json +4 -0
- velbusaio/module_spec/43.json +23 -0
- velbusaio/module_spec/44.json +38 -0
- velbusaio/module_spec/45.json +4 -0
- velbusaio/module_spec/48.json +111 -0
- velbusaio/module_spec/49.json +111 -0
- velbusaio/module_spec/4A.json +89 -0
- velbusaio/module_spec/4B.json +138 -0
- velbusaio/module_spec/4C.json +129 -0
- velbusaio/module_spec/4D.json +108 -0
- velbusaio/module_spec/4E.json +787 -0
- velbusaio/module_spec/4F.json +114 -0
- velbusaio/module_spec/50.json +114 -0
- velbusaio/module_spec/51.json +114 -0
- velbusaio/module_spec/52.json +456 -0
- velbusaio/module_spec/54.json +270 -0
- velbusaio/module_spec/55.json +270 -0
- velbusaio/module_spec/56.json +270 -0
- velbusaio/module_spec/57.json +260 -0
- velbusaio/module_spec/5A.json +4 -0
- velbusaio/module_spec/5B.json +4 -0
- velbusaio/module_spec/5C.json +90 -0
- velbusaio/module_spec/5F.json +78 -0
- velbusaio/module_spec/60.json +4 -0
- velbusaio/module_spec/61.json +89 -0
- velbusaio/module_spec/broadcast.json +67 -0
- velbusaio/module_spec/ignore.json +22 -0
- velbusaio/protocol.py +243 -0
- velbusaio/py.typed +0 -0
- velbusaio/raw_message.py +149 -0
- velbusaio/util.py +55 -0
- velbusaio/vlp_reader.py +249 -0
- velbus_aio-2021.8.7.dist-info/METADATA +0 -66
- velbus_aio-2021.8.7.dist-info/RECORD +0 -90
- velbus_aio-2021.8.7.dist-info/top_level.txt +0 -1
- velbusaio/messages/meteo_raw.py +0 -52
- velbusaio/module_registry.py +0 -64
- velbusaio/moduleprotocol/protocol.json +0 -25540
- velbusaio/parser.py +0 -142
- {velbus_aio-2021.8.7.dist-info → velbus_aio-2025.11.0.dist-info/licenses}/LICENSE +0 -0
scripts/parse_specs.py
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Validate module spec JSON files.
|
|
4
|
+
|
|
5
|
+
This script checks all JSON files under velbusaio/module_spec/*.json and fails
|
|
6
|
+
if any module spec declares a channel with "Editable": "yes" but the module
|
|
7
|
+
spec does not contain the corresponding memory location under
|
|
8
|
+
"Memory" -> "Channels" for that channel.
|
|
9
|
+
|
|
10
|
+
This version fixes an AttributeError caused by MODULE_SPEC_DIR being a string
|
|
11
|
+
instead of a pathlib.Path and makes locating the module_spec directory more
|
|
12
|
+
robust (walks up from the script location to find the repo root).
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import json
|
|
18
|
+
import sys
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
from typing import Any, List, Optional
|
|
21
|
+
|
|
22
|
+
# How many directory levels to walk up from this script to try to find the repo root
|
|
23
|
+
_MAX_UP_LEVELS = 6
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def h2(n: int) -> str:
|
|
27
|
+
"""Format an integer as the two-digit uppercase hex used in specs (e.g. 1 -> '01')."""
|
|
28
|
+
return f"{int(n):02X}"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def load_json(path: Path) -> Any:
|
|
32
|
+
with path.open("r", encoding="utf-8") as fh:
|
|
33
|
+
return json.load(fh)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def locate_module_spec_dir(start: Path | None = None) -> Path | None:
|
|
37
|
+
"""
|
|
38
|
+
Locate velbusaio/module_spec by walking up from start (defaults to this script's dir).
|
|
39
|
+
Returns a pathlib.Path if found, otherwise None.
|
|
40
|
+
"""
|
|
41
|
+
if start is None:
|
|
42
|
+
start = Path(__file__).resolve().parent
|
|
43
|
+
|
|
44
|
+
p = start
|
|
45
|
+
for _ in range(_MAX_UP_LEVELS):
|
|
46
|
+
candidate = p / "velbusaio" / "module_spec"
|
|
47
|
+
if candidate.is_dir():
|
|
48
|
+
return candidate
|
|
49
|
+
p = p.parent
|
|
50
|
+
return None
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def validate_spec(path: Path) -> list[str]:
|
|
54
|
+
errors: list[str] = []
|
|
55
|
+
warnings: list[str] = []
|
|
56
|
+
try:
|
|
57
|
+
spec = load_json(path)
|
|
58
|
+
except Exception as exc:
|
|
59
|
+
errors.append(f"{path}: failed to load JSON: {exc}")
|
|
60
|
+
return errors
|
|
61
|
+
|
|
62
|
+
channels = spec.get("Channels", {})
|
|
63
|
+
memory = spec.get("Memory")
|
|
64
|
+
|
|
65
|
+
for chan_key, chan_data in channels.items():
|
|
66
|
+
try:
|
|
67
|
+
chan_num = int(chan_key)
|
|
68
|
+
except Exception:
|
|
69
|
+
errors.append(f"{path}: channel key '{chan_key}' is not an integer")
|
|
70
|
+
continue
|
|
71
|
+
|
|
72
|
+
editable = chan_data.get("Editable", "") == "yes"
|
|
73
|
+
|
|
74
|
+
if memory is None:
|
|
75
|
+
errors.append(
|
|
76
|
+
f"{path}: channel {chan_num} (editable) but module spec is missing top-level 'Memory'"
|
|
77
|
+
)
|
|
78
|
+
continue
|
|
79
|
+
|
|
80
|
+
mem_channels = memory.get("Channels")
|
|
81
|
+
if mem_channels is None:
|
|
82
|
+
warnings.append(
|
|
83
|
+
f"{path}: channel {chan_num} (editable) but 'Memory' does not contain 'Channels'"
|
|
84
|
+
)
|
|
85
|
+
continue
|
|
86
|
+
|
|
87
|
+
possible_key = str(chan_num).zfill(2)
|
|
88
|
+
|
|
89
|
+
if possible_key not in mem_channels and editable:
|
|
90
|
+
errors.append(
|
|
91
|
+
f"{path}: channel {chan_num} (editable) but no memory location found in Memory->Channels for key {possible_key}"
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
ctype = chan_data.get("Type", "")
|
|
95
|
+
if ctype in [
|
|
96
|
+
"Blind",
|
|
97
|
+
"Button",
|
|
98
|
+
"ButtonCounter",
|
|
99
|
+
"Dimmer",
|
|
100
|
+
"Temperature",
|
|
101
|
+
"Relay",
|
|
102
|
+
]:
|
|
103
|
+
if chan_data.get("Editable", "") == "":
|
|
104
|
+
errors.append(
|
|
105
|
+
f"{path}: channel {chan_num} of type {ctype} but editable field is missing"
|
|
106
|
+
)
|
|
107
|
+
if chan_data.get("Editable", "") == "yes":
|
|
108
|
+
if mem_channels is None or possible_key not in mem_channels:
|
|
109
|
+
errors.append(
|
|
110
|
+
f"{path}: channel {chan_num} of type {ctype} is editable but no memory location found in Memory->Channels for key {possible_key}"
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
return errors
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def main(argv: list[str] | None = None) -> int:
|
|
117
|
+
argv = argv or sys.argv[1:]
|
|
118
|
+
|
|
119
|
+
# optional first arg: path to repo root (or path that contains velbusaio/module_spec)
|
|
120
|
+
start_path = None
|
|
121
|
+
if len(argv) >= 1 and argv[0].strip():
|
|
122
|
+
start_path = Path(argv[0]).resolve()
|
|
123
|
+
|
|
124
|
+
module_spec_dir = locate_module_spec_dir(start_path)
|
|
125
|
+
if module_spec_dir is None:
|
|
126
|
+
print(
|
|
127
|
+
"Could not find velbusaio/module_spec directory. "
|
|
128
|
+
"Run the script from the repo or provide the repo path as the first argument.",
|
|
129
|
+
file=sys.stderr,
|
|
130
|
+
)
|
|
131
|
+
return 1
|
|
132
|
+
|
|
133
|
+
spec_files = sorted(module_spec_dir.glob("*.json"))
|
|
134
|
+
if not spec_files:
|
|
135
|
+
print(
|
|
136
|
+
f"No module spec JSON files found under {module_spec_dir}", file=sys.stderr
|
|
137
|
+
)
|
|
138
|
+
return 1
|
|
139
|
+
|
|
140
|
+
all_errors: list[str] = []
|
|
141
|
+
for p in spec_files:
|
|
142
|
+
errs = validate_spec(p)
|
|
143
|
+
all_errors.extend(errs)
|
|
144
|
+
|
|
145
|
+
if all_errors:
|
|
146
|
+
print("Module spec validation failed. Problems found:")
|
|
147
|
+
for e in all_errors:
|
|
148
|
+
print(f" - {e}")
|
|
149
|
+
return 1
|
|
150
|
+
|
|
151
|
+
print("Module spec validation passed: all editable channels have memory locations.")
|
|
152
|
+
return 0
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
if __name__ == "__main__":
|
|
156
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: velbus-aio
|
|
3
|
+
Version: 2025.11.0
|
|
4
|
+
Summary: Open-source home automation platform running on Python 3.
|
|
5
|
+
Author-email: Maikel Punie <maikel.punie@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Source Code, https://github.com/Cereal2nd/velbus-aio
|
|
8
|
+
Project-URL: Bug Reports, https://github.com/Cereal2nd/velbus-aio/issues
|
|
9
|
+
Keywords: home,velbus,automation
|
|
10
|
+
Platform: any
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Natural Language :: English
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
|
+
Classifier: Topic :: Home Automation
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
+
Requires-Python: >=3.9.0
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: pyserial>=3.5.0
|
|
29
|
+
Requires-Dist: pyserial-asyncio_fast>=0.11
|
|
30
|
+
Requires-Dist: backoff>=1.10.0
|
|
31
|
+
Requires-Dist: aiofile
|
|
32
|
+
Requires-Dist: beautifulsoup4
|
|
33
|
+
Requires-Dist: lxml
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
|
|
36
|
+

|
|
37
|
+
[](https://results.pre-commit.ci/latest/github/Cereal2nd/velbus-aio/master)
|
|
38
|
+
[](https://badge.fury.io/py/velbus-aio)
|
|
39
|
+
[](https://github.com/Cereal2nd/velbus-aio)
|
|
40
|
+
[](https://github.com/cereal2nd/velbus-aio/blob/master/LICENSE)
|
|
41
|
+
[](https://pepy.tech/project/velbus-aio)
|
|
42
|
+
[](https://pepy.tech/project/velbus-aio)
|
|
43
|
+
[](https://pepy.tech/project/velbus-aio)
|
|
44
|
+
[](https://github.com/psf/black)
|
|
45
|
+
|
|
46
|
+
> This project requires financial support, but it is free for you to use. You can join those helping to keep the lights on at:
|
|
47
|
+
>
|
|
48
|
+
> [<img src="https://raw.githubusercontent.com/Cereal2nd/hassio-velbusd/refs/heads/main/images/bmc-button.svg" width=150 height=40 style="margin: 5px"/>](https://buymeacoffee.com/cereal2nd) [<img src="https://raw.githubusercontent.com/Cereal2nd/hassio-velbusd/refs/heads/main/images/github-sponsors-button.svg" width=150 height=40 style="margin: 5px"/>](https://github.com/sponsors/Cereal2nd/)
|
|
49
|
+
|
|
50
|
+
# velbus-aio
|
|
51
|
+
|
|
52
|
+
Velbus Asyncio, a library to support the [Velbus](https://www.velbus.eu/) home automation system.
|
|
53
|
+
|
|
54
|
+
This Lib is a rewrite in python3 with asyncio of the [python-velbus](https://github.com/thomasdelaet/python-velbus/) module.
|
|
55
|
+
Part of the code from the above lib is reused.
|
|
56
|
+
Its also build on top of the [openHab velbus protocol description](https://github.com/StefCoene/moduleprotocol).
|
|
57
|
+
|
|
58
|
+
The latest version of the library is published as a python package on [pypi](https://pypi.org/project/velbus-aio/)
|
|
59
|
+
|
|
60
|
+
# Supported connections:
|
|
61
|
+
|
|
62
|
+
| Type | Example | Description |
|
|
63
|
+
| ------------------ | -------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
64
|
+
| serial | /dev/ttyACME0 | a serial device |
|
|
65
|
+
| (tcp://)ip:port | 192.168.1.9:1234 | An ip address + tcp port combination, used in combination with any velbus => tcp gateway, the tcp:// part is optional |
|
|
66
|
+
| tls://ip:port | tls://192.168.1.9:12345 | A connection to [Signum](https://www.velbus.eu/products/view/?id=458140) |
|
|
67
|
+
| tls://auth@ip:port | tls://iauthKey@192.168.1.9:12345 | A connection to [Signum](https://www.velbus.eu/products/view/?id=458140) with uthentication |
|
|
68
|
+
|
|
69
|
+
# Development
|
|
70
|
+
|
|
71
|
+
See the [contributing](https://github.com/Cereal2nd/velbus-aio/blob/master/CONTRIBUTING.md) guidelines.
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
scripts/parse_specs.py,sha256=LAz2yIoL9QqHgz9v_QRce-Mtma8LjzePBnxzkfjyrCY,4884
|
|
2
|
+
velbus_aio-2025.11.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
3
|
+
velbusaio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
velbusaio/channels.py,sha256=PLGqyVU-KZ8L-qdtiovL9Whj2zDzsAwFz8hRpNJ5s74,23566
|
|
5
|
+
velbusaio/command_registry.py,sha256=dFgkbtN2Kj3AlYENsSIL5afMF_rvhDUoPWKriSHw9L4,5447
|
|
6
|
+
velbusaio/const.py,sha256=aHClMaMS6NINTCrjeRwLbVzdvS91VgFKM8j61ks5tn0,1862
|
|
7
|
+
velbusaio/controller.py,sha256=hlsdD7WWKP4kpaMkuRsW-qIrj9YEFtz-2Yjeoa53w3Q,10570
|
|
8
|
+
velbusaio/discovery.py,sha256=Px6qoZl4QhF17aMz6JxstCORBpLzZGWEK9h4Vyvg57o,1649
|
|
9
|
+
velbusaio/exceptions.py,sha256=FHkXaM3dK5Gkk-QGAf9dLE3FPlCU2FRZWUyY-4KRNnA,515
|
|
10
|
+
velbusaio/handler.py,sha256=6-ZSJH6ts0gpOYy0_h61oSkWqlU8gcJVNs6i5PhXL3s,14042
|
|
11
|
+
velbusaio/helpers.py,sha256=iqpoereRH4JY5WAkozIqWvXWyRmhko-J-UGXDylFyEM,2537
|
|
12
|
+
velbusaio/message.py,sha256=Qzdx6Qrk-DptRnkdfirp5jEKA4hoANtPHfAxvWHzpvU,5305
|
|
13
|
+
velbusaio/module.py,sha256=YDMXhbyrmXSBcI4HEGw54by5DG0DgR10i2sNDiHr738,40082
|
|
14
|
+
velbusaio/protocol.py,sha256=59Qdw2bZ9wL4_XmxvqRD8R1LJoWfrwRRaCOM3KGa0x0,8808
|
|
15
|
+
velbusaio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
+
velbusaio/raw_message.py,sha256=ODoTPVAvyXXQSMXxtQO1U5OxcoQ4W8JJN5fotEDGSTo,4690
|
|
17
|
+
velbusaio/util.py,sha256=FW6YCiPYWOCgqHDs8-LbzME0h81mqftYVG0qqZ-oo7Y,1568
|
|
18
|
+
velbusaio/vlp_reader.py,sha256=RCSn4Ix_T5c8Z1sBsuTsM7pxCAcCL72FpCpuVZCx5xE,9067
|
|
19
|
+
velbusaio/messages/__init__.py,sha256=2Zgrk4VBoSJXKYhwS18gxuiE96jDvnpBBjeYI1yHjqs,6072
|
|
20
|
+
velbusaio/messages/blind_status.py,sha256=gxgaxbQSjZUgIb4SW-LbvDFOvZp9l-zYfaQwFCyhmPo,3509
|
|
21
|
+
velbusaio/messages/bus_active.py,sha256=AB1mEvbMXRuOaC2CQ7hzKSLmbaJnyFqqXrARi-aSdtg,749
|
|
22
|
+
velbusaio/messages/bus_error_counter_status.py,sha256=x0RIzil6IcXWq6GHEFYDkSAergNF51JQYyetDXjvvzY,1178
|
|
23
|
+
velbusaio/messages/bus_error_counter_status_request.py,sha256=zjX3k8MKgR9FO253a7bIlO-ba6SHmLi2WZT6ayAicrw,703
|
|
24
|
+
velbusaio/messages/bus_off.py,sha256=z0PmNZyTlwee6jXnzgK4zHhFvevAXNboDrEEQvyLLfc,679
|
|
25
|
+
velbusaio/messages/channel_name_part1.py,sha256=iQvv6E9Zfq338CLgYJJ8xBOmbGvehHmhGTa9nXdeh_c,2950
|
|
26
|
+
velbusaio/messages/channel_name_part2.py,sha256=O3VSVgGnnGL273OHJZ9ZwH32kPqr-fp1Fd3DE5Nh1gE,2950
|
|
27
|
+
velbusaio/messages/channel_name_part3.py,sha256=EmIbS-QUc-gJxp1BFgUQLgx6vxZUPY7wiwcB0bBoWuM,2951
|
|
28
|
+
velbusaio/messages/channel_name_request.py,sha256=t8Tpx9l4XLgF6cDwUylXk0r8vmNG2QrXJq9F4TwAaBg,2378
|
|
29
|
+
velbusaio/messages/clear_led.py,sha256=AcGRCD0OdlHcFonvHA075nVwvOtZ6KfyjrXeE6A7DZA,912
|
|
30
|
+
velbusaio/messages/counter_status.py,sha256=UgSRw-pipFb8C2DxauHw8Pjem1qTvzUFpiahui73-Is,1240
|
|
31
|
+
velbusaio/messages/counter_status_request.py,sha256=VLFaI7MFnTCH1s8acfKlcAGscJElwxYRC56eT3bbB7Y,919
|
|
32
|
+
velbusaio/messages/counter_value.py,sha256=rfde3vhMDOZuMwmc32VGn_Dbqj_4gi6QRJyh33e-tIE,1261
|
|
33
|
+
velbusaio/messages/cover_down.py,sha256=0q805ghMmdeFbNLPXZ9TIqsn4QUiwaET4W6j0XEe58E,2566
|
|
34
|
+
velbusaio/messages/cover_off.py,sha256=kzzZKSXiLJJdrXPmIx0dFwR99j6PS6VVpmZp8BbrEY4,2257
|
|
35
|
+
velbusaio/messages/cover_position.py,sha256=ZgUtZtCNSUv_g2BriTveULGWriIvt1CCLC3ItIYQGcc,1282
|
|
36
|
+
velbusaio/messages/cover_up.py,sha256=iFPCWuRhIc54oMQAFz5DZsUW23673_nNHoPFJC_HA_c,2561
|
|
37
|
+
velbusaio/messages/dali_device_settings.py,sha256=KzJ7OFkFRPuCXSOThuplM48J_kH0I3RE82ZRCpmiqYA,4870
|
|
38
|
+
velbusaio/messages/dali_device_settings_request.py,sha256=InTnrwLD7l9gCHXKlJ69FHMXcejtYMUZBtnffx9nDQU,1476
|
|
39
|
+
velbusaio/messages/dali_dim_value_status.py,sha256=Ki-GI_vrmTOOqnOLc04ONRnQ_QFvW6Nzp4jmM-eYgxc,1108
|
|
40
|
+
velbusaio/messages/dimmer_channel_status.py,sha256=5WIrBExtihX8qgZjYOthorfdyMVluNOAChZzglPcxgQ,2525
|
|
41
|
+
velbusaio/messages/dimmer_status.py,sha256=AikJN-jfdFy8rXrGMSMfrhFcYE1yHlorffxk-bcKCXU,3067
|
|
42
|
+
velbusaio/messages/edge_set_color.py,sha256=YhxTv-WtDrZ_O67Ro6V-bcHrxj3tyBI1GuzTI5LkIVw,3306
|
|
43
|
+
velbusaio/messages/edge_set_custom_color.py,sha256=Lz-7prBveqPwuDWv2Mn13X9TAXGBEquw8xz2_y9NtTk,1338
|
|
44
|
+
velbusaio/messages/fast_blinking_led.py,sha256=_AaG6NcjzG_cBNARogzu56l7DNpGU11XGrDHIkMuKss,909
|
|
45
|
+
velbusaio/messages/forced_off.py,sha256=RhYRkd7bbq4Nvg2mOp8Vmg3zvhyGeXYeAYJC8iQ_Bzw,591
|
|
46
|
+
velbusaio/messages/forced_on.py,sha256=38ZDMP70wcZ2I0w0w6HUROakhdl8bhVNELGpMCDqo6E,590
|
|
47
|
+
velbusaio/messages/interface_status_request.py,sha256=V0qfK1FM-uTT3ChXPiUOY0FdHJIB5rp4vLbOFjzgZMQ,695
|
|
48
|
+
velbusaio/messages/ir_receiver_status.py,sha256=EfCSaB0FRy1h1ofjRa-kim-oPnwWeHDmaw8XATRpJFE,375
|
|
49
|
+
velbusaio/messages/kwh_status.py,sha256=qUeHfA_66MCGUw3A-Kz9bMaw-WUZYJvc-vEcru51KiY,1414
|
|
50
|
+
velbusaio/messages/light_value_request.py,sha256=ysejBpgiifSCFHh88sKvou7f1BSqchCmTMAT3kjAGX0,599
|
|
51
|
+
velbusaio/messages/memo_text.py,sha256=RwAjm14oths6rmsjC8WFFS7uOD9UHRue1UxTd4AuQHU,1031
|
|
52
|
+
velbusaio/messages/memory_data.py,sha256=kH_jTCZCyivRnD3DJeiWKDTG01Vk91LbdRXVjj8WHBU,1031
|
|
53
|
+
velbusaio/messages/memory_data_block.py,sha256=3QufrOahEkIhJjivWtOXp62YuVaUwx6trA-OQls6ohQ,1045
|
|
54
|
+
velbusaio/messages/memory_dump_request.py,sha256=xrPsdpygD9DUF3lp-BzJacuq1dNkqz2wtHpqu_F1zVM,699
|
|
55
|
+
velbusaio/messages/module_status.py,sha256=Y2OQUzijtA27snTEVHlyoOrcaLQbSq_3KHKAVDLGR_o,6662
|
|
56
|
+
velbusaio/messages/module_status_request.py,sha256=1gwFXDOooYg7vaVPrPfM_tA1Ph7c_vigPbSyQQDnllw,1082
|
|
57
|
+
velbusaio/messages/module_subtype.py,sha256=KG-OC0eW-ZRnP1P8EWmcay6O-no6Mn2cklEjokaIW9M,1487
|
|
58
|
+
velbusaio/messages/module_type.py,sha256=7sye6R4TI5xMkp9vuelTDyUHobEOCe4DY_mLi9pFoac,4394
|
|
59
|
+
velbusaio/messages/module_type_request.py,sha256=fntMYCF1WVwSseCy3zRoZQH6JeGz8JDfTkwHC3AvcB4,754
|
|
60
|
+
velbusaio/messages/psu_load.py,sha256=001KIz84CbnC54gHxhfAiNbcEMRpVUBzDwQ7T-yxY8s,1232
|
|
61
|
+
velbusaio/messages/psu_values.py,sha256=Yd_ndU8yIei7CoL2NV6FHCefO5h_gzRsPNUYxGUGP0o,1300
|
|
62
|
+
velbusaio/messages/push_button_status.py,sha256=SRFLvNC00FdKDTSb4kNVSHeXI1i5Ey5ENxpsB3B8FuU,1554
|
|
63
|
+
velbusaio/messages/raw.py,sha256=pepZSUVY-ro5jv3ZyO6BI3ap5RZ2g_Bd9dlbaICFldQ,1964
|
|
64
|
+
velbusaio/messages/read_data_block_from_memory.py,sha256=GQwnO71rwPTFgu4YyB4FNQs4_G4dAOGuAsBqwBzmpXs,975
|
|
65
|
+
velbusaio/messages/read_data_from_memory.py,sha256=0Sy9x-7HmkazohpUqFT-647EUmCL8swIgcCpb93a-Fg,978
|
|
66
|
+
velbusaio/messages/realtime_clock_status_request.py,sha256=cDhA8lkCfvHtYwKIQ-bewCfg6xS6Uo4Ruj8KF6aGvDs,608
|
|
67
|
+
velbusaio/messages/receive_buffer_full.py,sha256=Xg4zy6rM-3Zxp3wjRRpVXA3UsFIiUZA0l-vU8c_Y33Q,858
|
|
68
|
+
velbusaio/messages/receive_ready.py,sha256=BjIu-zWlrBGV2BF1BdKF6jUbfzNLAUblq3SRTtF_0rg,687
|
|
69
|
+
velbusaio/messages/relay_status.py,sha256=du16mnJXIzbDSsaIJnoN5KkdqsloOgNkfoFuu3x_F5Y,2837
|
|
70
|
+
velbusaio/messages/restore_dimmer.py,sha256=1ZmGaTRTbqo4kNrXU8Bhla0O2FbHMlQ59AMwUDM1kJM,1931
|
|
71
|
+
velbusaio/messages/select_program.py,sha256=9jLhsCuYGQsw-FMxpmNljPZifGeE_oJ6A5bgCRI2JJ0,835
|
|
72
|
+
velbusaio/messages/sensor_settings_request.py,sha256=Uwywf0JGwBwc_2ZlfxVJicm3oUlWBNEcclcHA2_Mv5I,819
|
|
73
|
+
velbusaio/messages/sensor_temp_request.py,sha256=bTChj9udOjIww9vJ2SWmMtbry_8jLDvbWSAy_ZPmrb4,599
|
|
74
|
+
velbusaio/messages/sensor_temperature.py,sha256=ThA_4FFhQutCSt8147yCy7ocUFfizWaUV2JHoNzesNc,1558
|
|
75
|
+
velbusaio/messages/set_date.py,sha256=jcWb8c5mB71HNBwLCQ9ocEPSHQdZP0yfGJL4_swsRWQ,1359
|
|
76
|
+
velbusaio/messages/set_daylight_saving.py,sha256=CpoKrSt62UzzNxl8SDcpDcb0GKnLcD1f73-ULzqDEzU,1049
|
|
77
|
+
velbusaio/messages/set_dimmer.py,sha256=iYg4OS1xm2w5sHumSY9-42RRD4Z7F7zHjeetKMEL8PI,2153
|
|
78
|
+
velbusaio/messages/set_led.py,sha256=X8tIDzJgtf5EsH92rjoUyrECNFW-ECgAQoQ9TnvJEQk,900
|
|
79
|
+
velbusaio/messages/set_realtime_clock.py,sha256=h34pCvyPm7tSQ5BdB8yC8SRulrtldeX-ZJFv3Wcvdk0,1209
|
|
80
|
+
velbusaio/messages/set_temperature.py,sha256=78LfGOBZo2bw7eF38uyXOjUcJrsSvQPDW2qbXLOYd0o,959
|
|
81
|
+
velbusaio/messages/slider_status.py,sha256=zu_Flw-akKFRefvfojVR4NJPGnWSXYHjYTlyMq_cc7Q,1527
|
|
82
|
+
velbusaio/messages/slow_blinking_led.py,sha256=UktzpRtyM4mR7_KQuNjqenPEeM3P1vgTyMW8dnVwylQ,909
|
|
83
|
+
velbusaio/messages/start_relay_blinking_timer.py,sha256=AUqeXzQlxoW-jxG0YR7Lqt8QfDC1qX3u_MVSMkI783E,1298
|
|
84
|
+
velbusaio/messages/start_relay_timer.py,sha256=FZP4hL3t0rNF_b8GluAM_IymBRkp86epx2rJ29LXpyQ,1290
|
|
85
|
+
velbusaio/messages/switch_relay_off.py,sha256=zmFQP2M0dNKDIljAba0jswKCXsML1psBjfrQtmHuzPM,1099
|
|
86
|
+
velbusaio/messages/switch_relay_on.py,sha256=gMXV8F2rdFQMLKu3Rd1QXHqpb8RWsgcVqwnTt3C28y8,1098
|
|
87
|
+
velbusaio/messages/switch_to_comfort.py,sha256=_avZVz-OkEYe05syirB2N0d8IdgfxElRncNajRWMg_Y,791
|
|
88
|
+
velbusaio/messages/switch_to_day.py,sha256=c9ZQIfE6_tCSUksj1V_M8Pbo48-H7rbPriEtDmX6Shk,787
|
|
89
|
+
velbusaio/messages/switch_to_night.py,sha256=K-_19ZnnlJCOZJkEqWJ3antwHlHEjE7L5BA_H4vd99I,789
|
|
90
|
+
velbusaio/messages/switch_to_safe.py,sha256=5G6ZYdmi_-9W9KB-_SofUfco6ppWb802cChXHq4O6Gg,788
|
|
91
|
+
velbusaio/messages/temp_sensor_settings_part1.py,sha256=QBIzzfj7tB_9LQRlY92ac5IMGnEcgsvQPsyv9CHms9E,605
|
|
92
|
+
velbusaio/messages/temp_sensor_settings_part2.py,sha256=H7JxqsfBmIk05iTtpWfDidvyf-kGMj1YEJ-VouvAHnE,584
|
|
93
|
+
velbusaio/messages/temp_sensor_settings_part3.py,sha256=e9YUkcn11sRwcmvCCOzm87irJ5pdt81S3I1qGZBcTe0,584
|
|
94
|
+
velbusaio/messages/temp_sensor_settings_part4.py,sha256=b9s2-tj-q-ct0--_uvDOJx7JQtZ3hPShRyD5_oFGmGY,584
|
|
95
|
+
velbusaio/messages/temp_sensor_settings_request.py,sha256=kZG3QeHQdA-QEvp3newPGvNW8qhIrJAVcqTY1sZqtvQ,607
|
|
96
|
+
velbusaio/messages/temp_sensor_status.py,sha256=FnY5qFKli2P9xnpVKgysN_nOE_vx86G77Ql93vyTPEY,3828
|
|
97
|
+
velbusaio/messages/temp_set_cooling.py,sha256=_KzrPPdQNYLF6V8-KNehk6D82IQXNCe2obkct_QxX_c,724
|
|
98
|
+
velbusaio/messages/temp_set_heating.py,sha256=Au6b3Y3vpwwdfCJzO5DLOPPVJ98DBrO5_hxMtc165Ho,724
|
|
99
|
+
velbusaio/messages/update_led_status.py,sha256=77wRc3sQl_wXrGvGw9r9-KY17NE5mxTJYgvHWQ5DrRU,1301
|
|
100
|
+
velbusaio/messages/very_fast_blinking_led.py,sha256=vlMEern8PoOvtO5JaAk9erMR4IKJoWUeHJcD69S3B14,913
|
|
101
|
+
velbusaio/messages/write_data_to_memory.py,sha256=gr6bi4SzK8Mw8fnp8yV-STq5jts7NoeV7zZgdptH5Vs,1039
|
|
102
|
+
velbusaio/messages/write_memory_block.py,sha256=zGnNxx_M66HpBQ8S7kagtNw8_qSRHsOLk1MuiS0uygM,1032
|
|
103
|
+
velbusaio/messages/write_module_address_and_serial_number.py,sha256=6y57j-md3btNtQddX5CUREtSs1Dzgkd953sQPZ3Pioo,1597
|
|
104
|
+
velbusaio/module_spec/01.json,sha256=Kcx8uZekXtH31W_2bNRIJluT5-KDMSkR-Z_49sYAIhU,1195
|
|
105
|
+
velbusaio/module_spec/02.json,sha256=AxJRFxljbwckAgLaQPIA-Us2_Fzk9hT27qDYW7i-1jw,225
|
|
106
|
+
velbusaio/module_spec/03.json,sha256=QDW7jXqMPxpQeY5Mm_8QoAnFaFFizxVSj40Fj1IGFnU,322
|
|
107
|
+
velbusaio/module_spec/04.json,sha256=wT0SEO3BNm7xmu9XlSk_BEgc4yE0PfxZlewmBU9G18s,4955
|
|
108
|
+
velbusaio/module_spec/05.json,sha256=aeoJdAwq5iVObsQkz5sCEeqF_zMXdTxofXLGx34XGG0,1065
|
|
109
|
+
velbusaio/module_spec/06.json,sha256=RgZ7VuIxlO_imhyQzu5EEZttzC7Wu9kgmeIV2BHQIks,3312
|
|
110
|
+
velbusaio/module_spec/07.json,sha256=oGvDuMqjBDBodkWuC7WZJU1GvqeqT_bgyymVPZMbDv8,228
|
|
111
|
+
velbusaio/module_spec/08.json,sha256=uRBrnaVxAojLswPCQJYbMD9W2N0lXgL6UjVNvzZlJqo,689
|
|
112
|
+
velbusaio/module_spec/09.json,sha256=uYDIX0Xe3IXI1IqJYznXlHYfSD1jvi76yJ7SVCHtik8,470
|
|
113
|
+
velbusaio/module_spec/0A.json,sha256=pgEYO_3okZafi50r3E4AIz5LXhb1SRqn0aVb1V2bTpE,1122
|
|
114
|
+
velbusaio/module_spec/0B.json,sha256=5BcyqpvWYduDTliR1sGgODGt_XhBVjPk2s4DrBBbCDg,1110
|
|
115
|
+
velbusaio/module_spec/0C.json,sha256=3TfriQu90L4Q3KUfKjQIQfc3sxB8QCFus-EtKy4FMtw,303
|
|
116
|
+
velbusaio/module_spec/0E.json,sha256=GUDHxwyVrD4cz8rqWjj-Ikl42CtnZhjmYq7dgM7t_W4,746
|
|
117
|
+
velbusaio/module_spec/0F.json,sha256=GUDrC6WcA3j5KgrU-VeuxPZE7YbOfxsYelKKosg0B-c,243
|
|
118
|
+
velbusaio/module_spec/10.json,sha256=6i2a83HyC0GMN5tL0I2_qpNdqn6gkqq6lJ11Jhz4ZMA,3369
|
|
119
|
+
velbusaio/module_spec/11.json,sha256=gyeaJ0MrtSzpkSKR06zXQQMVOYeQmhekzSpzQh2K3Hc,3366
|
|
120
|
+
velbusaio/module_spec/12.json,sha256=4MNE5nMZBji6lc4ie5EYq6eQvxEMDdKjH1C4PEhc_ng,1991
|
|
121
|
+
velbusaio/module_spec/13.json,sha256=reXGXbaTfVVmLekrXHlfzjsV424bb0ozG7q-PxDv27U,68
|
|
122
|
+
velbusaio/module_spec/14.json,sha256=vvje3EB01f8xy7KzwhyR_TyHCTdaHQGNm6w8uFPK3Qc,228
|
|
123
|
+
velbusaio/module_spec/15.json,sha256=_9HOT4C81QzcO4I-YXtmgNLf7bLtkMX8XkSB2cN9Res,2747
|
|
124
|
+
velbusaio/module_spec/16.json,sha256=SZ_UfFldhp3YKtrOVOz9YqQQTB-Nc24zlIin5dbB2Vw,3683
|
|
125
|
+
velbusaio/module_spec/17.json,sha256=bLZ7JDt58vZUxPT6JY1xYeWWb1-jHkOhpBRUghjkQSA,3714
|
|
126
|
+
velbusaio/module_spec/18.json,sha256=zaB0mppCAlG3bjgADdSpWkZyhoavaFWRzwj4Qzukazg,3708
|
|
127
|
+
velbusaio/module_spec/1A.json,sha256=6pXfr-NosBYZM_7oJP6GbR9bN4s02P_hYfzSxF61WVY,2705
|
|
128
|
+
velbusaio/module_spec/1B.json,sha256=u4cSacyCZjL0_GKjh_tEqkWjUNyhk1vyEQ4Q-uVLnLc,3308
|
|
129
|
+
velbusaio/module_spec/1D.json,sha256=LVpquowsxETbGB-h5ynF-kYkgbNZJjRPUGnEj2Xfk50,2841
|
|
130
|
+
velbusaio/module_spec/1E.json,sha256=aAaSAPvneeXn-27l22Gy0Dy1xEy5dsi62-lTf7ePpYo,5547
|
|
131
|
+
velbusaio/module_spec/1F.json,sha256=rZoqlrdXkmkx1k8Xznu0RXu3tyAszonVcxjFlbtgLRo,4635
|
|
132
|
+
velbusaio/module_spec/20.json,sha256=vb8jfFM0RFlT3s3GmshQ-xU4t9VHvOKlGO1tgHvFPkQ,4642
|
|
133
|
+
velbusaio/module_spec/21.json,sha256=ZzdbEGcW0P_kZRbUPA-zsAA9dZ9N_0ydvI3MyBCKXx0,7664
|
|
134
|
+
velbusaio/module_spec/22.json,sha256=uQ4Jkj5480Hw_57jhvGD125kDhPJti12NkakVGfgN8A,8680
|
|
135
|
+
velbusaio/module_spec/23.json,sha256=3jCtHfqaqHNVZ6QyG499ZKaIQyTqmTxqqLujmgTW4RY,3593
|
|
136
|
+
velbusaio/module_spec/24.json,sha256=BqE211q_8k1xN7LdV5UjZ332HopvIEfUVAecN6YbEWM,568
|
|
137
|
+
velbusaio/module_spec/25.json,sha256=H87YnDGlgnEJzokWZkrfDtGGE-3JRJEYDRnKTlL69eE,24
|
|
138
|
+
velbusaio/module_spec/28.json,sha256=gED0Nk9TzzmoxzUGp_f30s0YJoUS7waywlOCdPl6dg8,8561
|
|
139
|
+
velbusaio/module_spec/29.json,sha256=q-X-O4POUbPWw6GZcrUxYfM4nT2Xqc0UeUOg05Lvks0,4157
|
|
140
|
+
velbusaio/module_spec/2A.json,sha256=RJIqQh-aqvtB4DifBe8oiaaC47tf_r8mAMX1iJ_O3yc,4170
|
|
141
|
+
velbusaio/module_spec/2B.json,sha256=lxzrmcWLz9KHMLVbiMSfzqH7rS8Ww3De11k5pJErUlo,4173
|
|
142
|
+
velbusaio/module_spec/2C.json,sha256=84VjlZ9j5DREO72wAhdDAF9hXRBvntGCZWbwXxVWkQk,4486
|
|
143
|
+
velbusaio/module_spec/2D.json,sha256=oQCZdL84pkv8b73tZC9sO6RPD7ZuZdIRQlfnhVQmu3c,4808
|
|
144
|
+
velbusaio/module_spec/2E.json,sha256=vTFTEsUJxggTVXyd5FGb-gUlXJogf4BjHj2490aoVFs,3703
|
|
145
|
+
velbusaio/module_spec/2F.json,sha256=xCCh56q9ngY8XFsm344fJKgl36xC9C23YTyRpwwDH34,3644
|
|
146
|
+
velbusaio/module_spec/30.json,sha256=ge9H8PZWEyJCR3Ceb_O3xTY2PCjDnBO4tq8Mq437x58,1113
|
|
147
|
+
velbusaio/module_spec/31.json,sha256=o9AqfLTdjQkSd77t97A-ttQxWLEJVyKG22Ie50vsRIY,8291
|
|
148
|
+
velbusaio/module_spec/32.json,sha256=bBf98T3Fk_S8gCAn2R3DeWkHDDAQGM_sNjS4HJVGh4M,6814
|
|
149
|
+
velbusaio/module_spec/33.json,sha256=_ZFyGZRpF6WvGmuMOgWgEXuSFEt81pH_LbB8B717drQ,4341
|
|
150
|
+
velbusaio/module_spec/34.json,sha256=rbMU3hKkNHsY5lTttP_2-7CC7dhUmG8XnbJ79lZidj8,5667
|
|
151
|
+
velbusaio/module_spec/35.json,sha256=5VlXV490o4RLn3fdkE7zF_tp2R3zuPxced8DBevdw1I,5664
|
|
152
|
+
velbusaio/module_spec/36.json,sha256=xA6KPxZBQEGpIK2rF17ajv81mgP-uP47capk0ALdwdk,5658
|
|
153
|
+
velbusaio/module_spec/37.json,sha256=D9VOFdjRvfS7gCVERdk_Oq6YEkr3KCSSM7hBySmveUc,7813
|
|
154
|
+
velbusaio/module_spec/38.json,sha256=yphbnujqz83_YR6Fwioaqw8ubHCdeF2qbwM5fhXUfYM,2120
|
|
155
|
+
velbusaio/module_spec/39.json,sha256=JkSmbb9uQ43VB0Aacif-lnHYj9-P-oFsOeGblu3sHRQ,71
|
|
156
|
+
velbusaio/module_spec/3A.json,sha256=ZaE5mn1e0_5Zag7ejSlQBn-501tUnxSs7oleGWTyf-w,5556
|
|
157
|
+
velbusaio/module_spec/3B.json,sha256=B__bRk1Pdw1rw79F2gkWRiujBGRJs_miV-p6b6MkchE,5553
|
|
158
|
+
velbusaio/module_spec/3C.json,sha256=hHG0JDSs5e5X4H4oNGGg1qRGuInBupCl-JT31PoY7JI,5547
|
|
159
|
+
velbusaio/module_spec/3D.json,sha256=LNCmtB5HewEJ2mSiMagk_g0zVS-uGqkWcZAzADrZmZE,8570
|
|
160
|
+
velbusaio/module_spec/3E.json,sha256=2IcYtfiNXATaRMtFMBoMAhUA5ihEMfdISSpypWLdI2U,5434
|
|
161
|
+
velbusaio/module_spec/3F.json,sha256=o9p-zOhyyAgOrZT8JYok4qKsIDmYQS62v1HsqI_-SMU,70
|
|
162
|
+
velbusaio/module_spec/40.json,sha256=JkSmbb9uQ43VB0Aacif-lnHYj9-P-oFsOeGblu3sHRQ,71
|
|
163
|
+
velbusaio/module_spec/41.json,sha256=gdcY5w7vWoBZoOoy2iR266OaPac0KesSIdIex2TYe4k,4297
|
|
164
|
+
velbusaio/module_spec/42.json,sha256=0zSbvyG6I2O3XAhv28R_v0IQvd_h4xLQIJDXVInYR6g,59
|
|
165
|
+
velbusaio/module_spec/43.json,sha256=PGkifNobL0j436ogxY7UGwEh0k-F6HTtA1Rg-GgdofA,420
|
|
166
|
+
velbusaio/module_spec/44.json,sha256=W5jbuMT-_knS54HEvCr7clGxsT1jBz0o-VLGc9CHM60,716
|
|
167
|
+
velbusaio/module_spec/45.json,sha256=aAlc4ANbdDXJs7YhXm06te-gN43uaL80DS9qoinS2cQ,71
|
|
168
|
+
velbusaio/module_spec/48.json,sha256=An7Ovt7ZUieQjCIYEHw5RaXsIYLzIOh2KPTVWJQ72js,3372
|
|
169
|
+
velbusaio/module_spec/49.json,sha256=5lgo_9xNgtpniWsdbdmRHZTk7tpnSsvOuWa9jU3zRxU,3369
|
|
170
|
+
velbusaio/module_spec/4A.json,sha256=Qh3BUib_QAvg-BtjTdpvvEWVyDj1gRHZQo2-h19JG5s,2845
|
|
171
|
+
velbusaio/module_spec/4B.json,sha256=8Q0PFVXED1QBIQGSqaP0Gi2WU3Uh_3HyC05jpWrmuZw,3888
|
|
172
|
+
velbusaio/module_spec/4C.json,sha256=fOlTPNsxgt50cgo-dCwvbZheJJqkwvgcxqTi-sMLFEU,3688
|
|
173
|
+
velbusaio/module_spec/4D.json,sha256=9Lho_3m4H5SBhx363zCDN3HnA8zLlygIi0EgXyOolF8,3213
|
|
174
|
+
velbusaio/module_spec/4E.json,sha256=uRK3hhH8Tp115f_7TxMZQGmCLq3qJv8i6qK070TGV4w,16411
|
|
175
|
+
velbusaio/module_spec/4F.json,sha256=gfXGXEeAZ6OCjrlogMiwXPU0rdrygFQFe8QiA42ulm0,2204
|
|
176
|
+
velbusaio/module_spec/50.json,sha256=SAAFJi3aV7S1HCkn4Td4GEXgQd5tqKpTjGGrc79o2Ws,2201
|
|
177
|
+
velbusaio/module_spec/51.json,sha256=nUOsEf-nlpqaECAQ-pMgFXTVH94Gv4QAVFRNPlTnzi8,2195
|
|
178
|
+
velbusaio/module_spec/52.json,sha256=vrMkTkZ5A0z_Of2XQIhg2tgudcD3hEPEqWuO-Hva7gA,8577
|
|
179
|
+
velbusaio/module_spec/54.json,sha256=js3tuBJdsMUyOlyKgg2BRZ5jiO5T4CPvXx0kM6W71to,4865
|
|
180
|
+
velbusaio/module_spec/55.json,sha256=75vupZ7uS6pVfaef3-p0UtF3voNmnC94VboXsJlQs1E,4862
|
|
181
|
+
velbusaio/module_spec/56.json,sha256=38MpugJqU7Stxmbi2ZvasIfPcsLs9dRhO2SdaW2uDJo,4856
|
|
182
|
+
velbusaio/module_spec/57.json,sha256=nZoBuIKeO5WO7OTduFTDTwVhrQHZBuqEx4rYELR3eL8,5211
|
|
183
|
+
velbusaio/module_spec/5A.json,sha256=V_yhMdGrNxFE7J_CXJmngN-yYBz2V_tqXkKCCwI7HCE,52
|
|
184
|
+
velbusaio/module_spec/5B.json,sha256=Z-zYxcnSbPPHEyvh4P_V7USq_Zbrcj9AasB-g7KqWAs,74
|
|
185
|
+
velbusaio/module_spec/5C.json,sha256=oB5EdUHrYZwR6FV0qO2Ux15ta366GtycGSEpChPvDgY,1635
|
|
186
|
+
velbusaio/module_spec/5F.json,sha256=l0IxHeaM9ip9P23_VJ2GjUYsg21uSYfEGhN0ROizcK0,1507
|
|
187
|
+
velbusaio/module_spec/60.json,sha256=Teih3jAybl5AELjY3gFbZrFN0RIMSU1yuvdsYZlMvTo,74
|
|
188
|
+
velbusaio/module_spec/61.json,sha256=RUMK2ji4J35-tJMVCMsEW4crK1gH9BaXTXkSpfmFVig,2844
|
|
189
|
+
velbusaio/module_spec/broadcast.json,sha256=L2Sc9FhZ7NOuu7K5g5jAhvUQGDP6a2CKrg-uWh_v-sA,2250
|
|
190
|
+
velbusaio/module_spec/ignore.json,sha256=WenWeTXN4gHppgf4CzSa_mmnzBi_-f2IM2yeFIdB2cc,384
|
|
191
|
+
velbus_aio-2025.11.0.dist-info/METADATA,sha256=iMq_6ZZTbZPuABzkvVWsQKP29tmd_Oi8vvm1cq410QU,4621
|
|
192
|
+
velbus_aio-2025.11.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
193
|
+
velbus_aio-2025.11.0.dist-info/top_level.txt,sha256=cCUKBEDoGI2tmgcbkWr2XHrykO7DfyGA_75RUegyQQk,23
|
|
194
|
+
velbus_aio-2025.11.0.dist-info/RECORD,,
|