conson-xp 1.36.0__tar.gz → 1.37.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 (316) hide show
  1. {conson_xp-1.36.0 → conson_xp-1.37.0}/PKG-INFO +1 -1
  2. {conson_xp-1.36.0 → conson_xp-1.37.0}/pyproject.toml +1 -1
  3. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/__init__.py +1 -1
  4. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_actiontable_commands.py +1 -1
  5. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_autoreport_commands.py +5 -2
  6. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_lightlevel_commands.py +2 -0
  7. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_linknumber_commands.py +2 -0
  8. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_modulenumber_commands.py +2 -0
  9. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_output_commands.py +4 -0
  10. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/datapoint_type.py +30 -0
  11. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/actiontable/msactiontable_service.py +0 -1
  12. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_datapoint_service.py +1 -1
  13. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/protocol/conbus_event_protocol.py +7 -3
  14. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_xp24_action_table_service.py +0 -1
  15. {conson_xp-1.36.0 → conson_xp-1.37.0}/LICENSE +0 -0
  16. {conson_xp-1.36.0 → conson_xp-1.37.0}/README.md +0 -0
  17. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/__init__.py +0 -0
  18. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/__main__.py +0 -0
  19. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/__init__.py +0 -0
  20. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/__init__.py +0 -0
  21. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus.py +0 -0
  22. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_blink_commands.py +0 -0
  23. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_config_commands.py +0 -0
  24. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_custom_commands.py +0 -0
  25. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_datapoint_commands.py +0 -0
  26. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_discover_commands.py +0 -0
  27. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_event_commands.py +0 -0
  28. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_export_commands.py +0 -0
  29. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_msactiontable_commands.py +0 -0
  30. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_raw_commands.py +0 -0
  31. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_receive_commands.py +0 -0
  32. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/conbus/conbus_scan_commands.py +0 -0
  33. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/file_commands.py +0 -0
  34. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/homekit/__init__.py +0 -0
  35. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/homekit/homekit.py +0 -0
  36. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/homekit/homekit_start_commands.py +0 -0
  37. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/module_commands.py +0 -0
  38. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/reverse_proxy_commands.py +0 -0
  39. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/server/__init__.py +0 -0
  40. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/server/server_commands.py +0 -0
  41. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/telegram/__init__.py +0 -0
  42. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/telegram/telegram.py +0 -0
  43. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/telegram/telegram_blink_commands.py +0 -0
  44. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/telegram/telegram_checksum_commands.py +0 -0
  45. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/telegram/telegram_discover_commands.py +0 -0
  46. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/telegram/telegram_linknumber_commands.py +0 -0
  47. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/telegram/telegram_parse_commands.py +0 -0
  48. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/telegram/telegram_version_commands.py +0 -0
  49. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/term/__init__.py +0 -0
  50. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/term/term.py +0 -0
  51. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/commands/term/term_commands.py +0 -0
  52. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/main.py +0 -0
  53. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/__init__.py +0 -0
  54. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/click_tree.py +0 -0
  55. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/datapoint_type_choice.py +0 -0
  56. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/decorators.py +0 -0
  57. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/error_handlers.py +0 -0
  58. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/formatters.py +0 -0
  59. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/module_type_choice.py +0 -0
  60. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/serial_number_type.py +0 -0
  61. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/system_function_choice.py +0 -0
  62. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/cli/utils/xp_module_type.py +0 -0
  63. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/connection/__init__.py +0 -0
  64. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/connection/exceptions.py +0 -0
  65. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/__init__.py +0 -0
  66. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/actiontable/__init__.py +0 -0
  67. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/actiontable/actiontable.py +0 -0
  68. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/actiontable/msactiontable_xp20.py +0 -0
  69. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/actiontable/msactiontable_xp24.py +0 -0
  70. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/actiontable/msactiontable_xp33.py +0 -0
  71. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/__init__.py +0 -0
  72. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus.py +0 -0
  73. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_autoreport.py +0 -0
  74. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_blink.py +0 -0
  75. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_client_config.py +0 -0
  76. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_connection_status.py +0 -0
  77. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_custom.py +0 -0
  78. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_datapoint.py +0 -0
  79. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_discover.py +0 -0
  80. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_event_list.py +0 -0
  81. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_event_raw.py +0 -0
  82. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_export.py +0 -0
  83. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_lightlevel.py +0 -0
  84. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_linknumber.py +0 -0
  85. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_logger_config.py +0 -0
  86. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_output.py +0 -0
  87. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_raw.py +0 -0
  88. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_receive.py +0 -0
  89. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/conbus/conbus_writeconfig.py +0 -0
  90. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/homekit/__init__.py +0 -0
  91. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/homekit/homekit_accessory.py +0 -0
  92. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/homekit/homekit_config.py +0 -0
  93. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/homekit/homekit_conson_config.py +0 -0
  94. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/log_entry.py +0 -0
  95. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/protocol/__init__.py +0 -0
  96. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/protocol/conbus_protocol.py +0 -0
  97. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/response.py +0 -0
  98. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/__init__.py +0 -0
  99. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/action_type.py +0 -0
  100. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/event_telegram.py +0 -0
  101. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/event_type.py +0 -0
  102. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/input_action_type.py +0 -0
  103. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/input_type.py +0 -0
  104. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/module_type.py +0 -0
  105. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/module_type_code.py +0 -0
  106. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/output_telegram.py +0 -0
  107. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/reply_telegram.py +0 -0
  108. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/system_function.py +0 -0
  109. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/system_telegram.py +0 -0
  110. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/telegram.py +0 -0
  111. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/telegram_type.py +0 -0
  112. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/telegram/timeparam_type.py +0 -0
  113. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/term/__init__.py +0 -0
  114. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/term/connection_state.py +0 -0
  115. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/term/module_state.py +0 -0
  116. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/term/protocol_keys_config.py +0 -0
  117. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/term/status_message.py +0 -0
  118. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/term/telegram_display.py +0 -0
  119. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/models/write_config_type.py +0 -0
  120. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/__init__.py +0 -0
  121. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/actiontable/__init__.py +0 -0
  122. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/actiontable/actiontable_serializer.py +0 -0
  123. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/actiontable/msactiontable_serializer.py +0 -0
  124. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/actiontable/msactiontable_xp20_serializer.py +0 -0
  125. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/actiontable/msactiontable_xp24_serializer.py +0 -0
  126. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/actiontable/msactiontable_xp33_serializer.py +0 -0
  127. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/__init__.py +0 -0
  128. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/actiontable/__init__.py +0 -0
  129. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/actiontable/actiontable_download_service.py +0 -0
  130. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/actiontable/actiontable_list_service.py +0 -0
  131. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/actiontable/actiontable_show_service.py +0 -0
  132. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/actiontable/actiontable_upload_service.py +0 -0
  133. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_blink_all_service.py +0 -0
  134. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_blink_service.py +0 -0
  135. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_custom_service.py +0 -0
  136. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_datapoint_queryall_service.py +0 -0
  137. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_discover_service.py +0 -0
  138. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_event_list_service.py +0 -0
  139. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_event_raw_service.py +0 -0
  140. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_export_service.py +0 -0
  141. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_output_service.py +0 -0
  142. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_raw_service.py +0 -0
  143. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_receive_service.py +0 -0
  144. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/conbus_scan_service.py +0 -0
  145. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/conbus/write_config_service.py +0 -0
  146. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/__init__.py +0 -0
  147. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_cache_service.py +0 -0
  148. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_conbus_service.py +0 -0
  149. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_config_validator.py +0 -0
  150. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_conson_validator.py +0 -0
  151. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_dimminglight.py +0 -0
  152. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_dimminglight_service.py +0 -0
  153. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_hap_service.py +0 -0
  154. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_lightbulb.py +0 -0
  155. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_lightbulb_service.py +0 -0
  156. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_module_service.py +0 -0
  157. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_outlet.py +0 -0
  158. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_outlet_service.py +0 -0
  159. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/homekit/homekit_service.py +0 -0
  160. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/log_file_service.py +0 -0
  161. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/module_type_service.py +0 -0
  162. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/protocol/__init__.py +0 -0
  163. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/protocol/conbus_protocol.py +0 -0
  164. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/protocol/protocol_factory.py +0 -0
  165. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/protocol/telegram_protocol.py +0 -0
  166. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/reverse_proxy_service.py +0 -0
  167. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/__init__.py +0 -0
  168. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/base_server_service.py +0 -0
  169. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/client_buffer_manager.py +0 -0
  170. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/cp20_server_service.py +0 -0
  171. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/device_service_factory.py +0 -0
  172. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/server_service.py +0 -0
  173. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/xp130_server_service.py +0 -0
  174. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/xp20_server_service.py +0 -0
  175. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/xp230_server_service.py +0 -0
  176. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/xp24_server_service.py +0 -0
  177. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/server/xp33_server_service.py +0 -0
  178. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/__init__.py +0 -0
  179. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/telegram_blink_service.py +0 -0
  180. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/telegram_checksum_service.py +0 -0
  181. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/telegram_datapoint_service.py +0 -0
  182. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/telegram_discover_service.py +0 -0
  183. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/telegram_link_number_service.py +0 -0
  184. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/telegram_output_service.py +0 -0
  185. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/telegram_service.py +0 -0
  186. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/telegram/telegram_version_service.py +0 -0
  187. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/term/__init__.py +0 -0
  188. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/term/protocol_monitor_service.py +0 -0
  189. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/services/term/state_monitor_service.py +0 -0
  190. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/__init__.py +0 -0
  191. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/protocol.py +0 -0
  192. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/protocol.tcss +0 -0
  193. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/state.py +0 -0
  194. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/state.tcss +0 -0
  195. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/widgets/__init__.py +0 -0
  196. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/widgets/help_menu.py +0 -0
  197. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/widgets/modules_list.py +0 -0
  198. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/widgets/protocol_log.py +0 -0
  199. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/term/widgets/status_footer.py +0 -0
  200. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/utils/__init__.py +0 -0
  201. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/utils/checksum.py +0 -0
  202. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/utils/dependencies.py +0 -0
  203. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/utils/event_helper.py +0 -0
  204. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/utils/logging.py +0 -0
  205. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/utils/serialization.py +0 -0
  206. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/utils/state_machine.py +0 -0
  207. {conson_xp-1.36.0 → conson_xp-1.37.0}/src/xp/utils/time_utils.py +0 -0
  208. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/.coverage +0 -0
  209. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/__init__.py +0 -0
  210. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/conftest.py +0 -0
  211. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/.coverage +0 -0
  212. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/__init__.py +0 -0
  213. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/telegram_test_data.py +0 -0
  214. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_actiontable_integration.py +0 -0
  215. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_api/.coverage +0 -0
  216. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_api/__init__.py +0 -0
  217. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_blink_integration.py +0 -0
  218. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_checksum_integration.py +0 -0
  219. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_conbus_blink_integration.py +0 -0
  220. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_conbus_datapoint_integration.py +0 -0
  221. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_conbus_raw_integration.py +0 -0
  222. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_conbus_receive_integration.py +0 -0
  223. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_discovery_integration.py +0 -0
  224. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_event_telegram_integration.py +0 -0
  225. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_homekit_config_integration.py +0 -0
  226. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_link_number_integration.py +0 -0
  227. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_module_integration.py +0 -0
  228. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_output_integration.py +0 -0
  229. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_reverse_proxy_integration.py +0 -0
  230. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_system_reply_telegram_integration.py +0 -0
  231. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_term_logging_integration.py +0 -0
  232. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_version_integration.py +0 -0
  233. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_xp20_action_table_integration.py +0 -0
  234. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/integration/test_xp24_action_table_integration.py +0 -0
  235. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/__init__.py +0 -0
  236. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_api/__init__.py +0 -0
  237. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/__init__.py +0 -0
  238. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_click_tree.py +0 -0
  239. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_conbus_actiontable_commands.py +0 -0
  240. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_conbus_blink_commands.py +0 -0
  241. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_datapoint_type_choice.py +0 -0
  242. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_decorators.py +0 -0
  243. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_error_handlers.py +0 -0
  244. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_formatters.py +0 -0
  245. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_serial_number_type.py +0 -0
  246. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_system_function_choice.py +0 -0
  247. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_cli/test_term_commands.py +0 -0
  248. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_connection/__init__.py +0 -0
  249. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_connection/test_connection_init.py +0 -0
  250. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_connection/test_exceptions.py +0 -0
  251. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_encoding/__init__.py +0 -0
  252. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_encoding/test_latin1_edge_cases.py +0 -0
  253. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/__init__.py +0 -0
  254. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_conbus.py +0 -0
  255. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_conbus_client_send.py +0 -0
  256. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_conbus_discover.py +0 -0
  257. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_conbus_linknumber.py +0 -0
  258. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_event_telegram.py +0 -0
  259. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_log_entry.py +0 -0
  260. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_logger_config.py +0 -0
  261. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_module_type.py +0 -0
  262. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_reply_telegram.py +0 -0
  263. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_system_telegram.py +0 -0
  264. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_system_telegram_enhancements.py +0 -0
  265. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_version_telegram.py +0 -0
  266. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_write_config_type.py +0 -0
  267. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_xp20_action_table.py +0 -0
  268. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_xp24_action_table.py +0 -0
  269. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_models/test_xp24_action_telegram.py +0 -0
  270. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/__init__.py +0 -0
  271. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_actiontable_serializer.py +0 -0
  272. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_actiontable_service.py +0 -0
  273. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_actiontable_upload_service.py +0 -0
  274. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_base_server_service.py +0 -0
  275. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_blink_service.py +0 -0
  276. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_checksum_service.py +0 -0
  277. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_client_buffer_manager.py +0 -0
  278. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_blink_service.py +0 -0
  279. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_event_list_service.py +0 -0
  280. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_event_protocol.py +0 -0
  281. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_event_raw_service.py +0 -0
  282. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_output_service.py +0 -0
  283. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_raw_service.py +0 -0
  284. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_receive_service.py +0 -0
  285. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_reverse_proxy_service.py +0 -0
  286. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_conbus_scan_service.py +0 -0
  287. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_device_service_factory.py +0 -0
  288. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_discovery_service.py +0 -0
  289. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_homekit_cache_service.py +0 -0
  290. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_homekit_config_validator.py +0 -0
  291. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_homekit_conson_service.py +0 -0
  292. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_homekit_services.py +0 -0
  293. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_log_file_service.py +0 -0
  294. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_module_type_service.py +0 -0
  295. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_protocol.py +0 -0
  296. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_protocol_monitor_service.py +0 -0
  297. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_server_service.py +0 -0
  298. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_state_monitor_service.py +0 -0
  299. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_telegram_input_service.py +0 -0
  300. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_telegram_output_service.py +0 -0
  301. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_telegram_protocol.py +0 -0
  302. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_telegram_service.py +0 -0
  303. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_version_service.py +0 -0
  304. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_xp20_action_table_serializer.py +0 -0
  305. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_xp24_action_service.py +0 -0
  306. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_xp24_action_table_serializer.py +0 -0
  307. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_xp33_action_table_serializer.py +0 -0
  308. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_services/test_xp_server_services.py +0 -0
  309. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_tui/__init__.py +0 -0
  310. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_tui/test_protocol_log.py +0 -0
  311. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_utils/__init__.py +0 -0
  312. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_utils/test_checksum.py +0 -0
  313. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_utils/test_event_helper.py +0 -0
  314. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_utils/test_logging.py +0 -0
  315. {conson_xp-1.36.0 → conson_xp-1.37.0}/tests/unit/test_utils/test_serialization.py +0 -0
  316. {conson_xp-1.36.0 → conson_xp-1.37.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.36.0
3
+ Version: 1.37.0
4
4
  Summary: XP Protocol Communication Tools
5
5
  Author-Email: ldvchosal <ldvchosal@github.com>
6
6
  License: MIT License
@@ -22,7 +22,7 @@ dependencies = [
22
22
  ]
23
23
  requires-python = ">=3.11"
24
24
  readme = "README.md"
25
- version = "1.36.0"
25
+ version = "1.37.0"
26
26
 
27
27
  [project.license]
28
28
  file = "LICENSE"
@@ -3,7 +3,7 @@
3
3
  conson-xp package.
4
4
  """
5
5
 
6
- __version__ = "1.36.0"
6
+ __version__ = "1.37.0"
7
7
  __manufacturer__ = "salchichon"
8
8
  __model__ = "xp.cli"
9
9
  __serial__ = "2025.09.23.000"
@@ -57,7 +57,7 @@ def conbus_download_actiontable(ctx: Context, serial_number: str) -> None:
57
57
  Args:
58
58
  progress: Progress message string.
59
59
  """
60
- click.echo(progress)
60
+ click.echo(progress, nl=False)
61
61
 
62
62
  def on_finish(result: tuple) -> None:
63
63
  """Handle successful completion of action table download.
@@ -57,8 +57,11 @@ def get_autoreport_command(ctx: Context, serial_number: str) -> None:
57
57
  with service:
58
58
  service.on_finish.connect(on_finish)
59
59
  service.query_datapoint(
60
- serial_number=serial_number, datapoint_type=DataPointType.AUTO_REPORT_STATUS
60
+ serial_number=serial_number,
61
+ datapoint_type=DataPointType.AUTO_REPORT_STATUS,
62
+ timeout_seconds=1.0,
61
63
  )
64
+ service.start_reactor()
62
65
 
63
66
 
64
67
  @conbus_autoreport.command("set", short_help="Set auto report status for a module")
@@ -104,6 +107,6 @@ def set_autoreport_command(ctx: Context, serial_number: str, status: str) -> Non
104
107
  serial_number=serial_number,
105
108
  datapoint_type=DataPointType.AUTO_REPORT_STATUS,
106
109
  data_value=data_value,
107
- timeout_seconds=0.5,
110
+ timeout_seconds=1.0,
108
111
  )
109
112
  service.start_reactor()
@@ -200,6 +200,7 @@ def xp_lightlevel_get(
200
200
  result["output_number"] = output_number
201
201
  result["lightlevel_level"] = lightlevel_level
202
202
  click.echo(json.dumps(result, indent=2))
203
+ service.stop_reactor()
203
204
 
204
205
  with service:
205
206
  service.on_finish.connect(on_finish)
@@ -208,3 +209,4 @@ def xp_lightlevel_get(
208
209
  datapoint_type=DataPointType.MODULE_LIGHT_LEVEL,
209
210
  timeout_seconds=0.5,
210
211
  )
212
+ service.start_reactor()
@@ -93,6 +93,7 @@ def get_linknumber_command(ctx: click.Context, serial_number: str) -> None:
93
93
  result = service_response.to_dict()
94
94
  result["linknumber_value"] = linknumber_value
95
95
  click.echo(json.dumps(result, indent=2))
96
+ service.stop_reactor()
96
97
 
97
98
  with service:
98
99
  service.on_finish.connect(on_finish)
@@ -101,3 +102,4 @@ def get_linknumber_command(ctx: click.Context, serial_number: str) -> None:
101
102
  datapoint_type=DataPointType.LINK_NUMBER,
102
103
  timeout_seconds=0.5,
103
104
  )
105
+ service.start_reactor()
@@ -95,6 +95,7 @@ def get_modulenumber_command(ctx: click.Context, serial_number: str) -> None:
95
95
  result = service_response.to_dict()
96
96
  result["modulenumber_value"] = modulenumber_value
97
97
  click.echo(json.dumps(result, indent=2))
98
+ service.stop_reactor()
98
99
 
99
100
  with service:
100
101
  service.on_finish.connect(on_finish)
@@ -103,3 +104,4 @@ def get_modulenumber_command(ctx: click.Context, serial_number: str) -> None:
103
104
  datapoint_type=DataPointType.MODULE_NUMBER,
104
105
  timeout_seconds=0.5,
105
106
  )
107
+ service.start_reactor()
@@ -121,6 +121,7 @@ def xp_output_status(ctx: click.Context, serial_number: str) -> None:
121
121
  response: Datapoint response object.
122
122
  """
123
123
  click.echo(json.dumps(response.to_dict(), indent=2))
124
+ service.stop_reactor()
124
125
 
125
126
  with service:
126
127
  service.on_finish.connect(on_finish)
@@ -128,6 +129,7 @@ def xp_output_status(ctx: click.Context, serial_number: str) -> None:
128
129
  serial_number=serial_number,
129
130
  datapoint_type=DataPointType.MODULE_OUTPUT_STATE,
130
131
  )
132
+ service.start_reactor()
131
133
 
132
134
 
133
135
  @conbus_output.command("state")
@@ -156,6 +158,7 @@ def xp_module_state(ctx: click.Context, serial_number: str) -> None:
156
158
  response: Datapoint response object.
157
159
  """
158
160
  click.echo(json.dumps(response.to_dict(), indent=2))
161
+ service.stop_reactor()
159
162
 
160
163
  with service:
161
164
  service.on_finish.connect(on_finish)
@@ -163,3 +166,4 @@ def xp_module_state(ctx: click.Context, serial_number: str) -> None:
163
166
  serial_number=serial_number,
164
167
  datapoint_type=DataPointType.MODULE_STATE,
165
168
  )
169
+ service.start_reactor()
@@ -30,6 +30,36 @@ class DataPointType(str, Enum):
30
30
  SW_TOP_VERSION: Software top version.
31
31
  VOLTAGE: Voltage data point.
32
32
  AUTO_REPORT_STATUS: Auto report status.
33
+
34
+ Sample telegram datapoint request:
35
+ <S0020044966F02D30FL>
36
+
37
+ Sample telegram datapoint reply:
38
+ <R0020044966F02D00XP24FH>
39
+ <R0020044966F02D01XP24FG>
40
+ <R0020044966F02D02XP24_V0.34.03GI>
41
+ <R0020044966F02D030020044966FB>
42
+ <R0020044966F02D0406FL>
43
+ <R0020044966F02D050007FL>
44
+ <R0020044966F02D0601FO>
45
+ <R0020044966F02D0707FJ>
46
+ <R0020044966F02D08MIFF>
47
+ <R0020044966F02D09OFFBP>
48
+ <R0020044966F02D1000FI>
49
+ <R0020044966F02D11xxxx0000FJ>
50
+ <R0020044966F02D12xxxx0000FK>
51
+ <R0020044966F02D1500:000[%],01:000[%],02:000[%],03:000[%]HB>
52
+ <R0020044966F02D1600:000[H],01:000[H],02:000[H],03:000[H]HC>
53
+ <R0020044966F02D1700:00000[NA],01:00000[NA],02:00000[NA],03:00000[NA]HD>
54
+ <R0020044966F02D18+28,5§CIM>
55
+ <R0020044966F02D19??FB>
56
+ <R0020044966F02D20??FL>
57
+ <R0020044966F02D21PPFK>
58
+ <R0020044966F02D22PLLKMDINEM>
59
+ <R0020044966F02D23AAFI>
60
+ <R0020044966F02D24AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFP>
61
+ <R0020044966F02D25AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFO>
62
+ <R0020044966F02D26??FN>
33
63
  """
34
64
 
35
65
  MODULE_TYPE = "00" # Module type (XP24, XP33, ..)
@@ -182,7 +182,6 @@ class MsActionTableService:
182
182
  """
183
183
  self.logger.debug(f"Failed: {message}")
184
184
  self.on_error.emit(message)
185
- self.on_finish.emit(None)
186
185
 
187
186
  def succeed(
188
187
  self,
@@ -165,7 +165,7 @@ class ConbusDatapointService:
165
165
  self,
166
166
  serial_number: str,
167
167
  datapoint_type: DataPointType,
168
- timeout_seconds: Optional[float] = None,
168
+ timeout_seconds: float = 1.0,
169
169
  ) -> None:
170
170
  """Query a specific datapoint from a module.
171
171
 
@@ -320,9 +320,13 @@ class ConbusEventProtocol(protocol.Protocol, protocol.ClientFactory):
320
320
 
321
321
  def stop_reactor(self) -> None:
322
322
  """Stop the reactor if it's running."""
323
- if self._reactor.running:
324
- self.logger.info("Stopping reactor")
325
- self._reactor.stop()
323
+ try:
324
+ if self._reactor.running:
325
+ self.logger.info("Stopping reactor")
326
+ self._reactor.stop()
327
+ except Exception as e:
328
+ # Reactor might have already stopped or not been started via run()
329
+ self.logger.debug(f"Reactor stop failed (likely already stopped): {e}")
326
330
 
327
331
  def connect(self) -> None:
328
332
  """Connect to TCP server.
@@ -291,7 +291,6 @@ class TestMsActionTableService:
291
291
  service.failed("Connection timeout")
292
292
 
293
293
  mock_error.assert_called_once_with("Connection timeout")
294
- mock_finish.assert_called_once_with(None)
295
294
 
296
295
  def test_start_method_xp24(self, service):
297
296
  """Test start method with xp24 module type."""
File without changes
File without changes