conson-xp 1.32.0__tar.gz → 1.33.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.
- {conson_xp-1.32.0 → conson_xp-1.33.0}/PKG-INFO +26 -1
- {conson_xp-1.32.0 → conson_xp-1.33.0}/README.md +25 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/pyproject.toml +1 -1
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/__init__.py +1 -1
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_export_service.py +62 -70
- {conson_xp-1.32.0 → conson_xp-1.33.0}/LICENSE +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/__main__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_actiontable_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_autoreport_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_blink_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_config_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_custom_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_datapoint_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_discover_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_event_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_export_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_lightlevel_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_linknumber_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_modulenumber_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_msactiontable_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_output_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_raw_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_receive_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_scan_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/file_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/homekit/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/homekit/homekit.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/homekit/homekit_start_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/module_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/reverse_proxy_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/server/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/server/server_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_blink_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_checksum_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_discover_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_linknumber_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_parse_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_version_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/term/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/term/term.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/term/term_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/main.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/click_tree.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/datapoint_type_choice.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/decorators.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/error_handlers.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/formatters.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/module_type_choice.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/serial_number_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/system_function_choice.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/utils/xp_module_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/connection/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/connection/exceptions.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/actiontable/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/actiontable/actiontable.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/actiontable/msactiontable_xp20.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/actiontable/msactiontable_xp24.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/actiontable/msactiontable_xp33.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_autoreport.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_blink.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_client_config.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_connection_status.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_custom.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_datapoint.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_discover.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_event_list.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_event_raw.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_export.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_lightlevel.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_linknumber.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_logger_config.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_output.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_raw.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_receive.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/conbus/conbus_writeconfig.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/homekit/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/homekit/homekit_accessory.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/homekit/homekit_config.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/homekit/homekit_conson_config.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/log_entry.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/protocol/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/protocol/conbus_protocol.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/response.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/action_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/datapoint_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/event_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/event_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/input_action_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/input_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/module_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/module_type_code.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/output_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/reply_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/system_function.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/system_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/telegram_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/telegram/timeparam_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/term/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/term/connection_state.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/term/module_state.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/term/protocol_keys_config.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/term/status_message.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/term/telegram_display.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/models/write_config_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/actiontable_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/msactiontable_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/msactiontable_xp20_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/msactiontable_xp24_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/msactiontable_xp33_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/actiontable/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/actiontable/actiontable_download_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/actiontable/actiontable_list_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/actiontable/actiontable_show_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/actiontable/actiontable_upload_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/actiontable/msactiontable_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_blink_all_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_blink_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_custom_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_datapoint_queryall_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_datapoint_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_discover_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_event_list_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_event_raw_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_output_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_raw_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_receive_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/conbus_scan_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/write_config_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_cache_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_conbus_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_config_validator.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_conson_validator.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_dimminglight.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_dimminglight_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_hap_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_lightbulb.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_lightbulb_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_module_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_outlet.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_outlet_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/homekit/homekit_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/log_file_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/module_type_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/protocol/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/protocol/conbus_event_protocol.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/protocol/conbus_protocol.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/protocol/protocol_factory.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/protocol/telegram_protocol.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/reverse_proxy_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/base_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/client_buffer_manager.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/cp20_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/device_service_factory.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/xp130_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/xp20_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/xp230_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/xp24_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/server/xp33_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/telegram_blink_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/telegram_checksum_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/telegram_datapoint_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/telegram_discover_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/telegram_link_number_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/telegram_output_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/telegram_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/telegram/telegram_version_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/term/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/term/protocol_monitor_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/term/state_monitor_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/protocol.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/protocol.tcss +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/state.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/state.tcss +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/widgets/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/widgets/help_menu.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/widgets/modules_list.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/widgets/protocol_log.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/term/widgets/status_footer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/utils/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/utils/checksum.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/utils/dependencies.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/utils/event_helper.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/utils/logging.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/utils/serialization.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/utils/state_machine.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/utils/time_utils.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/.coverage +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/conftest.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/.coverage +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/telegram_test_data.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_actiontable_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_api/.coverage +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_api/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_blink_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_checksum_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_conbus_blink_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_conbus_datapoint_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_conbus_raw_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_conbus_receive_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_discovery_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_event_telegram_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_homekit_config_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_link_number_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_module_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_output_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_reverse_proxy_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_system_reply_telegram_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_term_logging_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_version_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_xp20_action_table_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/integration/test_xp24_action_table_integration.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_api/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_click_tree.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_conbus_actiontable_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_conbus_blink_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_datapoint_type_choice.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_decorators.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_error_handlers.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_formatters.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_serial_number_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_system_function_choice.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_cli/test_term_commands.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_connection/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_connection/test_connection_init.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_connection/test_exceptions.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_encoding/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_encoding/test_latin1_edge_cases.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_conbus.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_conbus_client_send.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_conbus_discover.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_conbus_linknumber.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_event_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_log_entry.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_logger_config.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_module_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_reply_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_system_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_system_telegram_enhancements.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_version_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_write_config_type.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_xp20_action_table.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_xp24_action_table.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_models/test_xp24_action_telegram.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_actiontable_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_actiontable_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_actiontable_upload_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_base_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_blink_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_checksum_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_client_buffer_manager.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_conbus_blink_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_conbus_event_list_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_conbus_event_protocol.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_conbus_event_raw_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_conbus_raw_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_conbus_receive_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_conbus_reverse_proxy_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_device_service_factory.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_discovery_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_homekit_cache_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_homekit_config_validator.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_homekit_conson_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_homekit_services.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_log_file_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_module_type_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_protocol.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_protocol_monitor_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_server_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_state_monitor_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_telegram_input_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_telegram_output_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_telegram_protocol.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_telegram_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_version_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_xp20_action_table_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_xp24_action_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_xp24_action_table_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_xp24_action_table_service.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_xp33_action_table_serializer.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_services/test_xp_server_services.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_tui/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_tui/test_protocol_log.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_utils/__init__.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_utils/test_checksum.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_utils/test_event_helper.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_utils/test_logging.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.0}/tests/unit/test_utils/test_serialization.py +0 -0
- {conson_xp-1.32.0 → conson_xp-1.33.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.
|
|
3
|
+
Version: 1.33.0
|
|
4
4
|
Summary: XP Protocol Communication Tools
|
|
5
5
|
Author-Email: ldvchosal <ldvchosal@github.com>
|
|
6
6
|
License: MIT License
|
|
@@ -91,6 +91,9 @@ Comprehensive type safety and robust error handling
|
|
|
91
91
|
# Install with PIP (recommended)
|
|
92
92
|
pip install conson-xp
|
|
93
93
|
|
|
94
|
+
# Export your Conbus device configuration (recommended first step)
|
|
95
|
+
xp conbus export
|
|
96
|
+
|
|
94
97
|
# Parse a telegram
|
|
95
98
|
xp telegram parse "<E14L00I02MAK>"
|
|
96
99
|
|
|
@@ -133,7 +136,29 @@ xp telegram validate "<E14L00I02MAK>"
|
|
|
133
136
|
```
|
|
134
137
|
|
|
135
138
|
**Device Communication**
|
|
139
|
+
|
|
140
|
+
> **⚠️ Important**: Bridge modules (XP130, XP230) accept **only one TCP connection at a time**.
|
|
141
|
+
> Close any existing connections (including the official app) before using xp commands.
|
|
142
|
+
|
|
136
143
|
```bash
|
|
144
|
+
# Export device configuration (RECOMMENDED - run this first!)
|
|
145
|
+
# Discovers all devices and exports complete configuration to export.yml
|
|
146
|
+
xp conbus export
|
|
147
|
+
|
|
148
|
+
# What it does:
|
|
149
|
+
# - Automatically discovers all devices on the Conbus network
|
|
150
|
+
# - Queries 7 datapoints per device (type, version, link number, etc.)
|
|
151
|
+
# - Generates export.yml in conson.yml format
|
|
152
|
+
# - Shows real-time progress for each device
|
|
153
|
+
# - Handles timeouts gracefully with partial exports
|
|
154
|
+
#
|
|
155
|
+
# Example output:
|
|
156
|
+
# Querying device 1/12: 0020041013...
|
|
157
|
+
# ✓ Module type: X130 (1)
|
|
158
|
+
# ✓ Link number: 1
|
|
159
|
+
# ✓ Software version: V2.3
|
|
160
|
+
# Export complete: export.yml (12 devices)
|
|
161
|
+
|
|
137
162
|
# Discover XP servers on your network
|
|
138
163
|
xp conbus discover
|
|
139
164
|
|
|
@@ -38,6 +38,9 @@ Comprehensive type safety and robust error handling
|
|
|
38
38
|
# Install with PIP (recommended)
|
|
39
39
|
pip install conson-xp
|
|
40
40
|
|
|
41
|
+
# Export your Conbus device configuration (recommended first step)
|
|
42
|
+
xp conbus export
|
|
43
|
+
|
|
41
44
|
# Parse a telegram
|
|
42
45
|
xp telegram parse "<E14L00I02MAK>"
|
|
43
46
|
|
|
@@ -80,7 +83,29 @@ xp telegram validate "<E14L00I02MAK>"
|
|
|
80
83
|
```
|
|
81
84
|
|
|
82
85
|
**Device Communication**
|
|
86
|
+
|
|
87
|
+
> **⚠️ Important**: Bridge modules (XP130, XP230) accept **only one TCP connection at a time**.
|
|
88
|
+
> Close any existing connections (including the official app) before using xp commands.
|
|
89
|
+
|
|
83
90
|
```bash
|
|
91
|
+
# Export device configuration (RECOMMENDED - run this first!)
|
|
92
|
+
# Discovers all devices and exports complete configuration to export.yml
|
|
93
|
+
xp conbus export
|
|
94
|
+
|
|
95
|
+
# What it does:
|
|
96
|
+
# - Automatically discovers all devices on the Conbus network
|
|
97
|
+
# - Queries 7 datapoints per device (type, version, link number, etc.)
|
|
98
|
+
# - Generates export.yml in conson.yml format
|
|
99
|
+
# - Shows real-time progress for each device
|
|
100
|
+
# - Handles timeouts gracefully with partial exports
|
|
101
|
+
#
|
|
102
|
+
# Example output:
|
|
103
|
+
# Querying device 1/12: 0020041013...
|
|
104
|
+
# ✓ Module type: X130 (1)
|
|
105
|
+
# ✓ Link number: 1
|
|
106
|
+
# ✓ Software version: V2.3
|
|
107
|
+
# Export complete: export.yml (12 devices)
|
|
108
|
+
|
|
84
109
|
# Discover XP servers on your network
|
|
85
110
|
xp conbus discover
|
|
86
111
|
|
|
@@ -31,8 +31,7 @@ class ConbusExportService:
|
|
|
31
31
|
Attributes:
|
|
32
32
|
conbus_protocol: Protocol for Conbus communication.
|
|
33
33
|
discovered_devices: List of discovered device serial numbers.
|
|
34
|
-
device_configs:
|
|
35
|
-
device_datapoints_received: Set of datapoints received per device.
|
|
34
|
+
device_configs: Device configurations (ConsonModuleConfig instances).
|
|
36
35
|
export_result: Final export result.
|
|
37
36
|
export_status: Export status (OK, FAILED_TIMEOUT, etc.).
|
|
38
37
|
on_progress: Signal emitted on device discovery (serial, current, total).
|
|
@@ -69,8 +68,7 @@ class ConbusExportService:
|
|
|
69
68
|
|
|
70
69
|
# State management
|
|
71
70
|
self.discovered_devices: list[str] = []
|
|
72
|
-
self.device_configs: dict[str,
|
|
73
|
-
self.device_datapoints_received: dict[str, set[str]] = {}
|
|
71
|
+
self.device_configs: dict[str, ConsonModuleConfig] = {}
|
|
74
72
|
self.export_result = ConbusExportResponse(success=False)
|
|
75
73
|
self.export_status = "OK"
|
|
76
74
|
self._finalized = False # Track if export has been finalized
|
|
@@ -146,8 +144,16 @@ class ConbusExportService:
|
|
|
146
144
|
|
|
147
145
|
self.logger.debug(f"Device discovered: {serial_number}")
|
|
148
146
|
self.discovered_devices.append(serial_number)
|
|
149
|
-
|
|
150
|
-
|
|
147
|
+
|
|
148
|
+
# Create ConsonModuleConfig with placeholder values for required fields
|
|
149
|
+
module = ConsonModuleConfig(
|
|
150
|
+
name="UNKNOWN", # Will be updated when link_number arrives
|
|
151
|
+
serial_number=serial_number,
|
|
152
|
+
module_type="UNKNOWN", # Required field
|
|
153
|
+
module_type_code=0, # Required field
|
|
154
|
+
link_number=0, # Required field
|
|
155
|
+
)
|
|
156
|
+
self.device_configs[serial_number] = module
|
|
151
157
|
|
|
152
158
|
# Emit progress signal
|
|
153
159
|
current = len(self.discovered_devices)
|
|
@@ -188,7 +194,6 @@ class ConbusExportService:
|
|
|
188
194
|
datapoint = DataPointType.from_code(datapoint_code)
|
|
189
195
|
if datapoint:
|
|
190
196
|
self._store_datapoint_value(serial_number, datapoint, value)
|
|
191
|
-
self.device_datapoints_received[serial_number].add(datapoint_code)
|
|
192
197
|
self._check_device_complete(serial_number)
|
|
193
198
|
else:
|
|
194
199
|
self.logger.warning(f"Unknown datapoint code: {datapoint_code}")
|
|
@@ -203,31 +208,49 @@ class ConbusExportService:
|
|
|
203
208
|
datapoint: Datapoint type.
|
|
204
209
|
value: Datapoint value.
|
|
205
210
|
"""
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
211
|
+
module = self.device_configs[serial_number]
|
|
212
|
+
|
|
213
|
+
try:
|
|
214
|
+
if datapoint == DataPointType.MODULE_TYPE:
|
|
215
|
+
module.module_type = value
|
|
216
|
+
elif datapoint == DataPointType.MODULE_TYPE_CODE:
|
|
217
|
+
module.module_type_code = int(value)
|
|
218
|
+
elif datapoint == DataPointType.LINK_NUMBER:
|
|
219
|
+
link = int(value)
|
|
220
|
+
module.link_number = link
|
|
221
|
+
module.name = f"A{link}"
|
|
222
|
+
elif datapoint == DataPointType.MODULE_NUMBER:
|
|
223
|
+
module.module_number = int(value)
|
|
224
|
+
elif datapoint == DataPointType.SW_VERSION:
|
|
225
|
+
module.sw_version = value
|
|
226
|
+
elif datapoint == DataPointType.HW_VERSION:
|
|
227
|
+
module.hw_version = value
|
|
228
|
+
elif datapoint == DataPointType.AUTO_REPORT_STATUS:
|
|
229
|
+
module.auto_report_status = value
|
|
230
|
+
except (ValueError, TypeError) as e:
|
|
231
|
+
self.logger.warning(f"Invalid value '{value}' for {datapoint.name}: {e}")
|
|
232
|
+
|
|
233
|
+
def _is_device_complete(self, serial_number: str) -> bool:
|
|
234
|
+
"""Check if a device has all required datapoints.
|
|
235
|
+
|
|
236
|
+
Args:
|
|
237
|
+
serial_number: Serial number of device.
|
|
238
|
+
|
|
239
|
+
Returns:
|
|
240
|
+
True if device is complete, False otherwise.
|
|
241
|
+
"""
|
|
242
|
+
module = self.device_configs[serial_number]
|
|
243
|
+
return all(
|
|
244
|
+
[
|
|
245
|
+
module.module_type not in ("UNKNOWN", None, ""),
|
|
246
|
+
module.module_type_code is not None and module.module_type_code > 0,
|
|
247
|
+
module.link_number is not None and module.link_number > 0,
|
|
248
|
+
module.sw_version is not None,
|
|
249
|
+
module.hw_version is not None,
|
|
250
|
+
module.auto_report_status is not None,
|
|
251
|
+
module.module_number is not None,
|
|
252
|
+
]
|
|
253
|
+
)
|
|
231
254
|
|
|
232
255
|
def _check_device_complete(self, serial_number: str) -> None:
|
|
233
256
|
"""Check if device has all datapoints and emit completion signal.
|
|
@@ -235,29 +258,13 @@ class ConbusExportService:
|
|
|
235
258
|
Args:
|
|
236
259
|
serial_number: Serial number of device.
|
|
237
260
|
"""
|
|
238
|
-
|
|
239
|
-
expected = {dp.value for dp in self.DATAPOINT_SEQUENCE}
|
|
240
|
-
|
|
241
|
-
if received == expected:
|
|
261
|
+
if self._is_device_complete(serial_number):
|
|
242
262
|
self.logger.debug(f"Device {serial_number} complete (7/7 datapoints)")
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
# Build ConsonModuleConfig with name based on link_number
|
|
246
|
-
try:
|
|
247
|
-
# Add required 'name' field as A{link_number}
|
|
248
|
-
if "name" not in config:
|
|
249
|
-
link_number = config.get("link_number", 0)
|
|
250
|
-
config["name"] = f"A{link_number}"
|
|
251
|
-
module_config = ConsonModuleConfig(**config)
|
|
252
|
-
self.on_device_exported.emit(module_config)
|
|
253
|
-
except Exception as e:
|
|
254
|
-
self.logger.error(f"Failed to build config for {serial_number}: {e}")
|
|
263
|
+
module = self.device_configs[serial_number]
|
|
264
|
+
self.on_device_exported.emit(module)
|
|
255
265
|
|
|
256
266
|
# Check if all devices complete
|
|
257
|
-
if all(
|
|
258
|
-
len(self.device_datapoints_received[sn]) == len(self.DATAPOINT_SEQUENCE)
|
|
259
|
-
for sn in self.discovered_devices
|
|
260
|
-
):
|
|
267
|
+
if all(self._is_device_complete(sn) for sn in self.discovered_devices):
|
|
261
268
|
self.logger.debug("All devices complete")
|
|
262
269
|
self._finalize_export()
|
|
263
270
|
|
|
@@ -278,20 +285,8 @@ class ConbusExportService:
|
|
|
278
285
|
self.on_finish.emit(self.export_result)
|
|
279
286
|
return
|
|
280
287
|
|
|
281
|
-
#
|
|
282
|
-
modules =
|
|
283
|
-
for serial_number in self.discovered_devices:
|
|
284
|
-
config = self.device_configs[serial_number].copy()
|
|
285
|
-
try:
|
|
286
|
-
# Add required 'name' field as A{link_number} if not present
|
|
287
|
-
if "name" not in config:
|
|
288
|
-
link_number = config.get("link_number", 0)
|
|
289
|
-
config["name"] = f"A{link_number}"
|
|
290
|
-
# Only include fields that were received
|
|
291
|
-
module_config = ConsonModuleConfig(**config)
|
|
292
|
-
modules.append(module_config)
|
|
293
|
-
except Exception as e:
|
|
294
|
-
self.logger.warning(f"Partial device {serial_number}: {e}")
|
|
288
|
+
# Convert dict values to list (already ConsonModuleConfig instances!)
|
|
289
|
+
modules = list(self.device_configs.values())
|
|
295
290
|
|
|
296
291
|
# Sort modules by link_number
|
|
297
292
|
modules.sort(key=lambda m: m.link_number if m.link_number is not None else 999)
|
|
@@ -380,9 +375,7 @@ class ConbusExportService:
|
|
|
380
375
|
|
|
381
376
|
# Check if any devices incomplete
|
|
382
377
|
incomplete = [
|
|
383
|
-
sn
|
|
384
|
-
for sn in self.discovered_devices
|
|
385
|
-
if len(self.device_datapoints_received[sn]) < len(self.DATAPOINT_SEQUENCE)
|
|
378
|
+
sn for sn in self.discovered_devices if not self._is_device_complete(sn)
|
|
386
379
|
]
|
|
387
380
|
|
|
388
381
|
if incomplete:
|
|
@@ -439,7 +432,6 @@ class ConbusExportService:
|
|
|
439
432
|
# Reset state for reuse
|
|
440
433
|
self.discovered_devices = []
|
|
441
434
|
self.device_configs = {}
|
|
442
|
-
self.device_datapoints_received = {}
|
|
443
435
|
self.export_result = ConbusExportResponse(success=False)
|
|
444
436
|
self.export_status = "OK"
|
|
445
437
|
self._finalized = False
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_actiontable_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_autoreport_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_datapoint_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_discover_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_lightlevel_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_linknumber_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_modulenumber_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/conbus/conbus_msactiontable_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_blink_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_checksum_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_discover_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_linknumber_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_parse_commands.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/cli/commands/telegram/telegram_version_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/msactiontable_serializer.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/msactiontable_xp20_serializer.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/msactiontable_xp24_serializer.py
RENAMED
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/actiontable/msactiontable_xp33_serializer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conson_xp-1.32.0 → conson_xp-1.33.0}/src/xp/services/conbus/actiontable/actiontable_list_service.py
RENAMED
|
File without changes
|