velbus-aio 2023.12.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.12.0.dist-info → velbus_aio-2024.4.0.dist-info}/METADATA +2 -1
  2. velbus_aio-2024.4.0.dist-info/RECORD +103 -0
  3. {velbus_aio-2023.12.0.dist-info → velbus_aio-2024.4.0.dist-info}/WHEEL +1 -1
  4. velbusaio/channels.py +5 -0
  5. velbusaio/command_registry.py +3 -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 +1 -0
  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 +1 -0
  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 +1 -0
  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 +1 -0
  64. velbusaio/messages/set_daylight_saving.py +1 -0
  65. velbusaio/messages/set_dimmer.py +6 -2
  66. velbusaio/messages/set_led.py +1 -0
  67. velbusaio/messages/set_realtime_clock.py +1 -0
  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 +11 -16
  93. velbusaio/protocol.json +10122 -0
  94. velbusaio/protocol.py +2 -2
  95. velbusaio/raw_message.py +6 -6
  96. velbus_aio-2023.12.0.dist-info/RECORD +0 -103
  97. velbusaio/moduleprotocol/protocol.json +0 -26507
  98. {velbus_aio-2023.12.0.dist-info → velbus_aio-2024.4.0.dist-info}/LICENSE +0 -0
  99. {velbus_aio-2023.12.0.dist-info → velbus_aio-2024.4.0.dist-info}/top_level.txt +0 -0
@@ -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: 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: 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
@@ -75,6 +76,17 @@ 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",
78
90
  ],
79
91
  )
80
92
  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
@@ -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
@@ -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
@@ -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.message import 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
velbusaio/messages/raw.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 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: 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: 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
  import struct
@@ -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,10 @@ from velbusaio.message import Message
9
10
  COMMAND_CODE = 0x11
10
11
 
11
12
 
12
- @register(COMMAND_CODE, ["VMB1DM", "VMBDME", "VMBDMI-R", "VMBDMI", "VMB1LED", "VMB4DC"])
13
+ @register(
14
+ COMMAND_CODE,
15
+ ["VMB1DM", "VMBDME", "VMBDMI-R", "VMBDMI", "VMB1LED", "VMB4DC", "VMB8DC-20"],
16
+ )
13
17
  class RestoreDimmerMessage(Message):
14
18
  """
15
19
  send by:
@@ -53,7 +57,7 @@ class RestoreDimmerMessage(Message):
53
57
  ) + self.dimmer_transitiontime.to_bytes(2, byteorder="big", signed=False)
54
58
 
55
59
 
56
- @register(COMMAND_CODE, ["VMBDALI"])
60
+ @register(COMMAND_CODE, ["VMBDALI", "VMBDALI-20"])
57
61
  class RestoreDimmerMessage2(RestoreDimmerMessage):
58
62
  def byte_to_channels(self, byte: int) -> list[int]:
59
63
  return [byte]
@@ -1,6 +1,7 @@
1
1
  """
2
2
  :author: Danny De Gaspari
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: 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
  import time
@@ -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 time
@@ -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,10 @@ from velbusaio.message import Message
9
10
  COMMAND_CODE = 0x07
10
11
 
11
12
 
12
- @register(COMMAND_CODE, ["VMB1DM", "VMBDME", "VMB4DC", "VMBDMI", "VMBDMI-R", "VMB1LED"])
13
+ @register(
14
+ COMMAND_CODE,
15
+ ["VMB1DM", "VMBDME", "VMB4DC", "VMBDMI", "VMBDMI-R", "VMB1LED", "VMB8DC-20"],
16
+ )
13
17
  class SetDimmerMessage(Message):
14
18
  """
15
19
  send by:
@@ -56,7 +60,7 @@ class SetDimmerMessage(Message):
56
60
  ) + self.dimmer_transitiontime.to_bytes(2, byteorder="big", signed=False)
57
61
 
58
62
 
59
- @register(COMMAND_CODE, ["VMBDALI"])
63
+ @register(COMMAND_CODE, ["VMBDALI", "VMBDALI-20"])
60
64
  class SetDimmerMessage2(SetDimmerMessage):
61
65
  """
62
66
  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
  import time
@@ -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: 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,10 @@ from velbusaio.message import Message
9
10
  COMMAND_CODE = 0x0F
10
11
 
11
12
 
12
- @register(COMMAND_CODE, ["VMB1DM", "VMBDME", "VMB4DC", "VMBDMI", "VMBDMI-R", "VMB1LED"])
13
+ @register(
14
+ COMMAND_CODE,
15
+ ["VMB1DM", "VMBDME", "VMB4DC", "VMBDMI", "VMBDMI-R", "VMB1LED", "VMB8DC-20"],
16
+ )
13
17
  class SliderStatusMessage(Message):
14
18
  """
15
19
  sent by: VMBDME
@@ -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
  import struct
@@ -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
@@ -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
@@ -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: Danny De Gaspari
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: Danny De Gaspari
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: Danny De Gaspari
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
  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
@@ -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
  import struct
velbusaio/module.py CHANGED
@@ -1,6 +1,7 @@
1
1
  """
2
2
  This represents a velbus module
3
3
  """
4
+
4
5
  from __future__ import annotations
5
6
 
6
7
  import logging
@@ -111,7 +112,7 @@ class Module:
111
112
  build_week: int | None = None,
112
113
  cache_dir: str | None = None,
113
114
  ) -> Module:
114
- if module_type == 0x45:
115
+ if module_type == 0x45 or module_type == 0x5A:
115
116
  return VmbDali(
116
117
  module_address,
117
118
  module_type,
@@ -586,7 +587,11 @@ class Module:
586
587
  addr = "{high:02X}{low:02X}".format(
587
588
  high=message.high_address, low=message.low_address
588
589
  )
589
- mdata = self._data["Memory"]["1"]["Address"][addr]
590
+ if "Memory" not in self._data:
591
+ return
592
+ if "Address" not in self._data["Memory"]:
593
+ return
594
+ mdata = self._data["Memory"]["Address"][addr]
590
595
  if "ModuleName" in mdata and isinstance(self._name, dict):
591
596
  # if self._name is a dict we are still loading
592
597
  # if its a string it was already complete
@@ -702,9 +707,10 @@ class Module:
702
707
  self._name = None
703
708
  return
704
709
 
705
- for _memory_key, memory_part in self._data["Memory"].items():
706
- if "Address" in memory_part:
707
- for addr_int in memory_part["Address"].keys():
710
+ for memory_key, memory_part in self._data["Memory"].items():
711
+
712
+ if memory_key == "Address":
713
+ for addr_int in memory_part.keys():
708
714
  addr = struct.unpack(
709
715
  ">BB", struct.pack(">h", int("0x" + addr_int, 0))
710
716
  )
@@ -731,17 +737,6 @@ class Module:
731
737
  "ThermostatAddr" in self._data and self._data["ThermostatAddr"] != 0
732
738
  ):
733
739
  await self._update_channel(int(chan), {"thermostat": True})
734
- # add extra channel for program selection which is not in the channel list of the protocol.json file,
735
- # but is available in the messages list of the corresponding module.
736
- if keys_exists(self._data, "Messages", "B3"):
737
- self._channels[CHANNEL_SELECTED_PROGRAM] = SelectedProgram(
738
- self,
739
- CHANNEL_SELECTED_PROGRAM,
740
- "Selected Program",
741
- False,
742
- self._writer,
743
- self._address,
744
- )
745
740
 
746
741
 
747
742
  class VmbDali(Module):