velbus-aio 2023.12.0__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-2023.12.0.dist-info → velbus_aio-2025.11.0.dist-info}/METADATA +24 -8
- velbus_aio-2025.11.0.dist-info/RECORD +194 -0
- {velbus_aio-2023.12.0.dist-info → velbus_aio-2025.11.0.dist-info}/WHEEL +1 -1
- {velbus_aio-2023.12.0.dist-info → velbus_aio-2025.11.0.dist-info}/top_level.txt +1 -0
- velbusaio/channels.py +35 -14
- velbusaio/command_registry.py +32 -5
- velbusaio/const.py +10 -2
- velbusaio/controller.py +183 -145
- velbusaio/handler.py +286 -154
- velbusaio/helpers.py +2 -1
- velbusaio/message.py +14 -8
- velbusaio/messages/__init__.py +6 -2
- velbusaio/messages/blind_status.py +4 -2
- velbusaio/messages/bus_active.py +1 -0
- velbusaio/messages/bus_error_counter_status.py +1 -0
- velbusaio/messages/bus_error_counter_status_request.py +1 -0
- velbusaio/messages/bus_off.py +1 -0
- velbusaio/messages/channel_name_part1.py +18 -0
- velbusaio/messages/channel_name_part2.py +18 -0
- velbusaio/messages/channel_name_part3.py +18 -0
- velbusaio/messages/channel_name_request.py +2 -1
- velbusaio/messages/clear_led.py +1 -0
- velbusaio/messages/counter_status.py +1 -0
- velbusaio/messages/counter_status_request.py +1 -0
- velbusaio/messages/counter_value.py +44 -0
- velbusaio/messages/cover_down.py +2 -1
- velbusaio/messages/cover_off.py +2 -3
- velbusaio/messages/cover_position.py +3 -4
- velbusaio/messages/cover_up.py +2 -1
- velbusaio/messages/dali_device_settings.py +2 -1
- velbusaio/messages/dali_device_settings_request.py +2 -1
- velbusaio/messages/dali_dim_value_status.py +4 -1
- velbusaio/messages/dimmer_channel_status.py +5 -1
- velbusaio/messages/dimmer_status.py +13 -1
- velbusaio/messages/edge_set_color.py +1 -0
- velbusaio/messages/edge_set_custom_color.py +1 -0
- velbusaio/messages/fast_blinking_led.py +1 -0
- velbusaio/messages/forced_off.py +1 -0
- velbusaio/messages/forced_on.py +1 -0
- velbusaio/messages/interface_status_request.py +1 -0
- velbusaio/messages/ir_receiver_status.py +1 -0
- velbusaio/messages/kwh_status.py +1 -0
- velbusaio/messages/light_value_request.py +1 -0
- velbusaio/messages/memo_text.py +1 -0
- velbusaio/messages/memory_data.py +1 -0
- velbusaio/messages/memory_data_block.py +1 -0
- velbusaio/messages/memory_dump_request.py +1 -0
- velbusaio/messages/module_status.py +13 -0
- velbusaio/messages/module_status_request.py +5 -2
- velbusaio/messages/module_subtype.py +4 -3
- velbusaio/messages/module_type.py +17 -7
- 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 +1 -0
- velbusaio/messages/raw.py +1 -0
- velbusaio/messages/read_data_block_from_memory.py +1 -0
- velbusaio/messages/read_data_from_memory.py +1 -0
- velbusaio/messages/realtime_clock_status_request.py +1 -0
- velbusaio/messages/receive_buffer_full.py +1 -0
- velbusaio/messages/receive_ready.py +1 -0
- velbusaio/messages/relay_status.py +1 -0
- velbusaio/messages/restore_dimmer.py +16 -2
- velbusaio/messages/select_program.py +1 -0
- velbusaio/messages/sensor_settings_request.py +1 -0
- velbusaio/messages/sensor_temp_request.py +1 -0
- velbusaio/messages/sensor_temperature.py +1 -0
- velbusaio/messages/set_date.py +5 -10
- velbusaio/messages/set_daylight_saving.py +3 -6
- velbusaio/messages/set_dimmer.py +22 -13
- velbusaio/messages/set_led.py +1 -0
- velbusaio/messages/set_realtime_clock.py +5 -10
- velbusaio/messages/set_temperature.py +1 -0
- velbusaio/messages/slider_status.py +15 -1
- velbusaio/messages/slow_blinking_led.py +1 -0
- velbusaio/messages/start_relay_blinking_timer.py +1 -0
- velbusaio/messages/start_relay_timer.py +1 -0
- velbusaio/messages/switch_relay_off.py +1 -0
- velbusaio/messages/switch_relay_on.py +1 -0
- velbusaio/messages/switch_to_comfort.py +1 -0
- velbusaio/messages/switch_to_day.py +1 -0
- velbusaio/messages/switch_to_night.py +1 -0
- velbusaio/messages/switch_to_safe.py +1 -0
- velbusaio/messages/temp_sensor_settings_part1.py +1 -0
- velbusaio/messages/temp_sensor_settings_part2.py +1 -0
- velbusaio/messages/temp_sensor_settings_part3.py +1 -0
- velbusaio/messages/temp_sensor_settings_part4.py +1 -0
- velbusaio/messages/temp_sensor_settings_request.py +1 -0
- velbusaio/messages/temp_sensor_status.py +1 -0
- velbusaio/messages/temp_set_cooling.py +1 -0
- velbusaio/messages/temp_set_heating.py +1 -0
- velbusaio/messages/update_led_status.py +1 -0
- velbusaio/messages/very_fast_blinking_led.py +1 -0
- velbusaio/messages/write_data_to_memory.py +1 -0
- velbusaio/messages/write_memory_block.py +1 -0
- velbusaio/messages/write_module_address_and_serial_number.py +1 -0
- velbusaio/module.py +214 -102
- 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 +34 -17
- velbusaio/raw_message.py +6 -6
- velbusaio/util.py +4 -0
- velbusaio/vlp_reader.py +249 -0
- velbus_aio-2023.12.0.dist-info/RECORD +0 -103
- velbusaio/moduleprotocol/protocol.json +0 -26507
- {velbus_aio-2023.12.0.dist-info → velbus_aio-2025.11.0.dist-info/licenses}/LICENSE +0 -0
velbusaio/messages/bus_off.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Thomas Delaet <thomas@delaet.org>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
from velbusaio.command_registry import register
|
|
@@ -69,6 +70,23 @@ class ChannelNamePart1Message(Message):
|
|
|
69
70
|
"VMBELPIR",
|
|
70
71
|
"VMBDALI",
|
|
71
72
|
"VMB4AN",
|
|
73
|
+
"VMB6PB-20",
|
|
74
|
+
"VMBEL1-20",
|
|
75
|
+
"VMBEL2-20",
|
|
76
|
+
"VMBEL4-20",
|
|
77
|
+
"VMBELO-20",
|
|
78
|
+
"VMBGP1-20",
|
|
79
|
+
"VMBGP2-20",
|
|
80
|
+
"VMBGP4-20",
|
|
81
|
+
"VMBGPO-20",
|
|
82
|
+
"VMBDALI-20",
|
|
83
|
+
"VMBEL4PIR-20",
|
|
84
|
+
"VMBGP4PIR-20",
|
|
85
|
+
"VMB4LEDPWM-20",
|
|
86
|
+
"VMB8DC-20",
|
|
87
|
+
"VMB2DC-20",
|
|
88
|
+
"VMB8IN-20",
|
|
89
|
+
"VMBPSUMNGR-20",
|
|
72
90
|
],
|
|
73
91
|
)
|
|
74
92
|
class ChannelNamePart1Message2(ChannelNamePart1Message):
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Thomas Delaet <thomas@delaet.org>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
from velbusaio.command_registry import register
|
|
@@ -69,6 +70,23 @@ class ChannelNamePart2Message(Message):
|
|
|
69
70
|
"VMBELPIR",
|
|
70
71
|
"VMBDALI",
|
|
71
72
|
"VMB4AN",
|
|
73
|
+
"VMB6PB-20",
|
|
74
|
+
"VMBEL1-20",
|
|
75
|
+
"VMBEL2-20",
|
|
76
|
+
"VMBEL4-20",
|
|
77
|
+
"VMBELO-20",
|
|
78
|
+
"VMBGP1-20",
|
|
79
|
+
"VMBGP2-20",
|
|
80
|
+
"VMBGP4-20",
|
|
81
|
+
"VMBGPO-20",
|
|
82
|
+
"VMBDALI-20",
|
|
83
|
+
"VMBEL4PIR-20",
|
|
84
|
+
"VMBGP4PIR-20",
|
|
85
|
+
"VMB8DC-20",
|
|
86
|
+
"VMB2DC-20",
|
|
87
|
+
"VMB8IN-20",
|
|
88
|
+
"VMB4LEDPWM-20",
|
|
89
|
+
"VMBPSUMNGR-20",
|
|
72
90
|
],
|
|
73
91
|
)
|
|
74
92
|
class ChannelNamePart2Message2(ChannelNamePart2Message):
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Thomas Delaet <thomas@delaet.org>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
from velbusaio.command_registry import register
|
|
@@ -69,6 +70,23 @@ class ChannelNamePart3Message(Message):
|
|
|
69
70
|
"VMBELPIR",
|
|
70
71
|
"VMBDALI",
|
|
71
72
|
"VMB4AN",
|
|
73
|
+
"VMB6PB-20",
|
|
74
|
+
"VMBEL1-20",
|
|
75
|
+
"VMBEL2-20",
|
|
76
|
+
"VMBEL4-20",
|
|
77
|
+
"VMBELO-20",
|
|
78
|
+
"VMBGP1-20",
|
|
79
|
+
"VMBGP2-20",
|
|
80
|
+
"VMBGP4-20",
|
|
81
|
+
"VMBGPO-20",
|
|
82
|
+
"VMBDALI-20",
|
|
83
|
+
"VMBEL4PIR-20",
|
|
84
|
+
"VMBGP4PIR-20",
|
|
85
|
+
"VMB8DC-20",
|
|
86
|
+
"VMB2DC-20",
|
|
87
|
+
"VMB8IN-20",
|
|
88
|
+
"VMB4LEDPWM-20",
|
|
89
|
+
"VMBPSUMNGR-20",
|
|
72
90
|
],
|
|
73
91
|
)
|
|
74
92
|
class ChannelNamePart3Message2(ChannelNamePart3Message):
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Thomas Delaet <thomas@delaet.org> and Maikel Punie <maikel.punie@gmail.com>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
from velbusaio.command_registry import register
|
|
@@ -70,7 +71,7 @@ class ChannelNameRequestMessage2(ChannelNameRequestMessage):
|
|
|
70
71
|
return bytes([COMMAND_CODE, tmp])
|
|
71
72
|
|
|
72
73
|
|
|
73
|
-
@register(COMMAND_CODE, ["VMBDALI"])
|
|
74
|
+
@register(COMMAND_CODE, ["VMBDALI", "VMBDALI-20"])
|
|
74
75
|
class ChannelNameRequestMessage3(ChannelNameRequestMessage):
|
|
75
76
|
"""
|
|
76
77
|
send by:
|
velbusaio/messages/clear_led.py
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""
|
|
2
|
+
:author: Maikel Punie <maikel.punie@gmail.com>
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from velbusaio.command_registry import register
|
|
8
|
+
from velbusaio.message import Message
|
|
9
|
+
|
|
10
|
+
COMMAND_CODE = 0xA4
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register(COMMAND_CODE, ["VMB8IN-20"])
|
|
14
|
+
class CounterValueMessage(Message):
|
|
15
|
+
|
|
16
|
+
def __init__(self, address=None):
|
|
17
|
+
Message.__init__(self)
|
|
18
|
+
self.channel = 0
|
|
19
|
+
self.power = 0
|
|
20
|
+
self.energy = 0
|
|
21
|
+
|
|
22
|
+
def populate(self, priority, address, rtr, data):
|
|
23
|
+
"""
|
|
24
|
+
-DB0 bit 0-4 = channel
|
|
25
|
+
-DB0 bit 5-7 = Highest nibble (bits 19…16) of Power
|
|
26
|
+
-DB1 = bits 15…8 of Power
|
|
27
|
+
-DB2 = bits 7…0 of Power
|
|
28
|
+
-DB3 bit 0-7 = energy counter
|
|
29
|
+
-DB4 bit 0-7 = energy counter
|
|
30
|
+
-DB5 bit 0-7 = energy counter
|
|
31
|
+
:return: None
|
|
32
|
+
"""
|
|
33
|
+
self.needs_no_rtr(rtr)
|
|
34
|
+
self.needs_data(data, 7)
|
|
35
|
+
self.set_attributes(priority, address, rtr)
|
|
36
|
+
self.channel = (data[0] & 0x0F0) + 1
|
|
37
|
+
self.power = (data[0] << 16) + (data[1] << 8) + data[2]
|
|
38
|
+
self.energy = (data[3] << 16) + (data[4] << 8) + data[5]
|
|
39
|
+
|
|
40
|
+
def get_channels(self):
|
|
41
|
+
"""
|
|
42
|
+
:return: list
|
|
43
|
+
"""
|
|
44
|
+
return self.channel
|
velbusaio/messages/cover_down.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Tom Dupré <gitd8400@gmail.com>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import struct
|
|
@@ -11,7 +12,7 @@ from velbusaio.message import Message
|
|
|
11
12
|
COMMAND_CODE = 0x06
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
@register(COMMAND_CODE, ["VMB1BLE", "VMB2BLE", "VMB1BLS"])
|
|
15
|
+
@register(COMMAND_CODE, ["VMB1BLE", "VMB2BLE", "VMB1BLS", "VMB2BLE-10"])
|
|
15
16
|
class CoverDownMessage(Message):
|
|
16
17
|
"""
|
|
17
18
|
sent by:
|
velbusaio/messages/cover_off.py
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Tom Dupré <gitd8400@gmail.com>
|
|
3
3
|
"""
|
|
4
|
-
from __future__ import annotations
|
|
5
4
|
|
|
6
|
-
import
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
from velbusaio.command_registry import register
|
|
9
8
|
from velbusaio.message import Message
|
|
@@ -11,7 +10,7 @@ from velbusaio.message import Message
|
|
|
11
10
|
COMMAND_CODE = 0x04
|
|
12
11
|
|
|
13
12
|
|
|
14
|
-
@register(COMMAND_CODE, ["VMB1BLE", "VMB2BLE", "VMB1BLS"])
|
|
13
|
+
@register(COMMAND_CODE, ["VMB1BLE", "VMB2BLE", "VMB1BLS", "VMB2BLE-10"])
|
|
15
14
|
class CoverOffMessage(Message):
|
|
16
15
|
"""
|
|
17
16
|
sent by:
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Maikel Punie <maikel.punie@gmail.com>
|
|
3
3
|
"""
|
|
4
|
-
from __future__ import annotations
|
|
5
4
|
|
|
6
|
-
import
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
from velbusaio.command_registry import register
|
|
9
8
|
from velbusaio.message import Message
|
|
@@ -11,7 +10,7 @@ from velbusaio.message import Message
|
|
|
11
10
|
COMMAND_CODE = 0x1C
|
|
12
11
|
|
|
13
12
|
|
|
14
|
-
@register(COMMAND_CODE, ["VMB1BLE", "VMB2BLE", "VMB1BLS"])
|
|
13
|
+
@register(COMMAND_CODE, ["VMB1BLE", "VMB2BLE", "VMB1BLS", "VMB2BLE-10"])
|
|
15
14
|
class CoverPosMessage(Message):
|
|
16
15
|
"""
|
|
17
16
|
sent by:
|
|
@@ -30,7 +29,7 @@ class CoverPosMessage(Message):
|
|
|
30
29
|
"""
|
|
31
30
|
self.needs_high_priority(priority)
|
|
32
31
|
self.needs_no_rtr(rtr)
|
|
33
|
-
self.needs_data(data,
|
|
32
|
+
self.needs_data(data, 2)
|
|
34
33
|
self.set_attributes(priority, address, rtr)
|
|
35
34
|
self.channel = self.byte_to_channel(data[0])
|
|
36
35
|
self.position = data[1]
|
velbusaio/messages/cover_up.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Tom Dupré <gitd8400@gmail.com>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import struct
|
|
@@ -11,7 +12,7 @@ from velbusaio.message import Message
|
|
|
11
12
|
COMMAND_CODE = 0x05
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
@register(COMMAND_CODE, ["VMB1BLE", "VMB2BLE", "VMB1BLS"])
|
|
15
|
+
@register(COMMAND_CODE, ["VMB1BLE", "VMB2BLE", "VMB1BLS", "VMB2BLE-10"])
|
|
15
16
|
class CoverUpMessage(Message):
|
|
16
17
|
"""
|
|
17
18
|
sent by:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Niels Laukens
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import dataclasses
|
|
@@ -12,7 +13,7 @@ from velbusaio.message import Message
|
|
|
12
13
|
COMMAND_CODE = 0xE8
|
|
13
14
|
|
|
14
15
|
|
|
15
|
-
@register(COMMAND_CODE, ["VMBDALI"])
|
|
16
|
+
@register(COMMAND_CODE, ["VMBDALI", "VMBDALI-20"])
|
|
16
17
|
class DaliDeviceSettingMsg(Message):
|
|
17
18
|
"""
|
|
18
19
|
send by: VMBDALI
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Niels Laukens
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import enum
|
|
@@ -17,7 +18,7 @@ class DataSource(enum.Enum):
|
|
|
17
18
|
FromDaliDevice = 1
|
|
18
19
|
|
|
19
20
|
|
|
20
|
-
@register(COMMAND_CODE, ["VMBDALI"])
|
|
21
|
+
@register(COMMAND_CODE, ["VMBDALI", "VMBDALI-20"])
|
|
21
22
|
class DaliDeviceSettingsRequest(Message):
|
|
22
23
|
"""
|
|
23
24
|
send by:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Niels Laukens
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
from velbusaio.command_registry import register
|
|
@@ -9,7 +10,9 @@ from velbusaio.message import Message
|
|
|
9
10
|
COMMAND_CODE = 0xA5
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
@register(
|
|
13
|
+
@register(
|
|
14
|
+
COMMAND_CODE, ["VMBDALI", "VMBDALI-20", "VMB8DC-20", "VMB4LEDPWM-20", "VMB2DC-20"]
|
|
15
|
+
)
|
|
13
16
|
class DimValueStatus(Message):
|
|
14
17
|
"""
|
|
15
18
|
send by: VMBDALI
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Frank van Breugel
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import struct
|
|
@@ -21,7 +22,10 @@ LED_FAST_BLINKING = 1 << 5
|
|
|
21
22
|
LED_VERY_FAST_BLINKING = 1 << 4
|
|
22
23
|
|
|
23
24
|
|
|
24
|
-
@register(
|
|
25
|
+
@register(
|
|
26
|
+
COMMAND_CODE,
|
|
27
|
+
["VMB4DC", "VMBDMI", "VMBDMI-R", "VMB8DC-20", "VMB4LEDPWM-20", "VMB2DC-20"],
|
|
28
|
+
)
|
|
25
29
|
class DimmerChannelStatusMessage(Message):
|
|
26
30
|
"""
|
|
27
31
|
sent by: VMB4DC
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Frank van Breugel
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import struct
|
|
@@ -24,7 +25,18 @@ LED_FAST_BLINKING = 1 << 5
|
|
|
24
25
|
LED_VERY_FAST_BLINKING = 1 << 4
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
@register(
|
|
28
|
+
@register(
|
|
29
|
+
COMMAND_CODE,
|
|
30
|
+
[
|
|
31
|
+
"VMB1DM",
|
|
32
|
+
"VMBDME",
|
|
33
|
+
"VMB1LED",
|
|
34
|
+
"VMBDALI",
|
|
35
|
+
"VMBDALI-20",
|
|
36
|
+
"VMB8DC-20",
|
|
37
|
+
"VMB4LEDPWM-20",
|
|
38
|
+
],
|
|
39
|
+
)
|
|
28
40
|
class DimmerStatusMessage(Message):
|
|
29
41
|
"""
|
|
30
42
|
sent by: VMBDME
|
velbusaio/messages/forced_off.py
CHANGED
velbusaio/messages/forced_on.py
CHANGED
velbusaio/messages/kwh_status.py
CHANGED
velbusaio/messages/memo_text.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Thomas Delaet <thomas@delaet.org>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
from velbusaio.command_registry import register
|
|
@@ -75,6 +76,18 @@ class ModuleStatusMessage(Message):
|
|
|
75
76
|
"VMBGPOD-2",
|
|
76
77
|
"VMBELO",
|
|
77
78
|
"VMB7IN",
|
|
79
|
+
"VMB6PB-20",
|
|
80
|
+
"VMBEL1-20",
|
|
81
|
+
"VMBEL2-20",
|
|
82
|
+
"VMBEL4-20",
|
|
83
|
+
"VMBELO-20",
|
|
84
|
+
"VMBGP1-20",
|
|
85
|
+
"VMBGP2-20",
|
|
86
|
+
"VMBGP4-20",
|
|
87
|
+
"VMBGPO-20",
|
|
88
|
+
"VMBEL4PIR-20",
|
|
89
|
+
"VMBGP4PIR-20",
|
|
90
|
+
"VMBPSUMNGR-20",
|
|
78
91
|
],
|
|
79
92
|
)
|
|
80
93
|
class ModuleStatusMessage2(Message):
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Thomas Delaet <thomas@delaet.org>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
from velbusaio.command_registry import register
|
|
@@ -18,7 +19,7 @@ class ModuleStatusRequestMessage(Message):
|
|
|
18
19
|
|
|
19
20
|
def __init__(self, address=None):
|
|
20
21
|
Message.__init__(self)
|
|
21
|
-
self.channels = []
|
|
22
|
+
self.channels: list | str = []
|
|
22
23
|
self.wait_after_send = 500
|
|
23
24
|
self.set_defaults(address)
|
|
24
25
|
|
|
@@ -36,4 +37,6 @@ class ModuleStatusRequestMessage(Message):
|
|
|
36
37
|
"""
|
|
37
38
|
:return: bytes
|
|
38
39
|
"""
|
|
39
|
-
|
|
40
|
+
if isinstance(self.channels, list):
|
|
41
|
+
return bytes([COMMAND_CODE, self.channels_to_byte(self.channels)])
|
|
42
|
+
return bytes([COMMAND_CODE, int(self.channels, 16)])
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Thomas Delaet <thomas@delaet.org>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import struct
|
|
@@ -24,7 +25,7 @@ class ModuleSubTypeMessage(Message):
|
|
|
24
25
|
|
|
25
26
|
# pylint: disable-msg=R0902
|
|
26
27
|
|
|
27
|
-
def __init__(self, address=None, sub_address_offset: int = 0):
|
|
28
|
+
def __init__(self, address=None, sub_address_offset: int = 0) -> None:
|
|
28
29
|
Message.__init__(self)
|
|
29
30
|
self.module_type = 0x00
|
|
30
31
|
self.sub_address_1 = 0xFF
|
|
@@ -35,13 +36,13 @@ class ModuleSubTypeMessage(Message):
|
|
|
35
36
|
self.serial = 0
|
|
36
37
|
self.sub_address_offset = sub_address_offset
|
|
37
38
|
|
|
38
|
-
def module_name(self):
|
|
39
|
+
def module_name(self) -> str:
|
|
39
40
|
"""
|
|
40
41
|
:return: str
|
|
41
42
|
"""
|
|
42
43
|
return "Unknown"
|
|
43
44
|
|
|
44
|
-
def populate(self, priority, address, rtr, data):
|
|
45
|
+
def populate(self, priority, address, rtr, data) -> None:
|
|
45
46
|
"""
|
|
46
47
|
:return: None
|
|
47
48
|
"""
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Thomas Delaet <thomas@delaet.org>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import struct
|
|
7
8
|
|
|
8
|
-
from velbusaio.command_registry import register
|
|
9
|
+
from velbusaio.command_registry import MODULE_DIRECTORY, register
|
|
9
10
|
from velbusaio.message import Message
|
|
10
11
|
|
|
11
12
|
COMMAND_CODE = 0xFF
|
|
@@ -97,7 +98,7 @@ class ModuleTypeMessage(Message):
|
|
|
97
98
|
|
|
98
99
|
# pylint: disable-msg=R0902
|
|
99
100
|
|
|
100
|
-
def __init__(self, address=None):
|
|
101
|
+
def __init__(self, address=None) -> None:
|
|
101
102
|
Message.__init__(self)
|
|
102
103
|
self.module_type = 0x00
|
|
103
104
|
self.led_on = []
|
|
@@ -109,13 +110,18 @@ class ModuleTypeMessage(Message):
|
|
|
109
110
|
self.build_week = 0
|
|
110
111
|
self.set_defaults(address)
|
|
111
112
|
|
|
112
|
-
def
|
|
113
|
+
def module_type_name(self) -> str:
|
|
113
114
|
"""
|
|
114
115
|
:return: str
|
|
115
116
|
"""
|
|
116
|
-
return "Unknown"
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
return (
|
|
119
|
+
MODULE_DIRECTORY[self.module_type]
|
|
120
|
+
if self.module_type in MODULE_DIRECTORY
|
|
121
|
+
else "Unknown"
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
def populate(self, priority, address, rtr, data) -> None:
|
|
119
125
|
"""
|
|
120
126
|
:return: None
|
|
121
127
|
"""
|
|
@@ -147,10 +153,14 @@ class ModuleTypeMessage(Message):
|
|
|
147
153
|
"VMBGPO-20",
|
|
148
154
|
"VMBEL4PIR-20",
|
|
149
155
|
"VMBGP4PIR-20",
|
|
156
|
+
"VMB4LEDPWM-20",
|
|
157
|
+
"VMB8IN-20",
|
|
158
|
+
"VMB8DC-20",
|
|
159
|
+
"VMB2DC-20",
|
|
150
160
|
],
|
|
151
161
|
)
|
|
152
162
|
class ModuleType2Message(Message):
|
|
153
|
-
def __init__(self, address=None):
|
|
163
|
+
def __init__(self, address=None) -> None:
|
|
154
164
|
Message.__init__(self)
|
|
155
165
|
self.module_type = 0x00
|
|
156
166
|
self.led_on = []
|
|
@@ -163,7 +173,7 @@ class ModuleType2Message(Message):
|
|
|
163
173
|
self.term = 0
|
|
164
174
|
self.set_defaults(address)
|
|
165
175
|
|
|
166
|
-
def module_name(self):
|
|
176
|
+
def module_name(self) -> str:
|
|
167
177
|
"""
|
|
168
178
|
:return: str
|
|
169
179
|
"""
|