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.

Files changed (99) hide show
  1. {velbus_aio-2023.11.0.dist-info → velbus_aio-2024.4.0.dist-info}/METADATA +3 -1
  2. velbus_aio-2024.4.0.dist-info/RECORD +103 -0
  3. {velbus_aio-2023.11.0.dist-info → velbus_aio-2024.4.0.dist-info}/WHEEL +1 -1
  4. velbusaio/channels.py +20 -0
  5. velbusaio/command_registry.py +18 -0
  6. velbusaio/const.py +1 -0
  7. velbusaio/controller.py +1 -0
  8. velbusaio/handler.py +2 -59
  9. velbusaio/helpers.py +1 -0
  10. velbusaio/message.py +1 -0
  11. velbusaio/messages/__init__.py +2 -1
  12. velbusaio/messages/blind_status.py +1 -0
  13. velbusaio/messages/bus_active.py +1 -0
  14. velbusaio/messages/bus_error_counter_status.py +1 -0
  15. velbusaio/messages/bus_error_counter_status_request.py +1 -0
  16. velbusaio/messages/bus_off.py +1 -0
  17. velbusaio/messages/channel_name_part1.py +15 -0
  18. velbusaio/messages/channel_name_part2.py +14 -0
  19. velbusaio/messages/channel_name_part3.py +14 -0
  20. velbusaio/messages/channel_name_request.py +2 -1
  21. velbusaio/messages/clear_led.py +1 -0
  22. velbusaio/messages/counter_status.py +1 -0
  23. velbusaio/messages/counter_status_request.py +1 -0
  24. velbusaio/messages/cover_down.py +1 -0
  25. velbusaio/messages/cover_off.py +1 -0
  26. velbusaio/messages/cover_position.py +1 -0
  27. velbusaio/messages/cover_up.py +1 -0
  28. velbusaio/messages/dali_device_settings.py +2 -1
  29. velbusaio/messages/dali_device_settings_request.py +2 -1
  30. velbusaio/messages/dali_dim_value_status.py +2 -1
  31. velbusaio/messages/dimmer_channel_status.py +2 -1
  32. velbusaio/messages/dimmer_status.py +2 -1
  33. velbusaio/messages/edge_set_custom_color.py +1 -0
  34. velbusaio/messages/fast_blinking_led.py +1 -0
  35. velbusaio/messages/forced_off.py +1 -0
  36. velbusaio/messages/forced_on.py +1 -0
  37. velbusaio/messages/interface_status_request.py +1 -0
  38. velbusaio/messages/ir_receiver_status.py +1 -0
  39. velbusaio/messages/kwh_status.py +1 -0
  40. velbusaio/messages/light_value_request.py +1 -0
  41. velbusaio/messages/memo_text.py +1 -0
  42. velbusaio/messages/memory_data.py +1 -0
  43. velbusaio/messages/memory_data_block.py +1 -0
  44. velbusaio/messages/memory_dump_request.py +1 -0
  45. velbusaio/messages/module_status.py +12 -0
  46. velbusaio/messages/module_status_request.py +1 -0
  47. velbusaio/messages/module_subtype.py +1 -0
  48. velbusaio/messages/module_type.py +117 -14
  49. velbusaio/messages/module_type_request.py +1 -0
  50. velbusaio/messages/push_button_status.py +1 -0
  51. velbusaio/messages/raw.py +1 -0
  52. velbusaio/messages/read_data_block_from_memory.py +1 -0
  53. velbusaio/messages/read_data_from_memory.py +1 -0
  54. velbusaio/messages/realtime_clock_status_request.py +1 -0
  55. velbusaio/messages/receive_buffer_full.py +1 -0
  56. velbusaio/messages/receive_ready.py +1 -0
  57. velbusaio/messages/relay_status.py +1 -0
  58. velbusaio/messages/restore_dimmer.py +6 -2
  59. velbusaio/messages/select_program.py +1 -0
  60. velbusaio/messages/sensor_settings_request.py +1 -0
  61. velbusaio/messages/sensor_temp_request.py +1 -0
  62. velbusaio/messages/sensor_temperature.py +1 -0
  63. velbusaio/messages/set_date.py +5 -4
  64. velbusaio/messages/set_daylight_saving.py +5 -4
  65. velbusaio/messages/set_dimmer.py +6 -2
  66. velbusaio/messages/set_led.py +1 -0
  67. velbusaio/messages/set_realtime_clock.py +5 -4
  68. velbusaio/messages/set_temperature.py +1 -0
  69. velbusaio/messages/slider_status.py +5 -1
  70. velbusaio/messages/slow_blinking_led.py +1 -0
  71. velbusaio/messages/start_relay_blinking_timer.py +1 -0
  72. velbusaio/messages/start_relay_timer.py +1 -0
  73. velbusaio/messages/switch_relay_off.py +1 -0
  74. velbusaio/messages/switch_relay_on.py +1 -0
  75. velbusaio/messages/switch_to_comfort.py +1 -0
  76. velbusaio/messages/switch_to_day.py +1 -0
  77. velbusaio/messages/switch_to_night.py +1 -0
  78. velbusaio/messages/switch_to_safe.py +1 -0
  79. velbusaio/messages/temp_sensor_settings_part1.py +1 -0
  80. velbusaio/messages/temp_sensor_settings_part2.py +1 -0
  81. velbusaio/messages/temp_sensor_settings_part3.py +1 -0
  82. velbusaio/messages/temp_sensor_settings_part4.py +1 -0
  83. velbusaio/messages/temp_sensor_settings_request.py +1 -0
  84. velbusaio/messages/temp_sensor_status.py +1 -0
  85. velbusaio/messages/temp_set_cooling.py +1 -0
  86. velbusaio/messages/temp_set_heating.py +1 -0
  87. velbusaio/messages/update_led_status.py +1 -0
  88. velbusaio/messages/very_fast_blinking_led.py +1 -0
  89. velbusaio/messages/write_data_to_memory.py +1 -0
  90. velbusaio/messages/write_memory_block.py +1 -0
  91. velbusaio/messages/write_module_address_and_serial_number.py +1 -0
  92. velbusaio/module.py +20 -21
  93. velbusaio/protocol.json +10122 -0
  94. velbusaio/protocol.py +2 -2
  95. velbusaio/raw_message.py +6 -6
  96. velbus_aio-2023.11.0.dist-info/RECORD +0 -103
  97. velbusaio/moduleprotocol/protocol.json +0 -26507
  98. {velbus_aio-2023.11.0.dist-info → velbus_aio-2024.4.0.dist-info}/LICENSE +0 -0
  99. {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: 2023.11.0
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
  ![CI](https://github.com/Cereal2nd/velbus-aio/actions/workflows/main.yml/badge.svg)
33
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/Cereal2nd/velbus-aio/master.svg)](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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.3)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
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)
@@ -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
@@ -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
  from typing import Final
velbusaio/controller.py CHANGED
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Main interface for the velbusaio lib
3
3
  """
4
+
4
5
  from __future__ import annotations
5
6
 
6
7
  import asyncio
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__, "moduleprotocol/protocol.json")
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
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Helper functions
3
3
  """
4
+
4
5
  from __future__ import annotations
5
6
 
6
7
  import os
velbusaio/message.py CHANGED
@@ -1,6 +1,7 @@
1
1
  """
2
2
  The velbus abstract message class
3
3
  """
4
+
4
5
  from __future__ import annotations
5
6
 
6
7
  import json
@@ -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 (
@@ -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 json
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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:
@@ -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
@@ -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
  from velbusaio.command_registry import register
@@ -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
  from velbusaio.command_registry import register
@@ -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
@@ -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
@@ -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 struct
@@ -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
@@ -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