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
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""
|
|
2
|
+
:author: Maikel Punie
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import struct
|
|
8
|
+
|
|
9
|
+
from velbusaio.command_registry import register
|
|
10
|
+
from velbusaio.message import Message
|
|
11
|
+
|
|
12
|
+
COMMAND_CODE = 0xA2
|
|
13
|
+
BALANCED = 0x01
|
|
14
|
+
BOOST = 0x02
|
|
15
|
+
BACKUP = 0x03
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@register(COMMAND_CODE, ["VMBPSUMNGR-20"])
|
|
19
|
+
class PsuLoadMessage(Message):
|
|
20
|
+
|
|
21
|
+
def __init__(self, address=None):
|
|
22
|
+
Message.__init__(self)
|
|
23
|
+
self.mode = 0
|
|
24
|
+
self.load_1 = 0
|
|
25
|
+
self.load_2 = 0
|
|
26
|
+
self.out = 0
|
|
27
|
+
|
|
28
|
+
def populate(self, priority, address, rtr, data):
|
|
29
|
+
"""
|
|
30
|
+
:return: None
|
|
31
|
+
"""
|
|
32
|
+
self.needs_low_priority(priority)
|
|
33
|
+
self.needs_no_rtr(rtr)
|
|
34
|
+
self.needs_data(data, 3)
|
|
35
|
+
self.set_attributes(priority, address, rtr)
|
|
36
|
+
self.mode = data[0]
|
|
37
|
+
self.load_1 = data[1]
|
|
38
|
+
self.load_2 = data[2]
|
|
39
|
+
self.out = data[3]
|
|
40
|
+
|
|
41
|
+
def data_to_binary(self):
|
|
42
|
+
"""
|
|
43
|
+
:return: bytes
|
|
44
|
+
"""
|
|
45
|
+
return (
|
|
46
|
+
bytes(
|
|
47
|
+
[
|
|
48
|
+
COMMAND_CODE,
|
|
49
|
+
self.mode,
|
|
50
|
+
self.load_1,
|
|
51
|
+
self.load_2,
|
|
52
|
+
self.out,
|
|
53
|
+
]
|
|
54
|
+
)
|
|
55
|
+
+ struct.pack(">L", self.delay_time)[-3:]
|
|
56
|
+
)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""
|
|
2
|
+
:author: Maikel Punie
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import struct
|
|
8
|
+
|
|
9
|
+
from velbusaio.command_registry import register
|
|
10
|
+
from velbusaio.message import Message
|
|
11
|
+
|
|
12
|
+
COMMAND_CODE = 0xA3
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@register(COMMAND_CODE, ["VMBPSUMNGR-20"])
|
|
16
|
+
class PsuValuesMessage(Message):
|
|
17
|
+
|
|
18
|
+
def __init__(self, address=None):
|
|
19
|
+
Message.__init__(self)
|
|
20
|
+
self.channel = 0
|
|
21
|
+
self.watt = 0
|
|
22
|
+
self.volt = 0
|
|
23
|
+
self.amp = 0
|
|
24
|
+
|
|
25
|
+
def populate(self, priority, address, rtr, data):
|
|
26
|
+
"""
|
|
27
|
+
:return: None
|
|
28
|
+
"""
|
|
29
|
+
self.needs_low_priority(priority)
|
|
30
|
+
self.needs_no_rtr(rtr)
|
|
31
|
+
self.needs_data(data, 3)
|
|
32
|
+
self.set_attributes(priority, address, rtr)
|
|
33
|
+
self.channel = (data[0] & 0xF0) >> 4
|
|
34
|
+
self.watt = ((data[0] & 0x0F) << 16 | data[1] << 8 | data[2]) / 1000
|
|
35
|
+
self.volt = (data[3] << 8 | data[4]) / 1000
|
|
36
|
+
self.amp = (data[5] << 8 | data[6]) / 1000
|
|
37
|
+
|
|
38
|
+
def data_to_binary(self):
|
|
39
|
+
"""
|
|
40
|
+
:return: bytes
|
|
41
|
+
"""
|
|
42
|
+
return (
|
|
43
|
+
bytes(
|
|
44
|
+
[
|
|
45
|
+
COMMAND_CODE,
|
|
46
|
+
self.mode,
|
|
47
|
+
self.load_1,
|
|
48
|
+
self.load_2,
|
|
49
|
+
self.out,
|
|
50
|
+
]
|
|
51
|
+
)
|
|
52
|
+
+ struct.pack(">L", self.delay_time)[-3:]
|
|
53
|
+
)
|
velbusaio/messages/raw.py
CHANGED
|
@@ -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
|
from velbusaio.command_registry import register
|
|
@@ -9,7 +10,20 @@ from velbusaio.message import Message
|
|
|
9
10
|
COMMAND_CODE = 0x11
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
@register(
|
|
13
|
+
@register(
|
|
14
|
+
COMMAND_CODE,
|
|
15
|
+
[
|
|
16
|
+
"VMB1DM",
|
|
17
|
+
"VMBDME",
|
|
18
|
+
"VMBDMI-R",
|
|
19
|
+
"VMBDMI",
|
|
20
|
+
"VMB1LED",
|
|
21
|
+
"VMB4DC",
|
|
22
|
+
"VMB8DC-20",
|
|
23
|
+
"VMB2DC-20",
|
|
24
|
+
"VMB4LEDPWM-20",
|
|
25
|
+
],
|
|
26
|
+
)
|
|
13
27
|
class RestoreDimmerMessage(Message):
|
|
14
28
|
"""
|
|
15
29
|
send by:
|
|
@@ -53,7 +67,7 @@ class RestoreDimmerMessage(Message):
|
|
|
53
67
|
) + self.dimmer_transitiontime.to_bytes(2, byteorder="big", signed=False)
|
|
54
68
|
|
|
55
69
|
|
|
56
|
-
@register(COMMAND_CODE, ["VMBDALI"])
|
|
70
|
+
@register(COMMAND_CODE, ["VMBDALI", "VMBDALI-20"])
|
|
57
71
|
class RestoreDimmerMessage2(RestoreDimmerMessage):
|
|
58
72
|
def byte_to_channels(self, byte: int) -> list[int]:
|
|
59
73
|
return [byte]
|
velbusaio/messages/set_date.py
CHANGED
|
@@ -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
|
|
@@ -17,11 +16,11 @@ class SetDate(Message):
|
|
|
17
16
|
received by all modules
|
|
18
17
|
"""
|
|
19
18
|
|
|
20
|
-
def __init__(self, address=0x00) -> None:
|
|
19
|
+
def __init__(self, address=0x00, day=None, mon=None, year=None) -> None:
|
|
21
20
|
Message.__init__(self)
|
|
22
|
-
self._day =
|
|
23
|
-
self._mon =
|
|
24
|
-
self._year =
|
|
21
|
+
self._day = day
|
|
22
|
+
self._mon = mon
|
|
23
|
+
self._year = year
|
|
25
24
|
self.set_defaults(address)
|
|
26
25
|
|
|
27
26
|
def set_defaults(self, address) -> None:
|
|
@@ -29,10 +28,6 @@ class SetDate(Message):
|
|
|
29
28
|
self.set_address(address)
|
|
30
29
|
self.set_low_priority()
|
|
31
30
|
self.set_no_rtr()
|
|
32
|
-
lclt = time.localtime()
|
|
33
|
-
self._day = lclt[2]
|
|
34
|
-
self._mon = lclt[1]
|
|
35
|
-
self._year = lclt[0]
|
|
36
31
|
|
|
37
32
|
def populate(self, priority, address, rtr, data) -> None:
|
|
38
33
|
"""
|
|
@@ -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
|
|
@@ -17,9 +16,9 @@ class SetDaylightSaving(Message):
|
|
|
17
16
|
received by all modules
|
|
18
17
|
"""
|
|
19
18
|
|
|
20
|
-
def __init__(self, address=0x00) -> None:
|
|
19
|
+
def __init__(self, address=0x00, ds=None) -> None:
|
|
21
20
|
Message.__init__(self)
|
|
22
|
-
self._ds =
|
|
21
|
+
self._ds = ds
|
|
23
22
|
self.set_defaults(address)
|
|
24
23
|
|
|
25
24
|
def set_defaults(self, address) -> None:
|
|
@@ -27,8 +26,6 @@ class SetDaylightSaving(Message):
|
|
|
27
26
|
self.set_address(address)
|
|
28
27
|
self.set_low_priority()
|
|
29
28
|
self.set_no_rtr()
|
|
30
|
-
lclt = time.localtime()
|
|
31
|
-
self._ds = not lclt[8]
|
|
32
29
|
|
|
33
30
|
def populate(self, priority, address, rtr, data) -> None:
|
|
34
31
|
"""
|
velbusaio/messages/set_dimmer.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
"""
|
|
2
|
-
|
|
3
|
-
"""
|
|
1
|
+
""":author: Frank van Breugel"""
|
|
2
|
+
|
|
4
3
|
from __future__ import annotations
|
|
5
4
|
|
|
6
5
|
from velbusaio.command_registry import register
|
|
@@ -9,9 +8,12 @@ from velbusaio.message import Message
|
|
|
9
8
|
COMMAND_CODE = 0x07
|
|
10
9
|
|
|
11
10
|
|
|
12
|
-
@register(
|
|
11
|
+
@register(
|
|
12
|
+
COMMAND_CODE,
|
|
13
|
+
["VMB1DM", "VMBDME", "VMB4DC", "VMB1LED"],
|
|
14
|
+
)
|
|
13
15
|
class SetDimmerMessage(Message):
|
|
14
|
-
"""
|
|
16
|
+
"""with this message the channel numbering is a bitnumber
|
|
15
17
|
send by:
|
|
16
18
|
received by: VMBDME, VMB4DC
|
|
17
19
|
"""
|
|
@@ -30,9 +32,7 @@ class SetDimmerMessage(Message):
|
|
|
30
32
|
self.set_no_rtr()
|
|
31
33
|
|
|
32
34
|
def populate(self, priority, address, rtr, data):
|
|
33
|
-
"""
|
|
34
|
-
:return: None
|
|
35
|
-
"""
|
|
35
|
+
""":return: None"""
|
|
36
36
|
self.needs_high_priority(priority)
|
|
37
37
|
self.needs_no_rtr(rtr)
|
|
38
38
|
self.needs_data(data, 4)
|
|
@@ -44,9 +44,7 @@ class SetDimmerMessage(Message):
|
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
def data_to_binary(self):
|
|
47
|
-
"""
|
|
48
|
-
:return: bytes
|
|
49
|
-
"""
|
|
47
|
+
""":return: bytes"""
|
|
50
48
|
return bytes(
|
|
51
49
|
[
|
|
52
50
|
COMMAND_CODE,
|
|
@@ -56,9 +54,20 @@ class SetDimmerMessage(Message):
|
|
|
56
54
|
) + self.dimmer_transitiontime.to_bytes(2, byteorder="big", signed=False)
|
|
57
55
|
|
|
58
56
|
|
|
59
|
-
@register(
|
|
57
|
+
@register(
|
|
58
|
+
COMMAND_CODE,
|
|
59
|
+
[
|
|
60
|
+
"VMBDALI",
|
|
61
|
+
"VMBDALI-20",
|
|
62
|
+
"VMBDMI",
|
|
63
|
+
"VMBDMI-R",
|
|
64
|
+
"VMB8DC-20",
|
|
65
|
+
"VMB4LEDPWM-20",
|
|
66
|
+
"VMB2DC-20",
|
|
67
|
+
],
|
|
68
|
+
)
|
|
60
69
|
class SetDimmerMessage2(SetDimmerMessage):
|
|
61
|
-
"""
|
|
70
|
+
"""This with this message the channel numbering is an integer
|
|
62
71
|
send by:
|
|
63
72
|
received by: VMBDALI
|
|
64
73
|
"""
|
velbusaio/messages/set_led.py
CHANGED
|
@@ -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
|
|
@@ -17,11 +16,11 @@ class SetRealtimeClock(Message):
|
|
|
17
16
|
received by all modules
|
|
18
17
|
"""
|
|
19
18
|
|
|
20
|
-
def __init__(self, address=0x00) -> None:
|
|
19
|
+
def __init__(self, address=0x00, wday=None, hour=None, min=None) -> None:
|
|
21
20
|
Message.__init__(self)
|
|
22
|
-
self._wday =
|
|
23
|
-
self._hour =
|
|
24
|
-
self._min =
|
|
21
|
+
self._wday = wday
|
|
22
|
+
self._hour = hour
|
|
23
|
+
self._min = min
|
|
25
24
|
self.set_defaults(address)
|
|
26
25
|
|
|
27
26
|
def set_defaults(self, address) -> None:
|
|
@@ -29,10 +28,6 @@ class SetRealtimeClock(Message):
|
|
|
29
28
|
self.set_address(address)
|
|
30
29
|
self.set_low_priority()
|
|
31
30
|
self.set_no_rtr()
|
|
32
|
-
lclt = time.localtime()
|
|
33
|
-
self._wday = lclt[6]
|
|
34
|
-
self._hour = lclt[3]
|
|
35
|
-
self._min = lclt[4]
|
|
36
31
|
|
|
37
32
|
def populate(self, priority, address, rtr, data) -> None:
|
|
38
33
|
"""
|
|
@@ -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
|
from velbusaio.command_registry import register
|
|
@@ -9,7 +10,20 @@ from velbusaio.message import Message
|
|
|
9
10
|
COMMAND_CODE = 0x0F
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
@register(
|
|
13
|
+
@register(
|
|
14
|
+
COMMAND_CODE,
|
|
15
|
+
[
|
|
16
|
+
"VMB1DM",
|
|
17
|
+
"VMBDME",
|
|
18
|
+
"VMB4DC",
|
|
19
|
+
"VMBDMI",
|
|
20
|
+
"VMBDMI-R",
|
|
21
|
+
"VMB1LED",
|
|
22
|
+
"VMB8DC-20",
|
|
23
|
+
"VMB2DC-20",
|
|
24
|
+
"VMB4LEDPWM-20",
|
|
25
|
+
],
|
|
26
|
+
)
|
|
13
27
|
class SliderStatusMessage(Message):
|
|
14
28
|
"""
|
|
15
29
|
sent by: VMBDME
|