conson-xp 1.14.0__tar.gz → 1.15.0__tar.gz

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.
Files changed (264) hide show
  1. {conson_xp-1.14.0 → conson_xp-1.15.0}/PKG-INFO +1 -1
  2. {conson_xp-1.14.0 → conson_xp-1.15.0}/pyproject.toml +1 -1
  3. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/__init__.py +1 -1
  4. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/homekit/homekit_config.py +4 -0
  5. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/protocol/conbus_protocol.py +4 -0
  6. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_conbus_service.py +5 -9
  7. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_lightbulb_service.py +2 -0
  8. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_outlet_service.py +2 -0
  9. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_homekit_config_integration.py +12 -0
  10. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_homekit_config_validator.py +36 -0
  11. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_homekit_services.py +16 -4
  12. {conson_xp-1.14.0 → conson_xp-1.15.0}/LICENSE +0 -0
  13. {conson_xp-1.14.0 → conson_xp-1.15.0}/README.md +0 -0
  14. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/__init__.py +0 -0
  15. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/__main__.py +0 -0
  16. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/__init__.py +0 -0
  17. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/__init__.py +0 -0
  18. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus.py +0 -0
  19. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_actiontable_commands.py +0 -0
  20. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_autoreport_commands.py +0 -0
  21. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_blink_commands.py +0 -0
  22. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_config_commands.py +0 -0
  23. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_custom_commands.py +0 -0
  24. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_datapoint_commands.py +0 -0
  25. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_discover_commands.py +0 -0
  26. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_lightlevel_commands.py +0 -0
  27. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_linknumber_commands.py +0 -0
  28. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_modulenumber_commands.py +0 -0
  29. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_msactiontable_commands.py +0 -0
  30. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_output_commands.py +0 -0
  31. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_raw_commands.py +0 -0
  32. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_receive_commands.py +0 -0
  33. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/conbus/conbus_scan_commands.py +0 -0
  34. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/file_commands.py +0 -0
  35. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/homekit/__init__.py +0 -0
  36. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/homekit/homekit.py +0 -0
  37. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/homekit/homekit_start_commands.py +0 -0
  38. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/module_commands.py +0 -0
  39. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/reverse_proxy_commands.py +0 -0
  40. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/server/__init__.py +0 -0
  41. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/server/server_commands.py +0 -0
  42. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/telegram/__init__.py +0 -0
  43. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/telegram/telegram.py +0 -0
  44. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/telegram/telegram_blink_commands.py +0 -0
  45. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/telegram/telegram_checksum_commands.py +0 -0
  46. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/telegram/telegram_discover_commands.py +0 -0
  47. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/telegram/telegram_linknumber_commands.py +0 -0
  48. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/telegram/telegram_parse_commands.py +0 -0
  49. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/commands/telegram/telegram_version_commands.py +0 -0
  50. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/main.py +0 -0
  51. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/__init__.py +0 -0
  52. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/click_tree.py +0 -0
  53. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/datapoint_type_choice.py +0 -0
  54. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/decorators.py +0 -0
  55. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/error_handlers.py +0 -0
  56. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/formatters.py +0 -0
  57. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/serial_number_type.py +0 -0
  58. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/system_function_choice.py +0 -0
  59. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/cli/utils/xp_module_type.py +0 -0
  60. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/connection/__init__.py +0 -0
  61. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/connection/exceptions.py +0 -0
  62. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/__init__.py +0 -0
  63. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/actiontable/__init__.py +0 -0
  64. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/actiontable/actiontable.py +0 -0
  65. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/actiontable/msactiontable_xp20.py +0 -0
  66. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/actiontable/msactiontable_xp24.py +0 -0
  67. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/actiontable/msactiontable_xp33.py +0 -0
  68. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/__init__.py +0 -0
  69. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus.py +0 -0
  70. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_autoreport.py +0 -0
  71. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_blink.py +0 -0
  72. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_client_config.py +0 -0
  73. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_connection_status.py +0 -0
  74. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_custom.py +0 -0
  75. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_datapoint.py +0 -0
  76. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_discover.py +0 -0
  77. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_lightlevel.py +0 -0
  78. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_linknumber.py +0 -0
  79. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_output.py +0 -0
  80. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_raw.py +0 -0
  81. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_receive.py +0 -0
  82. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/conbus/conbus_writeconfig.py +0 -0
  83. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/homekit/__init__.py +0 -0
  84. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/homekit/homekit_accessory.py +0 -0
  85. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/homekit/homekit_conson_config.py +0 -0
  86. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/log_entry.py +0 -0
  87. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/protocol/__init__.py +0 -0
  88. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/response.py +0 -0
  89. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/__init__.py +0 -0
  90. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/action_type.py +0 -0
  91. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/datapoint_type.py +0 -0
  92. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/event_telegram.py +0 -0
  93. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/event_type.py +0 -0
  94. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/input_action_type.py +0 -0
  95. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/input_type.py +0 -0
  96. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/module_type.py +0 -0
  97. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/module_type_code.py +0 -0
  98. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/output_telegram.py +0 -0
  99. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/reply_telegram.py +0 -0
  100. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/system_function.py +0 -0
  101. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/system_telegram.py +0 -0
  102. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/telegram.py +0 -0
  103. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/telegram_type.py +0 -0
  104. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/telegram/timeparam_type.py +0 -0
  105. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/models/write_config_type.py +0 -0
  106. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/__init__.py +0 -0
  107. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/actiontable/__init__.py +0 -0
  108. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/actiontable/actiontable_serializer.py +0 -0
  109. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/actiontable/msactiontable_serializer.py +0 -0
  110. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/actiontable/msactiontable_xp20_serializer.py +0 -0
  111. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/actiontable/msactiontable_xp24_serializer.py +0 -0
  112. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/actiontable/msactiontable_xp33_serializer.py +0 -0
  113. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/__init__.py +0 -0
  114. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/actiontable/__init__.py +0 -0
  115. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/actiontable/actiontable_download_service.py +0 -0
  116. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/actiontable/actiontable_list_service.py +0 -0
  117. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/actiontable/actiontable_show_service.py +0 -0
  118. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/actiontable/actiontable_upload_service.py +0 -0
  119. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/actiontable/msactiontable_service.py +0 -0
  120. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_blink_all_service.py +0 -0
  121. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_blink_service.py +0 -0
  122. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_custom_service.py +0 -0
  123. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_datapoint_queryall_service.py +0 -0
  124. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_datapoint_service.py +0 -0
  125. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_discover_service.py +0 -0
  126. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_output_service.py +0 -0
  127. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_raw_service.py +0 -0
  128. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_receive_service.py +0 -0
  129. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/conbus_scan_service.py +0 -0
  130. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/conbus/write_config_service.py +0 -0
  131. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/__init__.py +0 -0
  132. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_cache_service.py +0 -0
  133. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_config_validator.py +0 -0
  134. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_conson_validator.py +0 -0
  135. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_dimminglight.py +0 -0
  136. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_dimminglight_service.py +0 -0
  137. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_hap_service.py +0 -0
  138. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_lightbulb.py +0 -0
  139. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_module_service.py +0 -0
  140. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_outlet.py +0 -0
  141. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/homekit/homekit_service.py +0 -0
  142. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/log_file_service.py +0 -0
  143. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/module_type_service.py +0 -0
  144. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/protocol/__init__.py +0 -0
  145. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/protocol/conbus_protocol.py +0 -0
  146. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/protocol/protocol_factory.py +0 -0
  147. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/protocol/telegram_protocol.py +0 -0
  148. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/reverse_proxy_service.py +0 -0
  149. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/__init__.py +0 -0
  150. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/base_server_service.py +0 -0
  151. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/cp20_server_service.py +0 -0
  152. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/device_service_factory.py +0 -0
  153. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/server_service.py +0 -0
  154. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/xp130_server_service.py +0 -0
  155. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/xp20_server_service.py +0 -0
  156. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/xp230_server_service.py +0 -0
  157. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/xp24_server_service.py +0 -0
  158. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/server/xp33_server_service.py +0 -0
  159. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/__init__.py +0 -0
  160. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/telegram_blink_service.py +0 -0
  161. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/telegram_checksum_service.py +0 -0
  162. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/telegram_datapoint_service.py +0 -0
  163. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/telegram_discover_service.py +0 -0
  164. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/telegram_link_number_service.py +0 -0
  165. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/telegram_output_service.py +0 -0
  166. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/telegram_service.py +0 -0
  167. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/services/telegram/telegram_version_service.py +0 -0
  168. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/utils/__init__.py +0 -0
  169. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/utils/checksum.py +0 -0
  170. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/utils/dependencies.py +0 -0
  171. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/utils/event_helper.py +0 -0
  172. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/utils/serialization.py +0 -0
  173. {conson_xp-1.14.0 → conson_xp-1.15.0}/src/xp/utils/time_utils.py +0 -0
  174. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/.coverage +0 -0
  175. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/__init__.py +0 -0
  176. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/conftest.py +0 -0
  177. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/.coverage +0 -0
  178. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/__init__.py +0 -0
  179. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/telegram_test_data.py +0 -0
  180. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_actiontable_integration.py +0 -0
  181. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_api/.coverage +0 -0
  182. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_api/__init__.py +0 -0
  183. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_blink_integration.py +0 -0
  184. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_checksum_integration.py +0 -0
  185. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_conbus_blink_integration.py +0 -0
  186. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_conbus_datapoint_integration.py +0 -0
  187. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_conbus_raw_integration.py +0 -0
  188. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_conbus_receive_integration.py +0 -0
  189. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_discovery_integration.py +0 -0
  190. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_event_telegram_integration.py +0 -0
  191. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_link_number_integration.py +0 -0
  192. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_module_integration.py +0 -0
  193. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_output_integration.py +0 -0
  194. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_reverse_proxy_integration.py +0 -0
  195. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_system_reply_telegram_integration.py +0 -0
  196. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_version_integration.py +0 -0
  197. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_xp20_action_table_integration.py +0 -0
  198. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/integration/test_xp24_action_table_integration.py +0 -0
  199. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/__init__.py +0 -0
  200. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_api/__init__.py +0 -0
  201. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/__init__.py +0 -0
  202. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_click_tree.py +0 -0
  203. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_conbus_actiontable_commands.py +0 -0
  204. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_conbus_blink_commands.py +0 -0
  205. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_datapoint_type_choice.py +0 -0
  206. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_decorators.py +0 -0
  207. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_error_handlers.py +0 -0
  208. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_formatters.py +0 -0
  209. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_serial_number_type.py +0 -0
  210. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_cli/test_system_function_choice.py +0 -0
  211. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_connection/__init__.py +0 -0
  212. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_connection/test_connection_init.py +0 -0
  213. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_connection/test_exceptions.py +0 -0
  214. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_encoding/__init__.py +0 -0
  215. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_encoding/test_latin1_edge_cases.py +0 -0
  216. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/__init__.py +0 -0
  217. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_conbus.py +0 -0
  218. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_conbus_client_send.py +0 -0
  219. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_conbus_discover.py +0 -0
  220. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_conbus_linknumber.py +0 -0
  221. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_event_telegram.py +0 -0
  222. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_log_entry.py +0 -0
  223. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_module_type.py +0 -0
  224. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_reply_telegram.py +0 -0
  225. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_system_telegram.py +0 -0
  226. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_system_telegram_enhancements.py +0 -0
  227. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_version_telegram.py +0 -0
  228. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_write_config_type.py +0 -0
  229. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_xp20_action_table.py +0 -0
  230. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_xp24_action_table.py +0 -0
  231. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_models/test_xp24_action_telegram.py +0 -0
  232. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/__init__.py +0 -0
  233. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_actiontable_serializer.py +0 -0
  234. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_actiontable_service.py +0 -0
  235. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_actiontable_upload_service.py +0 -0
  236. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_base_server_service.py +0 -0
  237. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_blink_service.py +0 -0
  238. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_checksum_service.py +0 -0
  239. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_conbus_blink_service.py +0 -0
  240. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_conbus_raw_service.py +0 -0
  241. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_conbus_reverse_proxy_service.py +0 -0
  242. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_device_service_factory.py +0 -0
  243. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_discovery_service.py +0 -0
  244. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_homekit_cache_service.py +0 -0
  245. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_homekit_conson_service.py +0 -0
  246. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_log_file_service.py +0 -0
  247. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_module_type_service.py +0 -0
  248. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_protocol.py +0 -0
  249. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_server_service.py +0 -0
  250. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_telegram_input_service.py +0 -0
  251. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_telegram_protocol.py +0 -0
  252. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_telegram_service.py +0 -0
  253. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_version_service.py +0 -0
  254. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_xp20_action_table_serializer.py +0 -0
  255. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_xp24_action_service.py +0 -0
  256. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_xp24_action_table_serializer.py +0 -0
  257. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_xp24_action_table_service.py +0 -0
  258. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_xp33_action_table_serializer.py +0 -0
  259. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_services/test_xp_server_services.py +0 -0
  260. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_utils/__init__.py +0 -0
  261. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_utils/test_checksum.py +0 -0
  262. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_utils/test_event_helper.py +0 -0
  263. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_utils/test_serialization.py +0 -0
  264. {conson_xp-1.14.0 → conson_xp-1.15.0}/tests/unit/test_utils/test_time_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: conson-xp
3
- Version: 1.14.0
3
+ Version: 1.15.0
4
4
  Summary: XP Protocol Communication Tools
5
5
  Author-Email: ldvchosal <ldvchosal@github.com>
6
6
  License: MIT License
@@ -20,7 +20,7 @@ dependencies = [
20
20
  ]
21
21
  requires-python = ">=3.11"
22
22
  readme = "README.md"
23
- version = "1.14.0"
23
+ version = "1.15.0"
24
24
 
25
25
  [project.license]
26
26
  file = "LICENSE"
@@ -3,7 +3,7 @@
3
3
  conson-xp package.
4
4
  """
5
5
 
6
- __version__ = "1.14.0"
6
+ __version__ = "1.15.0"
7
7
  __manufacturer__ = "salchichon"
8
8
  __model__ = "xp.cli"
9
9
  __serial__ = "2025.09.23.000"
@@ -55,6 +55,8 @@ class HomekitAccessoryConfig(BaseModel):
55
55
  output_number: Output number for the accessory.
56
56
  description: Description of the accessory.
57
57
  service: Service type for the accessory.
58
+ on_action: on code for the accessory.
59
+ off_action: off code for the accessory.
58
60
  hap_accessory: Optional HAP accessory identifier.
59
61
  """
60
62
 
@@ -64,6 +66,8 @@ class HomekitAccessoryConfig(BaseModel):
64
66
  output_number: int
65
67
  description: str
66
68
  service: str
69
+ on_action: str
70
+ off_action: str
67
71
  hap_accessory: Optional[int] = None
68
72
 
69
73
 
@@ -61,11 +61,15 @@ class SendActionEvent(BaseEvent):
61
61
  serial_number: Serial number of the light bulb set.
62
62
  output_number: Output number of the light bulb set.
63
63
  value: Set light bulb On or Off (True/False).
64
+ on_action: On action E00L00I00.
65
+ off_action: On action E00L00I04.
64
66
  """
65
67
 
66
68
  serial_number: str = Field(description="Serial number of the light bulb set")
67
69
  output_number: int = Field(description="Output number of the light bulb set")
68
70
  value: bool = Field(description="Set light bulb On or Off (True/False)")
71
+ on_action: str = Field(description="on action")
72
+ off_action: str = Field(description="off action")
69
73
 
70
74
 
71
75
  class DatapointEvent(BaseEvent):
@@ -12,7 +12,6 @@ from xp.models.protocol.conbus_protocol import (
12
12
  SendActionEvent,
13
13
  SendWriteConfigEvent,
14
14
  )
15
- from xp.models.telegram.action_type import ActionType
16
15
  from xp.models.telegram.datapoint_type import DataPointType
17
16
  from xp.models.telegram.system_function import SystemFunction
18
17
  from xp.services.protocol.telegram_protocol import TelegramProtocol
@@ -87,11 +86,8 @@ class HomeKitConbusService:
87
86
  """
88
87
  self.logger.debug(f"send_action_event {event}")
89
88
 
90
- action_value = (
91
- ActionType.ON_RELEASE.value if event.value else ActionType.OFF_PRESS.value
92
- )
93
- input_action = f"{event.output_number:02d}{action_value}"
94
- telegram = (
95
- f"S{event.serial_number}F{SystemFunction.ACTION.value}D{input_action}"
96
- )
97
- self.telegram_protocol.sendFrame(telegram.encode())
89
+ telegram = event.on_action if event.value else event.off_action
90
+ telegram_make = f"{telegram}M"
91
+ telegram_break = f"{telegram}B"
92
+ self.telegram_protocol.sendFrame(telegram_make.encode())
93
+ self.telegram_protocol.sendFrame(telegram_break.encode())
@@ -77,6 +77,8 @@ class HomeKitLightbulbService:
77
77
  serial_number=event.serial_number,
78
78
  output_number=event.output_number,
79
79
  value=event.value,
80
+ on_action=event.accessory.on_action,
81
+ off_action=event.accessory.off_action,
80
82
  )
81
83
 
82
84
  self.logger.debug(f"Dispatching SendActionEvent for {event.serial_number}")
@@ -85,6 +85,8 @@ class HomeKitOutletService:
85
85
  serial_number=event.serial_number,
86
86
  output_number=event.output_number,
87
87
  value=event.value,
88
+ on_action=event.accessory.on_action,
89
+ off_action=event.accessory.off_action,
88
90
  )
89
91
 
90
92
  self.logger.debug(f"Dispatching SendActionEvent for {event.serial_number}")
@@ -102,6 +102,8 @@ class TestHomekitConfigIntegration:
102
102
  "output_number": 1,
103
103
  "description": "Main Living Room Light",
104
104
  "service": "lightbulb",
105
+ "on_action": "E00L01I01",
106
+ "off_action": "E00L01I05",
105
107
  },
106
108
  {
107
109
  "name": "side_lamp",
@@ -110,6 +112,8 @@ class TestHomekitConfigIntegration:
110
112
  "output_number": 2,
111
113
  "description": "Side Lamp",
112
114
  "service": "lightbulb",
115
+ "on_action": "E00L01I02",
116
+ "off_action": "E00L01I06",
113
117
  },
114
118
  {
115
119
  "name": "kitchen_light",
@@ -118,6 +122,8 @@ class TestHomekitConfigIntegration:
118
122
  "output_number": 1,
119
123
  "description": "Kitchen Light",
120
124
  "service": "lightbulb",
125
+ "on_action": "E00L02I01",
126
+ "off_action": "E00L02I05",
121
127
  },
122
128
  ],
123
129
  }
@@ -194,6 +200,8 @@ class TestHomekitConfigIntegration:
194
200
  "output_number": 0, # Invalid output
195
201
  "description": "Main Light",
196
202
  "service": "invalid_service", # Invalid service
203
+ "on_action": "E00L01I01",
204
+ "off_action": "E00L01I05",
197
205
  },
198
206
  {
199
207
  "name": "main_light", # Duplicate accessory name
@@ -202,6 +210,8 @@ class TestHomekitConfigIntegration:
202
210
  "output_number": 50, # Output exceeds module capability
203
211
  "description": "Duplicate Light",
204
212
  "service": "lightbulb",
213
+ "on_action": "E00L01I02",
214
+ "off_action": "E00L01I06",
205
215
  },
206
216
  {
207
217
  "name": "orphaned_light", # Not assigned to any room
@@ -210,6 +220,8 @@ class TestHomekitConfigIntegration:
210
220
  "output_number": 3,
211
221
  "description": "Orphaned Light",
212
222
  "service": "lightbulb",
223
+ "on_action": "E00L01I03",
224
+ "off_action": "E00L01I07",
213
225
  },
214
226
  ],
215
227
  }
@@ -41,6 +41,8 @@ class TestHomekitConfigValidator:
41
41
  output_number=1,
42
42
  description="Light 1",
43
43
  service="lightbulb",
44
+ on_action="E00L01I01",
45
+ off_action="E00L01I05",
44
46
  ),
45
47
  HomekitAccessoryConfig(
46
48
  name="light2",
@@ -49,6 +51,8 @@ class TestHomekitConfigValidator:
49
51
  output_number=2,
50
52
  description="Light 2",
51
53
  service="lightbulb",
54
+ on_action="E00L01I02",
55
+ off_action="E00L01I06",
52
56
  ),
53
57
  ]
54
58
 
@@ -82,6 +86,8 @@ class TestHomekitConfigValidator:
82
86
  output_number=1,
83
87
  description="Light 1",
84
88
  service="lightbulb",
89
+ on_action="E00L01I01",
90
+ off_action="E00L01I05",
85
91
  ),
86
92
  HomekitAccessoryConfig(
87
93
  name="light1",
@@ -90,6 +96,8 @@ class TestHomekitConfigValidator:
90
96
  output_number=2,
91
97
  description="Light 2",
92
98
  service="lightbulb",
99
+ on_action="E00L01I02",
100
+ off_action="E00L01I06",
93
101
  ),
94
102
  ]
95
103
  config = self.create_test_homekit_config(accessories=accessories)
@@ -113,6 +121,8 @@ class TestHomekitConfigValidator:
113
121
  output_number=1,
114
122
  description="Light 1",
115
123
  service="invalid_service",
124
+ on_action="E00L01I01",
125
+ off_action="E00L01I05",
116
126
  )
117
127
  ]
118
128
  config = self.create_test_homekit_config(accessories=accessories)
@@ -136,6 +146,8 @@ class TestHomekitConfigValidator:
136
146
  output_number=0,
137
147
  description="Light 1",
138
148
  service="lightbulb",
149
+ on_action="E00L01I01",
150
+ off_action="E00L01I05",
139
151
  ),
140
152
  HomekitAccessoryConfig(
141
153
  name="light2",
@@ -144,6 +156,8 @@ class TestHomekitConfigValidator:
144
156
  output_number=-1,
145
157
  description="Light 2",
146
158
  service="lightbulb",
159
+ on_action="E00L01I02",
160
+ off_action="E00L01I06",
147
161
  ),
148
162
  ]
149
163
  config = self.create_test_homekit_config(accessories=accessories)
@@ -207,6 +221,8 @@ class TestHomekitConfigValidator:
207
221
  output_number=1,
208
222
  description="Light 1",
209
223
  service="lightbulb",
224
+ on_action="E00L01I01",
225
+ off_action="E00L01I05",
210
226
  ),
211
227
  HomekitAccessoryConfig(
212
228
  name="orphaned_light",
@@ -215,6 +231,8 @@ class TestHomekitConfigValidator:
215
231
  output_number=2,
216
232
  description="Orphaned",
217
233
  service="lightbulb",
234
+ on_action="E00L01I02",
235
+ off_action="E00L01I06",
218
236
  ),
219
237
  ]
220
238
  rooms = [RoomConfig(name="Living Room", accessories=["light1"])]
@@ -233,6 +251,8 @@ class TestHomekitConfigValidator:
233
251
  output_number=1,
234
252
  description="Light 1",
235
253
  service="lightbulb",
254
+ on_action="E00L01I01",
255
+ off_action="E00L01I05",
236
256
  ),
237
257
  HomekitAccessoryConfig(
238
258
  name="light2",
@@ -241,6 +261,8 @@ class TestHomekitConfigValidator:
241
261
  output_number=2,
242
262
  description="Light 2",
243
263
  service="lightbulb",
264
+ on_action="E00L01I02",
265
+ off_action="E00L01I06",
244
266
  ),
245
267
  ]
246
268
  rooms = [
@@ -263,6 +285,8 @@ class TestHomekitConfigValidator:
263
285
  output_number=1,
264
286
  description="Light 1",
265
287
  service="lightbulb",
288
+ on_action="E00L01I01",
289
+ off_action="E00L01I05",
266
290
  )
267
291
  ]
268
292
  rooms = [
@@ -316,6 +340,8 @@ class TestCrossReferenceValidator:
316
340
  output_number=1,
317
341
  description="Light 1",
318
342
  service="lightbulb",
343
+ on_action="E00L01I01",
344
+ off_action="E00L01I05",
319
345
  ),
320
346
  HomekitAccessoryConfig(
321
347
  name="light2",
@@ -324,6 +350,8 @@ class TestCrossReferenceValidator:
324
350
  output_number=1,
325
351
  description="Light 2",
326
352
  service="lightbulb",
353
+ on_action="E00L02I01",
354
+ off_action="E00L02I05",
327
355
  ),
328
356
  ]
329
357
  rooms = [RoomConfig(name="Living Room", accessories=["light1", "light2"])]
@@ -361,6 +389,8 @@ class TestCrossReferenceValidator:
361
389
  output_number=1,
362
390
  description="Invalid",
363
391
  service="lightbulb",
392
+ on_action="E00L03I01",
393
+ off_action="E00L03I05",
364
394
  )
365
395
  homekit_validator.config.accessories.append(invalid_accessory)
366
396
 
@@ -394,6 +424,8 @@ class TestCrossReferenceValidator:
394
424
  output_number=20,
395
425
  description="High Output",
396
426
  service="lightbulb",
427
+ on_action="E00L02I09",
428
+ off_action="E00L02I13",
397
429
  )
398
430
  homekit_validator.config.accessories.append(high_output_accessory)
399
431
 
@@ -425,6 +457,8 @@ class TestCrossReferenceValidator:
425
457
  output_number=1,
426
458
  description="Invalid Serial",
427
459
  service="lightbulb",
460
+ on_action="E00L03I01",
461
+ off_action="E00L03I05",
428
462
  ),
429
463
  HomekitAccessoryConfig(
430
464
  name="invalid_output",
@@ -433,6 +467,8 @@ class TestCrossReferenceValidator:
433
467
  output_number=20,
434
468
  description="Invalid Output",
435
469
  service="lightbulb",
470
+ on_action="E00L02I09",
471
+ off_action="E00L02I13",
436
472
  ),
437
473
  ]
438
474
  homekit_validator.config.accessories.extend(invalid_accessories)
@@ -68,6 +68,8 @@ def mock_accessory():
68
68
  output_number=2,
69
69
  description="Test Description",
70
70
  service="lightbulb",
71
+ on_action="E00L01I01",
72
+ off_action="E00L01I05",
71
73
  )
72
74
 
73
75
 
@@ -357,23 +359,33 @@ class TestHomeKitConbusService:
357
359
 
358
360
  def test_handle_send_action_event_on(self, mock_module, mock_accessory):
359
361
  """Test handle_send_action_event for turning on."""
360
- event = SendActionEvent(serial_number="1234567890", output_number=2, value=True)
362
+ event = SendActionEvent(
363
+ serial_number="1234567890",
364
+ output_number=2,
365
+ value=True,
366
+ on_action="E00L04I02",
367
+ off_action="E00L04I06",
368
+ )
361
369
 
362
370
  self.service.handle_send_action_event(event)
363
371
 
364
372
  sent_data = self.telegram_protocol.sendFrame.call_args[0][0]
365
- assert sent_data == b"S1234567890F27D02AB" # ON_RELEASE action
373
+ assert sent_data == b"E00L04I02B" # ON action code
366
374
 
367
375
  def test_handle_send_action_event_off(self, mock_module, mock_accessory):
368
376
  """Test handle_send_action_event for turning off."""
369
377
  event = SendActionEvent(
370
- serial_number="1234567890", output_number=5, value=False
378
+ serial_number="1234567890",
379
+ output_number=5,
380
+ value=False,
381
+ on_action="E00L05I05",
382
+ off_action="E00L05I09",
371
383
  )
372
384
 
373
385
  self.service.handle_send_action_event(event)
374
386
 
375
387
  sent_data = self.telegram_protocol.sendFrame.call_args[0][0]
376
- assert sent_data == b"S1234567890F27D05AA" # OFF_PRESS action
388
+ assert sent_data == b"E00L05I09B" # OFF action code
377
389
 
378
390
 
379
391
  class TestHomeKitService:
File without changes
File without changes