velbus-aio 2023.11.0__py3-none-any.whl → 2024.4.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.
Potentially problematic release.
This version of velbus-aio might be problematic. Click here for more details.
- {velbus_aio-2023.11.0.dist-info → velbus_aio-2024.4.0.dist-info}/METADATA +3 -1
- velbus_aio-2024.4.0.dist-info/RECORD +103 -0
- {velbus_aio-2023.11.0.dist-info → velbus_aio-2024.4.0.dist-info}/WHEEL +1 -1
- velbusaio/channels.py +20 -0
- velbusaio/command_registry.py +18 -0
- velbusaio/const.py +1 -0
- velbusaio/controller.py +1 -0
- velbusaio/handler.py +2 -59
- velbusaio/helpers.py +1 -0
- velbusaio/message.py +1 -0
- velbusaio/messages/__init__.py +2 -1
- velbusaio/messages/blind_status.py +1 -0
- 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 +15 -0
- velbusaio/messages/channel_name_part2.py +14 -0
- velbusaio/messages/channel_name_part3.py +14 -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/cover_down.py +1 -0
- velbusaio/messages/cover_off.py +1 -0
- velbusaio/messages/cover_position.py +1 -0
- velbusaio/messages/cover_up.py +1 -0
- velbusaio/messages/dali_device_settings.py +2 -1
- velbusaio/messages/dali_device_settings_request.py +2 -1
- velbusaio/messages/dali_dim_value_status.py +2 -1
- velbusaio/messages/dimmer_channel_status.py +2 -1
- velbusaio/messages/dimmer_status.py +2 -1
- 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 +12 -0
- velbusaio/messages/module_status_request.py +1 -0
- velbusaio/messages/module_subtype.py +1 -0
- velbusaio/messages/module_type.py +117 -14
- velbusaio/messages/module_type_request.py +1 -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 +6 -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 -4
- velbusaio/messages/set_daylight_saving.py +5 -4
- velbusaio/messages/set_dimmer.py +6 -2
- velbusaio/messages/set_led.py +1 -0
- velbusaio/messages/set_realtime_clock.py +5 -4
- velbusaio/messages/set_temperature.py +1 -0
- velbusaio/messages/slider_status.py +5 -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 +20 -21
- velbusaio/protocol.json +10122 -0
- velbusaio/protocol.py +2 -2
- velbusaio/raw_message.py +6 -6
- velbus_aio-2023.11.0.dist-info/RECORD +0 -103
- velbusaio/moduleprotocol/protocol.json +0 -26507
- {velbus_aio-2023.11.0.dist-info → velbus_aio-2024.4.0.dist-info}/LICENSE +0 -0
- {velbus_aio-2023.11.0.dist-info → velbus_aio-2024.4.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: velbus-aio
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2024.4.0
|
|
4
4
|
Summary: Open-source home automation platform running on Python 3.
|
|
5
5
|
Author-email: Maikel Punie <maikel.punie@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
22
|
Classifier: Topic :: Home Automation
|
|
22
23
|
Classifier: Topic :: Software Development :: Libraries
|
|
23
24
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
@@ -29,6 +30,7 @@ Requires-Dist: pyserial-asyncio >=0.5
|
|
|
29
30
|
Requires-Dist: backoff >=1.10.0
|
|
30
31
|
|
|
31
32
|

|
|
33
|
+
[](https://results.pre-commit.ci/latest/github/Cereal2nd/velbus-aio/master)
|
|
32
34
|
|
|
33
35
|
# velbus-aio
|
|
34
36
|
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
velbusaio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
velbusaio/channels.py,sha256=RHX0YdaeyCMgXSV7f3VkN-grSIJu-lGStjC8CzGlU2s,22998
|
|
3
|
+
velbusaio/command_registry.py,sha256=7oFAR6w-exVZJB9AVzQv5pBdvVmaR7tNVfwOsAaB_8Q,4838
|
|
4
|
+
velbusaio/const.py,sha256=tqw1zC4Aq2iKMt4lHf_5h-W0aqDQR-XR3G0oeQLG1Ks,1551
|
|
5
|
+
velbusaio/controller.py,sha256=zqoRPaWsaxZdiLf1jWWZqUmga9Hk3_n0xFZs1WOCxuY,9254
|
|
6
|
+
velbusaio/discovery.py,sha256=Px6qoZl4QhF17aMz6JxstCORBpLzZGWEK9h4Vyvg57o,1649
|
|
7
|
+
velbusaio/exceptions.py,sha256=FHkXaM3dK5Gkk-QGAf9dLE3FPlCU2FRZWUyY-4KRNnA,515
|
|
8
|
+
velbusaio/handler.py,sha256=xqUguhhEeyagSEyCdtZ1IFnZSPd91atfhZ-sYSzygFQ,5907
|
|
9
|
+
velbusaio/helpers.py,sha256=zIHWVIizhvqJXOgbkLB3IromoGyeyk0DYqeVLCbMpkg,2543
|
|
10
|
+
velbusaio/message.py,sha256=7lf2kzI74SDXQubvnQm8weqHS4YGUSTquPm_KvNR3q0,5049
|
|
11
|
+
velbusaio/module.py,sha256=cLkNVWMchUfa_THLf17VRySly8Oe-GXkUJM7juVYxRk,34978
|
|
12
|
+
velbusaio/protocol.json,sha256=KEyfib_UUkntP9WGmCeutUQw1WgH4nT7GkGLB-Grg4E,250285
|
|
13
|
+
velbusaio/protocol.py,sha256=ofDwJfwyrVQDQ40WX2QdH1nTK-y2HibQPTo5dFY7SkQ,8224
|
|
14
|
+
velbusaio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
velbusaio/raw_message.py,sha256=ODoTPVAvyXXQSMXxtQO1U5OxcoQ4W8JJN5fotEDGSTo,4690
|
|
16
|
+
velbusaio/util.py,sha256=eCsGQJ9nuzk_B2skBlv3MsNaMaHDXo1a1qSPjObzXH4,1540
|
|
17
|
+
velbusaio/messages/__init__.py,sha256=hLkLhsJ5hcgRnhaoyFWz1g2vphdnjrXURxgwezkDBwU,5893
|
|
18
|
+
velbusaio/messages/blind_status.py,sha256=yzjoYLBxH85tBjihiGzLqebRg1urz0obBA-3q1pqSCE,3418
|
|
19
|
+
velbusaio/messages/bus_active.py,sha256=AB1mEvbMXRuOaC2CQ7hzKSLmbaJnyFqqXrARi-aSdtg,749
|
|
20
|
+
velbusaio/messages/bus_error_counter_status.py,sha256=x0RIzil6IcXWq6GHEFYDkSAergNF51JQYyetDXjvvzY,1178
|
|
21
|
+
velbusaio/messages/bus_error_counter_status_request.py,sha256=zjX3k8MKgR9FO253a7bIlO-ba6SHmLi2WZT6ayAicrw,703
|
|
22
|
+
velbusaio/messages/bus_off.py,sha256=z0PmNZyTlwee6jXnzgK4zHhFvevAXNboDrEEQvyLLfc,679
|
|
23
|
+
velbusaio/messages/channel_name_part1.py,sha256=_6zpf0niulSVKxr2F1eXXOyfX0159OtOJQyg5HUqQ8I,2883
|
|
24
|
+
velbusaio/messages/channel_name_part2.py,sha256=gPg_wShY-PgIDUm7uLB8_6WoA8-RgbRFNhULvCvj9as,2858
|
|
25
|
+
velbusaio/messages/channel_name_part3.py,sha256=AIc79eefKok7WwVYKZrwBTEHM1hyjTmqzWjpJquOAl8,2859
|
|
26
|
+
velbusaio/messages/channel_name_request.py,sha256=t8Tpx9l4XLgF6cDwUylXk0r8vmNG2QrXJq9F4TwAaBg,2378
|
|
27
|
+
velbusaio/messages/clear_led.py,sha256=AcGRCD0OdlHcFonvHA075nVwvOtZ6KfyjrXeE6A7DZA,912
|
|
28
|
+
velbusaio/messages/counter_status.py,sha256=UgSRw-pipFb8C2DxauHw8Pjem1qTvzUFpiahui73-Is,1240
|
|
29
|
+
velbusaio/messages/counter_status_request.py,sha256=VLFaI7MFnTCH1s8acfKlcAGscJElwxYRC56eT3bbB7Y,919
|
|
30
|
+
velbusaio/messages/cover_down.py,sha256=tdjsRijrEa5oNBZk6uKWUK39k5gIjcWq0kgfOf4f1lQ,2552
|
|
31
|
+
velbusaio/messages/cover_off.py,sha256=Y4dzJL_BKSATmztD444KOWlEnPuoAy3OfQ7CWaYRbMs,2258
|
|
32
|
+
velbusaio/messages/cover_position.py,sha256=3ZcNSMpj-3Y355vb7bu4IiGGgjw_2nENlo4wEseya1Q,1283
|
|
33
|
+
velbusaio/messages/cover_up.py,sha256=P20AZx8qQScbyV0sxtZOlO03Q8pFO8NunpqIr4mZ6Lw,2547
|
|
34
|
+
velbusaio/messages/dali_device_settings.py,sha256=KzJ7OFkFRPuCXSOThuplM48J_kH0I3RE82ZRCpmiqYA,4870
|
|
35
|
+
velbusaio/messages/dali_device_settings_request.py,sha256=InTnrwLD7l9gCHXKlJ69FHMXcejtYMUZBtnffx9nDQU,1476
|
|
36
|
+
velbusaio/messages/dali_dim_value_status.py,sha256=Kgtfb65HCku4OBm6uaxKFpK3VtlYaTemSjMhZqngqkY,1059
|
|
37
|
+
velbusaio/messages/dimmer_channel_status.py,sha256=uk0SqV3EMJcDGZjoJDA_iHEpgk57qaa7xg1CQkSlIvc,2484
|
|
38
|
+
velbusaio/messages/dimmer_status.py,sha256=pWsWXJGWmYGio4FyUktI9aYnIBQkGCQ5ZwaeqnenYsU,2938
|
|
39
|
+
velbusaio/messages/edge_set_color.py,sha256=enwPshhNrleAQQwc3RobPt5foZ1ynE_74SlBEuzd86w,3305
|
|
40
|
+
velbusaio/messages/edge_set_custom_color.py,sha256=Lz-7prBveqPwuDWv2Mn13X9TAXGBEquw8xz2_y9NtTk,1338
|
|
41
|
+
velbusaio/messages/fast_blinking_led.py,sha256=_AaG6NcjzG_cBNARogzu56l7DNpGU11XGrDHIkMuKss,909
|
|
42
|
+
velbusaio/messages/forced_off.py,sha256=RhYRkd7bbq4Nvg2mOp8Vmg3zvhyGeXYeAYJC8iQ_Bzw,591
|
|
43
|
+
velbusaio/messages/forced_on.py,sha256=38ZDMP70wcZ2I0w0w6HUROakhdl8bhVNELGpMCDqo6E,590
|
|
44
|
+
velbusaio/messages/interface_status_request.py,sha256=V0qfK1FM-uTT3ChXPiUOY0FdHJIB5rp4vLbOFjzgZMQ,695
|
|
45
|
+
velbusaio/messages/ir_receiver_status.py,sha256=EfCSaB0FRy1h1ofjRa-kim-oPnwWeHDmaw8XATRpJFE,375
|
|
46
|
+
velbusaio/messages/kwh_status.py,sha256=qUeHfA_66MCGUw3A-Kz9bMaw-WUZYJvc-vEcru51KiY,1414
|
|
47
|
+
velbusaio/messages/light_value_request.py,sha256=ysejBpgiifSCFHh88sKvou7f1BSqchCmTMAT3kjAGX0,599
|
|
48
|
+
velbusaio/messages/memo_text.py,sha256=RwAjm14oths6rmsjC8WFFS7uOD9UHRue1UxTd4AuQHU,1031
|
|
49
|
+
velbusaio/messages/memory_data.py,sha256=kH_jTCZCyivRnD3DJeiWKDTG01Vk91LbdRXVjj8WHBU,1031
|
|
50
|
+
velbusaio/messages/memory_data_block.py,sha256=3QufrOahEkIhJjivWtOXp62YuVaUwx6trA-OQls6ohQ,1045
|
|
51
|
+
velbusaio/messages/memory_dump_request.py,sha256=xrPsdpygD9DUF3lp-BzJacuq1dNkqz2wtHpqu_F1zVM,699
|
|
52
|
+
velbusaio/messages/module_status.py,sha256=83UrRFXgRRngcF36fogyw8G5XPFlyaoZoW7XlxwvnQE,6637
|
|
53
|
+
velbusaio/messages/module_status_request.py,sha256=s3h8F6Dpmjcb4hqDQKIzdOgocW1F_st40cctcW7WmQ4,961
|
|
54
|
+
velbusaio/messages/module_subtype.py,sha256=VQXQ-c_yFbj9_64SjfiM-PLk1hV7xUWIcQ1DZYTpKhI,1464
|
|
55
|
+
velbusaio/messages/module_type.py,sha256=toHlsLoek61cQ9JXG3alJyAuQtny1RSY7K6cM4hfNOk,4116
|
|
56
|
+
velbusaio/messages/module_type_request.py,sha256=fntMYCF1WVwSseCy3zRoZQH6JeGz8JDfTkwHC3AvcB4,754
|
|
57
|
+
velbusaio/messages/push_button_status.py,sha256=SRFLvNC00FdKDTSb4kNVSHeXI1i5Ey5ENxpsB3B8FuU,1554
|
|
58
|
+
velbusaio/messages/raw.py,sha256=pepZSUVY-ro5jv3ZyO6BI3ap5RZ2g_Bd9dlbaICFldQ,1964
|
|
59
|
+
velbusaio/messages/read_data_block_from_memory.py,sha256=GQwnO71rwPTFgu4YyB4FNQs4_G4dAOGuAsBqwBzmpXs,975
|
|
60
|
+
velbusaio/messages/read_data_from_memory.py,sha256=0Sy9x-7HmkazohpUqFT-647EUmCL8swIgcCpb93a-Fg,978
|
|
61
|
+
velbusaio/messages/realtime_clock_status_request.py,sha256=cDhA8lkCfvHtYwKIQ-bewCfg6xS6Uo4Ruj8KF6aGvDs,608
|
|
62
|
+
velbusaio/messages/receive_buffer_full.py,sha256=Xg4zy6rM-3Zxp3wjRRpVXA3UsFIiUZA0l-vU8c_Y33Q,858
|
|
63
|
+
velbusaio/messages/receive_ready.py,sha256=BjIu-zWlrBGV2BF1BdKF6jUbfzNLAUblq3SRTtF_0rg,687
|
|
64
|
+
velbusaio/messages/relay_status.py,sha256=du16mnJXIzbDSsaIJnoN5KkdqsloOgNkfoFuu3x_F5Y,2837
|
|
65
|
+
velbusaio/messages/restore_dimmer.py,sha256=YQsR7NF1pC40KaegxQhqcmL2mL57aPHsgzdA3YHrLxQ,1822
|
|
66
|
+
velbusaio/messages/select_program.py,sha256=9jLhsCuYGQsw-FMxpmNljPZifGeE_oJ6A5bgCRI2JJ0,835
|
|
67
|
+
velbusaio/messages/sensor_settings_request.py,sha256=Uwywf0JGwBwc_2ZlfxVJicm3oUlWBNEcclcHA2_Mv5I,819
|
|
68
|
+
velbusaio/messages/sensor_temp_request.py,sha256=bTChj9udOjIww9vJ2SWmMtbry_8jLDvbWSAy_ZPmrb4,599
|
|
69
|
+
velbusaio/messages/sensor_temperature.py,sha256=ThA_4FFhQutCSt8147yCy7ocUFfizWaUV2JHoNzesNc,1558
|
|
70
|
+
velbusaio/messages/set_date.py,sha256=SH11ufAZgcGDd0Fwf9Lm2UoIsL_02ZkUfsWZxl5hej4,1460
|
|
71
|
+
velbusaio/messages/set_daylight_saving.py,sha256=A3sEEVi1Wnj9AaWbNyuW_Itp7pfKNYjjMBrMTQe_QHY,1118
|
|
72
|
+
velbusaio/messages/set_dimmer.py,sha256=f2XWLbxoo0Tbj8_DUu28XSiib32VLUDtw8QRzRZBDdA,1975
|
|
73
|
+
velbusaio/messages/set_led.py,sha256=X8tIDzJgtf5EsH92rjoUyrECNFW-ECgAQoQ9TnvJEQk,900
|
|
74
|
+
velbusaio/messages/set_realtime_clock.py,sha256=c52JLvULnf-WgKfju1sYHZRGZ4PjP3v1GS8fbxYxIBc,1309
|
|
75
|
+
velbusaio/messages/set_temperature.py,sha256=78LfGOBZo2bw7eF38uyXOjUcJrsSvQPDW2qbXLOYd0o,959
|
|
76
|
+
velbusaio/messages/slider_status.py,sha256=AlBI1DJPLUwxOFfPIKYv15bFOnVXm__Tym7AW4xGMxo,1418
|
|
77
|
+
velbusaio/messages/slow_blinking_led.py,sha256=UktzpRtyM4mR7_KQuNjqenPEeM3P1vgTyMW8dnVwylQ,909
|
|
78
|
+
velbusaio/messages/start_relay_blinking_timer.py,sha256=AUqeXzQlxoW-jxG0YR7Lqt8QfDC1qX3u_MVSMkI783E,1298
|
|
79
|
+
velbusaio/messages/start_relay_timer.py,sha256=FZP4hL3t0rNF_b8GluAM_IymBRkp86epx2rJ29LXpyQ,1290
|
|
80
|
+
velbusaio/messages/switch_relay_off.py,sha256=zmFQP2M0dNKDIljAba0jswKCXsML1psBjfrQtmHuzPM,1099
|
|
81
|
+
velbusaio/messages/switch_relay_on.py,sha256=gMXV8F2rdFQMLKu3Rd1QXHqpb8RWsgcVqwnTt3C28y8,1098
|
|
82
|
+
velbusaio/messages/switch_to_comfort.py,sha256=_avZVz-OkEYe05syirB2N0d8IdgfxElRncNajRWMg_Y,791
|
|
83
|
+
velbusaio/messages/switch_to_day.py,sha256=c9ZQIfE6_tCSUksj1V_M8Pbo48-H7rbPriEtDmX6Shk,787
|
|
84
|
+
velbusaio/messages/switch_to_night.py,sha256=K-_19ZnnlJCOZJkEqWJ3antwHlHEjE7L5BA_H4vd99I,789
|
|
85
|
+
velbusaio/messages/switch_to_safe.py,sha256=5G6ZYdmi_-9W9KB-_SofUfco6ppWb802cChXHq4O6Gg,788
|
|
86
|
+
velbusaio/messages/temp_sensor_settings_part1.py,sha256=QBIzzfj7tB_9LQRlY92ac5IMGnEcgsvQPsyv9CHms9E,605
|
|
87
|
+
velbusaio/messages/temp_sensor_settings_part2.py,sha256=H7JxqsfBmIk05iTtpWfDidvyf-kGMj1YEJ-VouvAHnE,584
|
|
88
|
+
velbusaio/messages/temp_sensor_settings_part3.py,sha256=e9YUkcn11sRwcmvCCOzm87irJ5pdt81S3I1qGZBcTe0,584
|
|
89
|
+
velbusaio/messages/temp_sensor_settings_part4.py,sha256=b9s2-tj-q-ct0--_uvDOJx7JQtZ3hPShRyD5_oFGmGY,584
|
|
90
|
+
velbusaio/messages/temp_sensor_settings_request.py,sha256=kZG3QeHQdA-QEvp3newPGvNW8qhIrJAVcqTY1sZqtvQ,607
|
|
91
|
+
velbusaio/messages/temp_sensor_status.py,sha256=FnY5qFKli2P9xnpVKgysN_nOE_vx86G77Ql93vyTPEY,3828
|
|
92
|
+
velbusaio/messages/temp_set_cooling.py,sha256=_KzrPPdQNYLF6V8-KNehk6D82IQXNCe2obkct_QxX_c,724
|
|
93
|
+
velbusaio/messages/temp_set_heating.py,sha256=Au6b3Y3vpwwdfCJzO5DLOPPVJ98DBrO5_hxMtc165Ho,724
|
|
94
|
+
velbusaio/messages/update_led_status.py,sha256=77wRc3sQl_wXrGvGw9r9-KY17NE5mxTJYgvHWQ5DrRU,1301
|
|
95
|
+
velbusaio/messages/very_fast_blinking_led.py,sha256=vlMEern8PoOvtO5JaAk9erMR4IKJoWUeHJcD69S3B14,913
|
|
96
|
+
velbusaio/messages/write_data_to_memory.py,sha256=gr6bi4SzK8Mw8fnp8yV-STq5jts7NoeV7zZgdptH5Vs,1039
|
|
97
|
+
velbusaio/messages/write_memory_block.py,sha256=zGnNxx_M66HpBQ8S7kagtNw8_qSRHsOLk1MuiS0uygM,1032
|
|
98
|
+
velbusaio/messages/write_module_address_and_serial_number.py,sha256=6y57j-md3btNtQddX5CUREtSs1Dzgkd953sQPZ3Pioo,1597
|
|
99
|
+
velbus_aio-2024.4.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
100
|
+
velbus_aio-2024.4.0.dist-info/METADATA,sha256=3PZCfpL0kS3j7hbvvbv7DwzkZe4kiUgemAP3jnrhNjo,3253
|
|
101
|
+
velbus_aio-2024.4.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
102
|
+
velbus_aio-2024.4.0.dist-info/top_level.txt,sha256=W0-lSOwD23mm8FqaIe9vY20fKicBMIdUVjF-zmfxRnY,15
|
|
103
|
+
velbus_aio-2024.4.0.dist-info/RECORD,,
|
velbusaio/channels.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
author: Maikel Punie <maikel.punie@gmail.com>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
import asyncio
|
|
@@ -135,6 +136,18 @@ class Channel:
|
|
|
135
136
|
if k != "_writer" and k != "_on_status_update" and k != "_name_parts"
|
|
136
137
|
}
|
|
137
138
|
|
|
139
|
+
def to_json(self) -> dict:
|
|
140
|
+
d = self.__dict__
|
|
141
|
+
return {
|
|
142
|
+
k: d[k]
|
|
143
|
+
for k in d
|
|
144
|
+
if k != "_writer"
|
|
145
|
+
and k != "_on_status_update"
|
|
146
|
+
and k != "_name_parts"
|
|
147
|
+
and k != "_module"
|
|
148
|
+
and k != "__name__"
|
|
149
|
+
}
|
|
150
|
+
|
|
138
151
|
def __setstate__(self, state):
|
|
139
152
|
self.__dict__.update(state)
|
|
140
153
|
self._on_status_update = []
|
|
@@ -264,6 +277,10 @@ class Blind(Channel):
|
|
|
264
277
|
|
|
265
278
|
async def set_position(self, position: int) -> None:
|
|
266
279
|
# may not be supported by the module
|
|
280
|
+
if position == 100:
|
|
281
|
+
# at least VMB1BLS ignores command 0x1C with position 0x64
|
|
282
|
+
await self.close()
|
|
283
|
+
return
|
|
267
284
|
cls = commandRegistry.get_command(0x1C, self._module.get_type())
|
|
268
285
|
msg = cls(self._address)
|
|
269
286
|
msg.channel = self._num
|
|
@@ -537,6 +554,9 @@ class Temperature(Channel):
|
|
|
537
554
|
def get_climate_mode(self) -> str:
|
|
538
555
|
return self._cstatus
|
|
539
556
|
|
|
557
|
+
def get_cool_mode(self) -> str:
|
|
558
|
+
return self._cool_mode
|
|
559
|
+
|
|
540
560
|
async def set_temp(self, temp: float) -> None:
|
|
541
561
|
cls = commandRegistry.get_command(0xE4, self._module.get_type())
|
|
542
562
|
msg = cls(self._address)
|
velbusaio/command_registry.py
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"""
|
|
2
2
|
:author: Maikel Punie <maikel.punie@gmail.com> and Thomas Delaet <thomas@delaet.org>
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from __future__ import annotations
|
|
5
6
|
|
|
6
7
|
MODULE_DIRECTORY = {
|
|
7
8
|
0x01: "VMB8PB",
|
|
8
9
|
0x02: "VMB1RY",
|
|
9
10
|
0x03: "VMB1BL",
|
|
11
|
+
0x04: "VMB4LEDPWM-20",
|
|
10
12
|
0x05: "VMB6IN",
|
|
11
13
|
0x07: "VMB1DM",
|
|
12
14
|
0x08: "VMB4RY",
|
|
@@ -65,6 +67,22 @@ MODULE_DIRECTORY = {
|
|
|
65
67
|
0x43: "VMBIN",
|
|
66
68
|
0x44: "VMB4PB",
|
|
67
69
|
0x45: "VMBDALI",
|
|
70
|
+
0x48: "VMB4RYLD-10",
|
|
71
|
+
0x49: "VMB4RYNO-10",
|
|
72
|
+
0x4A: "VMB2BLE-10",
|
|
73
|
+
0x4B: "VMB8DC-20",
|
|
74
|
+
0x4C: "VMB6PB-20",
|
|
75
|
+
0x4F: "VMBEL1-20",
|
|
76
|
+
0x50: "VMBEL2-20",
|
|
77
|
+
0x51: "VMBEL4-20",
|
|
78
|
+
0x52: "VMBELO-20",
|
|
79
|
+
0x53: "VMBGP1-20",
|
|
80
|
+
0x54: "VMBGP2-20",
|
|
81
|
+
0x55: "VMBGP4-20",
|
|
82
|
+
0x56: "VMBGPO-20",
|
|
83
|
+
0x5A: "VMBDALI-20",
|
|
84
|
+
0x5C: "VMBEL4PIR-20",
|
|
85
|
+
0x5F: "VMBGP4PIR-20",
|
|
68
86
|
}
|
|
69
87
|
|
|
70
88
|
|
velbusaio/const.py
CHANGED
velbusaio/controller.py
CHANGED
velbusaio/handler.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Velbus packet handler
|
|
3
3
|
:Author maikel punie <maikel.punie@gmail.com>
|
|
4
4
|
"""
|
|
5
|
+
|
|
5
6
|
from __future__ import annotations
|
|
6
7
|
|
|
7
8
|
import asyncio
|
|
@@ -9,7 +10,6 @@ import json
|
|
|
9
10
|
import logging
|
|
10
11
|
import re
|
|
11
12
|
from typing import TYPE_CHECKING, Awaitable, Callable
|
|
12
|
-
|
|
13
13
|
import pkg_resources
|
|
14
14
|
|
|
15
15
|
from velbusaio.command_registry import commandRegistry
|
|
@@ -39,7 +39,7 @@ class PacketHandler:
|
|
|
39
39
|
self._scan_complete = False
|
|
40
40
|
self._scan_complete_event = asyncio.Event()
|
|
41
41
|
with open(
|
|
42
|
-
pkg_resources.resource_filename(__name__, "
|
|
42
|
+
pkg_resources.resource_filename(__name__, "protocol.json")
|
|
43
43
|
) as protocol_file:
|
|
44
44
|
self.pdata = json.load(protocol_file)
|
|
45
45
|
|
|
@@ -118,63 +118,6 @@ class PacketHandler:
|
|
|
118
118
|
)
|
|
119
119
|
)
|
|
120
120
|
|
|
121
|
-
# def _handle_message(self, rawMsg: RawMessage) -> None:
|
|
122
|
-
# module_type = self._velbus.get_module(rawMsg.address).get_type()
|
|
123
|
-
# this_msg = keys_exists(
|
|
124
|
-
# self.pdata, "ModuleTypes", h2(module_type), "Messages", h2(rawMsg.command), "Data"
|
|
125
|
-
# )
|
|
126
|
-
# if this_msg and "PerByte" in this_msg:
|
|
127
|
-
# self._per_byte(this_msg["PerByte"], rawMsg)
|
|
128
|
-
|
|
129
|
-
# def _per_byte(self, cmsg, rawMsg: RawMessage) -> dict:
|
|
130
|
-
# result = {}
|
|
131
|
-
# byte_index = 0
|
|
132
|
-
# for byte in rawMsg.data:
|
|
133
|
-
# num = str(byte_index)
|
|
134
|
-
# # only do something if its defined
|
|
135
|
-
# if num not in cmsg:
|
|
136
|
-
# continue
|
|
137
|
-
# # check if we can do a binary match
|
|
138
|
-
# for mat in cmsg[num]["Match"]:
|
|
139
|
-
# if (
|
|
140
|
-
# (mat.startswith("%") and re.match(mat[1:], f"{byte:08b}"))
|
|
141
|
-
# or mat == f"{byte:08b}"
|
|
142
|
-
# or mat == f"{byte:02x}"
|
|
143
|
-
# ):
|
|
144
|
-
# result = self._per_byte_handle(
|
|
145
|
-
# result, cmsg[num]["Match"][mat], byte
|
|
146
|
-
# )
|
|
147
|
-
# byte_index += 1
|
|
148
|
-
# return result
|
|
149
|
-
|
|
150
|
-
# def _per_byte_handle(self, result: dict, todo: dict, byte: int) -> dict:
|
|
151
|
-
# if "Channel" in todo:
|
|
152
|
-
# result["Channel"] = todo["Channel"]
|
|
153
|
-
# if "Value" in todo:
|
|
154
|
-
# result["Value"] = todo["Value"]
|
|
155
|
-
# if "Convert" in todo:
|
|
156
|
-
# result["ValueList"] = []
|
|
157
|
-
# if todo["Convert"] == "Decimal":
|
|
158
|
-
# result["ValueList"].append(int(byte))
|
|
159
|
-
# elif todo["Convert"] == "Counter":
|
|
160
|
-
# result["ValueList"].append(f"{byte:02x}")
|
|
161
|
-
# elif todo["Convert"] == "Temperature":
|
|
162
|
-
# print("CONVERT temperature")
|
|
163
|
-
# elif todo["Convert"] == "Divider":
|
|
164
|
-
# bin_str = f"{byte:08b}"
|
|
165
|
-
# chan = bin_str[6:]
|
|
166
|
-
# val = bin_str[:5]
|
|
167
|
-
# print(f"CONVERT Divider {chan} {val}")
|
|
168
|
-
# elif todo["Convert"] == "Channel":
|
|
169
|
-
# print("CONVERT Channel")
|
|
170
|
-
# elif todo["Convert"] == "ChannelBit":
|
|
171
|
-
# print("CONVERT ChannelBit")
|
|
172
|
-
# elif todo["Convert"].startswith("ChannelBitStatus"):
|
|
173
|
-
# print("CONVERT ChannelBitStatus")
|
|
174
|
-
# else:
|
|
175
|
-
# self._log.error("UNKNOWN convert requested: {}".format(todo["Convert"]))
|
|
176
|
-
# return result
|
|
177
|
-
|
|
178
121
|
async def _handle_module_type(self, msg: Message) -> None:
|
|
179
122
|
"""
|
|
180
123
|
load the module data
|
velbusaio/helpers.py
CHANGED
velbusaio/message.py
CHANGED
velbusaio/messages/__init__.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.messages.blind_status import BlindStatusMessage, BlindStatusNgMessage
|
|
@@ -54,7 +55,7 @@ from velbusaio.messages.raw import MeteoRawMessage, SensorRawMessage
|
|
|
54
55
|
from velbusaio.messages.module_status import ModuleStatusMessage, ModuleStatusMessage2
|
|
55
56
|
from velbusaio.messages.module_status_request import ModuleStatusRequestMessage
|
|
56
57
|
from velbusaio.messages.module_subtype import ModuleSubTypeMessage
|
|
57
|
-
from velbusaio.messages.module_type import ModuleTypeMessage
|
|
58
|
+
from velbusaio.messages.module_type import ModuleTypeMessage, ModuleType2Message
|
|
58
59
|
from velbusaio.messages.module_type_request import ModuleTypeRequestMessage
|
|
59
60
|
from velbusaio.messages.push_button_status import PushButtonStatusMessage
|
|
60
61
|
from velbusaio.messages.read_data_block_from_memory import (
|
velbusaio/messages/bus_active.py
CHANGED
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,20 @@ 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",
|
|
72
87
|
],
|
|
73
88
|
)
|
|
74
89
|
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,19 @@ 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",
|
|
72
86
|
],
|
|
73
87
|
)
|
|
74
88
|
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,19 @@ 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",
|
|
72
86
|
],
|
|
73
87
|
)
|
|
74
88
|
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
velbusaio/messages/cover_down.py
CHANGED
velbusaio/messages/cover_off.py
CHANGED
velbusaio/messages/cover_up.py
CHANGED
|
@@ -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,7 @@ from velbusaio.message import Message
|
|
|
9
10
|
COMMAND_CODE = 0xA5
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
@register(COMMAND_CODE, ["VMBDALI"])
|
|
13
|
+
@register(COMMAND_CODE, ["VMBDALI", "VMBDALI-20"])
|
|
13
14
|
class DimValueStatus(Message):
|
|
14
15
|
"""
|
|
15
16
|
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,7 @@ LED_FAST_BLINKING = 1 << 5
|
|
|
21
22
|
LED_VERY_FAST_BLINKING = 1 << 4
|
|
22
23
|
|
|
23
24
|
|
|
24
|
-
@register(COMMAND_CODE, ["VMB4DC", "VMBDMI", "VMBDMI-R"])
|
|
25
|
+
@register(COMMAND_CODE, ["VMB4DC", "VMBDMI", "VMBDMI-R", "VMB8DC-20"])
|
|
25
26
|
class DimmerChannelStatusMessage(Message):
|
|
26
27
|
"""
|
|
27
28
|
sent by: VMB4DC
|