conson-xp 1.0.1__tar.gz → 1.1.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 (278) hide show
  1. {conson_xp-1.0.1 → conson_xp-1.1.0}/PKG-INFO +1 -1
  2. {conson_xp-1.0.1 → conson_xp-1.1.0}/pyproject.toml +2 -2
  3. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/__init__.py +1 -1
  4. conson_xp-1.1.0/src/xp/cli/commands/conbus/conbus_scan_commands.py +45 -0
  5. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_scan_service.py +1 -1
  6. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/protocol/conbus_protocol.py +5 -4
  7. conson_xp-1.0.1/src/xp/cli/commands/conbus/conbus_scan_commands.py +0 -125
  8. {conson_xp-1.0.1 → conson_xp-1.1.0}/LICENSE +0 -0
  9. {conson_xp-1.0.1 → conson_xp-1.1.0}/README.md +0 -0
  10. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/__init__.py +0 -0
  11. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/main.py +0 -0
  12. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/models/__init__.py +0 -0
  13. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/models/api.py +0 -0
  14. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/models/discover.py +0 -0
  15. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/routers/__init__.py +0 -0
  16. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/routers/conbus.py +0 -0
  17. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/routers/conbus_blink.py +0 -0
  18. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/routers/conbus_custom.py +0 -0
  19. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/routers/conbus_datapoint.py +0 -0
  20. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/routers/conbus_output.py +0 -0
  21. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/api/routers/errors.py +0 -0
  22. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/__init__.py +0 -0
  23. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/__main__.py +0 -0
  24. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/__init__.py +0 -0
  25. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/api.py +0 -0
  26. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/api_start_commands.py +0 -0
  27. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/__init__.py +0 -0
  28. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus.py +0 -0
  29. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_actiontable_commands.py +0 -0
  30. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_autoreport_commands.py +0 -0
  31. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_blink_commands.py +0 -0
  32. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_config_commands.py +0 -0
  33. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_custom_commands.py +0 -0
  34. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_datapoint_commands.py +0 -0
  35. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_discover_commands.py +0 -0
  36. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_lightlevel_commands.py +0 -0
  37. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_linknumber_commands.py +0 -0
  38. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_msactiontable_commands.py +0 -0
  39. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_output_commands.py +0 -0
  40. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_raw_commands.py +0 -0
  41. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/conbus/conbus_receive_commands.py +0 -0
  42. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/file_commands.py +0 -0
  43. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/homekit/__init__.py +0 -0
  44. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/homekit/homekit.py +0 -0
  45. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/homekit/homekit_start_commands.py +0 -0
  46. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/module_commands.py +0 -0
  47. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/reverse_proxy_commands.py +0 -0
  48. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/server/__init__.py +0 -0
  49. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/server/server_commands.py +0 -0
  50. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/telegram/__init__.py +0 -0
  51. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/telegram/telegram.py +0 -0
  52. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/telegram/telegram_blink_commands.py +0 -0
  53. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/telegram/telegram_checksum_commands.py +0 -0
  54. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/telegram/telegram_discover_commands.py +0 -0
  55. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/telegram/telegram_linknumber_commands.py +0 -0
  56. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/telegram/telegram_parse_commands.py +0 -0
  57. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/commands/telegram/telegram_version_commands.py +0 -0
  58. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/main.py +0 -0
  59. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/__init__.py +0 -0
  60. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/click_tree.py +0 -0
  61. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/datapoint_type_choice.py +0 -0
  62. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/decorators.py +0 -0
  63. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/error_handlers.py +0 -0
  64. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/formatters.py +0 -0
  65. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/serial_number_type.py +0 -0
  66. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/system_function_choice.py +0 -0
  67. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/cli/utils/xp_module_type.py +0 -0
  68. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/connection/__init__.py +0 -0
  69. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/connection/exceptions.py +0 -0
  70. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/__init__.py +0 -0
  71. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/actiontable/__init__.py +0 -0
  72. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/actiontable/actiontable.py +0 -0
  73. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/actiontable/msactiontable_xp20.py +0 -0
  74. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/actiontable/msactiontable_xp24.py +0 -0
  75. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/actiontable/msactiontable_xp33.py +0 -0
  76. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/__init__.py +0 -0
  77. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus.py +0 -0
  78. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_autoreport.py +0 -0
  79. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_blink.py +0 -0
  80. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_client_config.py +0 -0
  81. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_connection_status.py +0 -0
  82. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_custom.py +0 -0
  83. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_datapoint.py +0 -0
  84. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_discover.py +0 -0
  85. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_lightlevel.py +0 -0
  86. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_linknumber.py +0 -0
  87. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_output.py +0 -0
  88. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_raw.py +0 -0
  89. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/conbus/conbus_receive.py +0 -0
  90. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/homekit/__init__.py +0 -0
  91. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/homekit/homekit_accessory.py +0 -0
  92. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/homekit/homekit_config.py +0 -0
  93. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/homekit/homekit_conson_config.py +0 -0
  94. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/log_entry.py +0 -0
  95. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/protocol/__init__.py +0 -0
  96. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/protocol/conbus_protocol.py +0 -0
  97. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/response.py +0 -0
  98. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/__init__.py +0 -0
  99. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/action_type.py +0 -0
  100. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/datapoint_type.py +0 -0
  101. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/event_telegram.py +0 -0
  102. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/event_type.py +0 -0
  103. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/input_action_type.py +0 -0
  104. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/input_type.py +0 -0
  105. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/module_type.py +0 -0
  106. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/module_type_code.py +0 -0
  107. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/output_telegram.py +0 -0
  108. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/reply_telegram.py +0 -0
  109. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/system_function.py +0 -0
  110. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/system_telegram.py +0 -0
  111. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/telegram.py +0 -0
  112. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/telegram_type.py +0 -0
  113. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/telegram/timeparam_type.py +0 -0
  114. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/models/write_config_type.py +0 -0
  115. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/__init__.py +0 -0
  116. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/__init__.py +0 -0
  117. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/actiontable/__init__.py +0 -0
  118. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/actiontable/actiontable_serializer.py +0 -0
  119. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/actiontable/actiontable_service.py +0 -0
  120. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/actiontable/msactiontable_service.py +0 -0
  121. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/actiontable/msactiontable_xp20_serializer.py +0 -0
  122. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/actiontable/msactiontable_xp24_serializer.py +0 -0
  123. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/actiontable/msactiontable_xp33_serializer.py +0 -0
  124. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_autoreport_get_service.py +0 -0
  125. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_autoreport_set_service.py +0 -0
  126. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_blink_all_service.py +0 -0
  127. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_blink_service.py +0 -0
  128. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_custom_service.py +0 -0
  129. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_datapoint_queryall_service.py +0 -0
  130. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_datapoint_service.py +0 -0
  131. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_discover_service.py +0 -0
  132. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_lightlevel_get_service.py +0 -0
  133. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_lightlevel_set_service.py +0 -0
  134. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_linknumber_get_service.py +0 -0
  135. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_linknumber_set_service.py +0 -0
  136. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_output_service.py +0 -0
  137. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_raw_service.py +0 -0
  138. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/conbus/conbus_receive_service.py +0 -0
  139. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/__init__.py +0 -0
  140. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_cache_service.py +0 -0
  141. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_conbus_service.py +0 -0
  142. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_config_validator.py +0 -0
  143. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_conson_validator.py +0 -0
  144. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_dimminglight.py +0 -0
  145. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_dimminglight_service.py +0 -0
  146. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_hap_service.py +0 -0
  147. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_lightbulb.py +0 -0
  148. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_lightbulb_service.py +0 -0
  149. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_module_service.py +0 -0
  150. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_outlet.py +0 -0
  151. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_outlet_service.py +0 -0
  152. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/homekit/homekit_service.py +0 -0
  153. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/log_file_service.py +0 -0
  154. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/module_type_service.py +0 -0
  155. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/protocol/__init__.py +0 -0
  156. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/protocol/protocol_factory.py +0 -0
  157. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/protocol/telegram_protocol.py +0 -0
  158. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/reverse_proxy_service.py +0 -0
  159. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/__init__.py +0 -0
  160. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/base_server_service.py +0 -0
  161. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/cp20_server_service.py +0 -0
  162. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/server_service.py +0 -0
  163. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/xp130_server_service.py +0 -0
  164. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/xp20_server_service.py +0 -0
  165. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/xp230_server_service.py +0 -0
  166. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/xp24_server_service.py +0 -0
  167. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/server/xp33_server_service.py +0 -0
  168. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/telegram/__init__.py +0 -0
  169. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/telegram/telegram_blink_service.py +0 -0
  170. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/telegram/telegram_checksum_service.py +0 -0
  171. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/telegram/telegram_discover_service.py +0 -0
  172. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/telegram/telegram_link_number_service.py +0 -0
  173. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/telegram/telegram_output_service.py +0 -0
  174. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/telegram/telegram_service.py +0 -0
  175. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/services/telegram/telegram_version_service.py +0 -0
  176. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/utils/__init__.py +0 -0
  177. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/utils/checksum.py +0 -0
  178. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/utils/dependencies.py +0 -0
  179. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/utils/event_helper.py +0 -0
  180. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/utils/serialization.py +0 -0
  181. {conson_xp-1.0.1 → conson_xp-1.1.0}/src/xp/utils/time_utils.py +0 -0
  182. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/.coverage +0 -0
  183. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/__init__.py +0 -0
  184. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/conftest.py +0 -0
  185. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/.coverage +0 -0
  186. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/__init__.py +0 -0
  187. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/telegram_test_data.py +0 -0
  188. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_actiontable_integration.py +0 -0
  189. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_api/.coverage +0 -0
  190. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_api/__init__.py +0 -0
  191. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_blink_integration.py +0 -0
  192. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_checksum_integration.py +0 -0
  193. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_conbus_autoreport_integration.py +0 -0
  194. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_conbus_blink_integration.py +0 -0
  195. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_conbus_datapoint_integration.py +0 -0
  196. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_conbus_lightlevel_integration.py +0 -0
  197. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_conbus_linknumber_integration.py +0 -0
  198. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_conbus_raw_integration.py +0 -0
  199. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_conbus_receive_integration.py +0 -0
  200. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_discovery_integration.py +0 -0
  201. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_event_telegram_integration.py +0 -0
  202. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_homekit_config_integration.py +0 -0
  203. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_link_number_integration.py +0 -0
  204. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_module_integration.py +0 -0
  205. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_output_integration.py +0 -0
  206. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_reverse_proxy_integration.py +0 -0
  207. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_system_reply_telegram_integration.py +0 -0
  208. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_version_integration.py +0 -0
  209. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_xp20_action_table_integration.py +0 -0
  210. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/integration/test_xp24_action_table_integration.py +0 -0
  211. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/__init__.py +0 -0
  212. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_api/__init__.py +0 -0
  213. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/__init__.py +0 -0
  214. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_click_tree.py +0 -0
  215. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_conbus_actiontable_commands.py +0 -0
  216. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_conbus_blink_commands.py +0 -0
  217. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_datapoint_type_choice.py +0 -0
  218. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_decorators.py +0 -0
  219. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_error_handlers.py +0 -0
  220. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_formatters.py +0 -0
  221. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_serial_number_type.py +0 -0
  222. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_cli/test_system_function_choice.py +0 -0
  223. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_connection/__init__.py +0 -0
  224. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_connection/test_connection_init.py +0 -0
  225. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_connection/test_exceptions.py +0 -0
  226. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_encoding/__init__.py +0 -0
  227. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_encoding/test_latin1_edge_cases.py +0 -0
  228. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/__init__.py +0 -0
  229. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_conbus.py +0 -0
  230. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_conbus_client_send.py +0 -0
  231. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_conbus_discover.py +0 -0
  232. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_conbus_linknumber.py +0 -0
  233. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_event_telegram.py +0 -0
  234. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_log_entry.py +0 -0
  235. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_module_type.py +0 -0
  236. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_reply_telegram.py +0 -0
  237. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_system_telegram.py +0 -0
  238. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_system_telegram_enhancements.py +0 -0
  239. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_version_telegram.py +0 -0
  240. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_write_config_type.py +0 -0
  241. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_xp20_action_table.py +0 -0
  242. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_xp24_action_table.py +0 -0
  243. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_models/test_xp24_action_telegram.py +0 -0
  244. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/__init__.py +0 -0
  245. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_actiontable_service.py +0 -0
  246. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_base_server_service.py +0 -0
  247. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_blink_service.py +0 -0
  248. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_checksum_service.py +0 -0
  249. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_conbus_blink_service.py +0 -0
  250. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_conbus_lightlevel_service.py +0 -0
  251. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_conbus_linknumber_service.py +0 -0
  252. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_conbus_raw_service.py +0 -0
  253. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_conbus_reverse_proxy_service.py +0 -0
  254. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_discovery_service.py +0 -0
  255. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_homekit_cache_service.py +0 -0
  256. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_homekit_config_validator.py +0 -0
  257. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_homekit_conson_service.py +0 -0
  258. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_homekit_services.py +0 -0
  259. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_link_number_service.py +0 -0
  260. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_log_file_service.py +0 -0
  261. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_module_type_service.py +0 -0
  262. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_protocol.py +0 -0
  263. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_server_service.py +0 -0
  264. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_telegram_input_service.py +0 -0
  265. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_telegram_protocol.py +0 -0
  266. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_telegram_service.py +0 -0
  267. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_version_service.py +0 -0
  268. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_xp20_action_table_serializer.py +0 -0
  269. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_xp24_action_service.py +0 -0
  270. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_xp24_action_table_serializer.py +0 -0
  271. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_xp24_action_table_service.py +0 -0
  272. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_xp33_action_table_serializer.py +0 -0
  273. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_services/test_xp_server_services.py +0 -0
  274. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_utils/__init__.py +0 -0
  275. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_utils/test_checksum.py +0 -0
  276. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_utils/test_event_helper.py +0 -0
  277. {conson_xp-1.0.1 → conson_xp-1.1.0}/tests/unit/test_utils/test_serialization.py +0 -0
  278. {conson_xp-1.0.1 → conson_xp-1.1.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.0.1
3
+ Version: 1.1.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.0.1"
23
+ version = "1.1.0"
24
24
 
25
25
  [project.license]
26
26
  file = "LICENSE"
@@ -168,7 +168,7 @@ typecheck = "mypy src/ tests/"
168
168
  vulture = "vulture src/ tests/"
169
169
  refurb = "refurb src/ tests/"
170
170
  isort = "isort src/ tests/"
171
- bump-version = "pdm bump -v patch"
171
+ bump-version = "pdm bump -v minor"
172
172
  env = "echo ${PATH}"
173
173
  install = "pdm install"
174
174
  install-dev = "pdm install -G dev"
@@ -2,7 +2,7 @@
2
2
 
3
3
  """conson-xp"""
4
4
 
5
- __version__ = "1.0.1"
5
+ __version__ = "1.1.0"
6
6
  __manufacturer__ = "salchichon"
7
7
  __model__ = "xp.cli"
8
8
  __serial__ = "2025.09.23.000"
@@ -0,0 +1,45 @@
1
+ """Conbus client operations CLI commands."""
2
+
3
+ import json
4
+
5
+ import click
6
+ from click import Context
7
+
8
+ from xp.cli.commands.conbus.conbus import conbus
9
+ from xp.cli.utils.decorators import connection_command
10
+ from xp.cli.utils.serial_number_type import SERIAL
11
+ from xp.models import ConbusResponse
12
+ from xp.services.conbus.conbus_scan_service import ConbusScanService
13
+
14
+
15
+ @conbus.command("scan")
16
+ @click.argument("serial_number", type=SERIAL)
17
+ @click.argument("function_code", type=str)
18
+ @click.pass_context
19
+ @connection_command()
20
+ def scan_module(ctx: Context, serial_number: str, function_code: str) -> None:
21
+ """
22
+ Scan all datapoints of a function_code for a module.
23
+
24
+ Examples:
25
+
26
+ \b
27
+ xp conbus scan 0012345011 02 # Scan all datapoints of function Read data points (02)
28
+ """
29
+ service: ConbusScanService = (
30
+ ctx.obj.get("container").get_container().resolve(ConbusScanService)
31
+ )
32
+
33
+ def on_progress(progress: str) -> None:
34
+ click.echo(progress)
35
+
36
+ def on_finish(service_response: ConbusResponse) -> None:
37
+ click.echo(json.dumps(service_response.to_dict(), indent=2))
38
+
39
+ with service:
40
+ service.scan_module(
41
+ serial_number=serial_number,
42
+ function_code=function_code,
43
+ progress_callback=on_progress,
44
+ finish_callback=on_finish,
45
+ )
@@ -91,7 +91,7 @@ class ConbusScanService(ConbusProtocol):
91
91
  if self.finish_callback:
92
92
  self.finish_callback(self.service_response)
93
93
 
94
- def scan_module_background(
94
+ def scan_module(
95
95
  self,
96
96
  serial_number: str,
97
97
  function_code: str,
@@ -75,7 +75,7 @@ class ConbusProtocol(protocol.Protocol, protocol.ClientFactory):
75
75
  )
76
76
 
77
77
  self.logger.debug(
78
- f"frameReceived payload: {payload.decode()}, checksum: {checksum}"
78
+ f"frameReceived payload: {payload.decode('latin-1')}, checksum: {checksum}"
79
79
  )
80
80
 
81
81
  # Reset timeout on activity
@@ -83,9 +83,9 @@ class ConbusProtocol(protocol.Protocol, protocol.ClientFactory):
83
83
 
84
84
  telegram_received = TelegramReceivedEvent(
85
85
  protocol=self,
86
- frame=frame.decode(),
87
- telegram=telegram.decode(),
88
- payload=payload.decode(),
86
+ frame=frame.decode("latin-1"),
87
+ telegram=telegram.decode("latin-1"),
88
+ payload=payload.decode("latin-1"),
89
89
  telegram_type=telegram_type,
90
90
  serial_number=serial_number,
91
91
  checksum=checksum,
@@ -112,6 +112,7 @@ class ConbusProtocol(protocol.Protocol, protocol.ClientFactory):
112
112
  self.logger.debug(f"Sending frame: {frame.decode()}")
113
113
  self.transport.write(frame) # type: ignore
114
114
  self.telegram_sent(frame.decode())
115
+ self._reset_timeout()
115
116
 
116
117
  def send_telegram(
117
118
  self,
@@ -1,125 +0,0 @@
1
- """Conbus client operations CLI commands."""
2
-
3
- import json
4
- import threading
5
-
6
- import click
7
- from click import Context
8
-
9
- from xp.cli.commands.conbus.conbus import conbus
10
- from xp.cli.utils.decorators import connection_command
11
- from xp.cli.utils.serial_number_type import SERIAL
12
- from xp.models import ConbusResponse
13
- from xp.services.conbus.conbus_scan_service import ConbusScanService
14
-
15
-
16
- @conbus.command("scan")
17
- @click.argument("serial_number", type=SERIAL)
18
- @click.argument("function_code", type=str)
19
- @click.option(
20
- "--background",
21
- "-b",
22
- default=True,
23
- is_flag=True,
24
- help="Run scan in background with live output",
25
- )
26
- @click.pass_context
27
- @connection_command()
28
- def scan_module(
29
- ctx: Context, serial_number: str, function_code: str, background: bool
30
- ) -> None:
31
- """
32
- Scan all datapoints of a function_code for a module.
33
-
34
- Examples:
35
-
36
- \b
37
- xp conbus scan 0012345011 02 # Scan all datapoints of function Read data points (02)
38
- """
39
- service = ctx.obj.get("container").get_container().resolve(ConbusScanService)
40
-
41
- # Shared state for results collection and live output
42
- results = []
43
- successful_count = 0
44
- failed_count = 0
45
-
46
- def progress_callback(response: ConbusResponse, total: int, count: int) -> None:
47
- nonlocal successful_count, failed_count
48
- results.append(response)
49
-
50
- if count % 10 == 0:
51
- click.echo(f"{count}/{total} datapoints scanned.")
52
-
53
- # Count results for JSON output
54
- if response.success:
55
- successful_count += 1
56
- else:
57
- failed_count += 1
58
-
59
- try:
60
- with service:
61
- if background:
62
- # Background processing
63
-
64
- # Use background scanning with progress callback
65
- scan_complete = threading.Event()
66
-
67
- def background_scan() -> None:
68
- try:
69
- service.scan_module(
70
- serial_number, function_code, progress_callback
71
- )
72
- except (ValueError, KeyError, ConnectionError):
73
- pass # Will be handled by outer error handling
74
- finally:
75
- scan_complete.set()
76
-
77
- # Start background thread
78
- scan_thread = threading.Thread(target=background_scan, daemon=True)
79
- scan_thread.start()
80
-
81
- # Wait for completion or user interrupt
82
- try:
83
- while not scan_complete.is_set():
84
- scan_complete.wait(1.0) # Check every second
85
- except KeyboardInterrupt:
86
- # Output partial results in JSON format
87
- output = {
88
- "serial_number": serial_number,
89
- "total_scans": len(results),
90
- "successful_scans": successful_count,
91
- "failed_scans": failed_count,
92
- "background_mode": background,
93
- "interrupted": True,
94
- "results": [result.to_dict() for result in results],
95
- }
96
- click.echo(json.dumps(output, indent=2))
97
- raise click.Abort()
98
-
99
- # Wait for thread to complete
100
- scan_thread.join(timeout=1.0)
101
-
102
- else:
103
- # Traditional synchronous scanning
104
- results = service.scan_module(
105
- serial_number,
106
- function_code,
107
- progress_callback,
108
- )
109
- successful_count = len([r for r in results if r.success])
110
- failed_count = len([r for r in results if not r.success])
111
-
112
- # Final output
113
- output = {
114
- "serial_number": serial_number,
115
- "total_scans": len(results),
116
- "successful_scans": successful_count,
117
- "failed_scans": failed_count,
118
- "background_mode": background,
119
- "results": [result.to_dict() for result in results],
120
- }
121
- click.echo(json.dumps(output, indent=2))
122
-
123
- except click.Abort:
124
- # User interrupted the scan
125
- raise
File without changes
File without changes
File without changes
File without changes