conson-xp 1.37.0__tar.gz → 1.38.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.37.0 → conson_xp-1.38.0}/PKG-INFO +6 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/README.md +5 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/pyproject.toml +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/__init__.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/__init__.py +2 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/__init__.py +2 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus.py +26 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_actiontable_commands.py +17 -8
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_event_commands.py +1 -7
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_export_commands.py +7 -6
- conson_xp-1.38.0/src/xp/cli/commands/conbus/conbus_msactiontable_commands.py +175 -0
- conson_xp-1.38.0/src/xp/models/actiontable/msactiontable.py +9 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/actiontable/msactiontable_xp20.py +14 -14
- conson_xp-1.38.0/src/xp/models/actiontable/msactiontable_xp24.py +275 -0
- conson_xp-1.38.0/src/xp/models/actiontable/msactiontable_xp33.py +93 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_export.py +6 -2
- conson_xp-1.38.0/src/xp/models/config/__init__.py +1 -0
- conson_xp-1.37.0/src/xp/models/homekit/homekit_conson_config.py → conson_xp-1.38.0/src/xp/models/config/conson_module_config.py +3 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/protocol/conbus_protocol.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/actiontable/msactiontable_xp20_serializer.py +12 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/actiontable/msactiontable_xp24_serializer.py +13 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/actiontable/msactiontable_xp33_serializer.py +12 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/actiontable/actiontable_download_service.py +8 -5
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/actiontable/actiontable_list_service.py +2 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/actiontable/actiontable_show_service.py +2 -2
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/actiontable/actiontable_upload_service.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_event_list_service.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_export_service.py +1 -1
- conson_xp-1.38.0/src/xp/services/conbus/msactiontable/__init__.py +1 -0
- conson_xp-1.37.0/src/xp/services/conbus/actiontable/msactiontable_service.py → conson_xp-1.38.0/src/xp/services/conbus/msactiontable/msactiontable_download_service.py +9 -5
- conson_xp-1.38.0/src/xp/services/conbus/msactiontable/msactiontable_list_service.py +92 -0
- conson_xp-1.38.0/src/xp/services/conbus/msactiontable/msactiontable_show_service.py +89 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_config_validator.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_conson_validator.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_dimminglight.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_lightbulb.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_module_service.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_outlet.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/server_service.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/term/state_monitor_service.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/utils/dependencies.py +36 -14
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_actiontable_integration.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_homekit_config_integration.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_xp20_action_table_integration.py +3 -3
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_xp24_action_table_integration.py +23 -13
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_conbus_actiontable_commands.py +2 -2
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_xp24_action_table.py +10 -10
- conson_xp-1.38.0/tests/unit/test_models/test_xp24_action_table_short_format.py +244 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_actiontable_service.py +4 -4
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_event_list_service.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_homekit_config_validator.py +4 -4
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_homekit_conson_service.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_homekit_services.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_state_monitor_service.py +1 -1
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_xp24_action_table_serializer.py +10 -4
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_xp24_action_table_service.py +26 -10
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_xp33_action_table_serializer.py +1 -1
- conson_xp-1.37.0/src/xp/cli/commands/conbus/conbus_msactiontable_commands.py +0 -92
- conson_xp-1.37.0/src/xp/models/actiontable/msactiontable_xp24.py +0 -58
- conson_xp-1.37.0/src/xp/models/actiontable/msactiontable_xp33.py +0 -65
- {conson_xp-1.37.0 → conson_xp-1.38.0}/LICENSE +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/__main__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_autoreport_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_blink_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_config_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_custom_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_datapoint_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_discover_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_lightlevel_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_linknumber_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_modulenumber_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_output_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_raw_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_receive_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_scan_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/file_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/homekit/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/homekit/homekit.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/homekit/homekit_start_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/module_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/reverse_proxy_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/server/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/server/server_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/telegram/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/telegram/telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/telegram/telegram_blink_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/telegram/telegram_checksum_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/telegram/telegram_discover_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/telegram/telegram_linknumber_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/telegram/telegram_parse_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/telegram/telegram_version_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/term/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/term/term.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/term/term_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/main.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/click_tree.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/datapoint_type_choice.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/decorators.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/error_handlers.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/formatters.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/module_type_choice.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/serial_number_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/system_function_choice.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/utils/xp_module_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/connection/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/connection/exceptions.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/actiontable/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/actiontable/actiontable.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_autoreport.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_blink.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_client_config.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_connection_status.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_custom.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_datapoint.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_discover.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_event_list.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_event_raw.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_lightlevel.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_linknumber.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_logger_config.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_output.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_raw.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_receive.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/conbus/conbus_writeconfig.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/homekit/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/homekit/homekit_accessory.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/homekit/homekit_config.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/log_entry.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/protocol/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/response.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/action_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/datapoint_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/event_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/event_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/input_action_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/input_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/module_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/module_type_code.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/output_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/reply_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/system_function.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/system_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/telegram_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/telegram/timeparam_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/term/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/term/connection_state.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/term/module_state.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/term/protocol_keys_config.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/term/status_message.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/term/telegram_display.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/models/write_config_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/actiontable/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/actiontable/actiontable_serializer.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/actiontable/msactiontable_serializer.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/actiontable/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_blink_all_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_blink_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_custom_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_datapoint_queryall_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_datapoint_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_discover_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_event_raw_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_output_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_raw_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_receive_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/conbus_scan_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/conbus/write_config_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_cache_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_conbus_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_dimminglight_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_hap_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_lightbulb_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_outlet_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/homekit/homekit_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/log_file_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/module_type_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/protocol/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/protocol/conbus_event_protocol.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/protocol/conbus_protocol.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/protocol/protocol_factory.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/protocol/telegram_protocol.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/reverse_proxy_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/base_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/client_buffer_manager.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/cp20_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/device_service_factory.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/xp130_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/xp20_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/xp230_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/xp24_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/server/xp33_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/telegram_blink_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/telegram_checksum_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/telegram_datapoint_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/telegram_discover_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/telegram_link_number_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/telegram_output_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/telegram_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/telegram/telegram_version_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/term/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/services/term/protocol_monitor_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/protocol.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/protocol.tcss +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/state.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/state.tcss +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/widgets/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/widgets/help_menu.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/widgets/modules_list.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/widgets/protocol_log.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/term/widgets/status_footer.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/utils/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/utils/checksum.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/utils/event_helper.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/utils/logging.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/utils/serialization.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/utils/state_machine.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/utils/time_utils.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/.coverage +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/conftest.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/.coverage +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/telegram_test_data.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_api/.coverage +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_api/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_blink_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_checksum_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_conbus_blink_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_conbus_datapoint_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_conbus_raw_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_conbus_receive_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_discovery_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_event_telegram_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_link_number_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_module_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_output_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_reverse_proxy_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_system_reply_telegram_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_term_logging_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/integration/test_version_integration.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_api/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_click_tree.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_conbus_blink_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_datapoint_type_choice.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_decorators.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_error_handlers.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_formatters.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_serial_number_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_system_function_choice.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_cli/test_term_commands.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_connection/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_connection/test_connection_init.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_connection/test_exceptions.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_encoding/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_encoding/test_latin1_edge_cases.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_conbus.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_conbus_client_send.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_conbus_discover.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_conbus_linknumber.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_event_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_log_entry.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_logger_config.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_module_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_reply_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_system_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_system_telegram_enhancements.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_version_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_write_config_type.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_xp20_action_table.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_models/test_xp24_action_telegram.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_actiontable_serializer.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_actiontable_upload_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_base_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_blink_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_checksum_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_client_buffer_manager.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_blink_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_event_protocol.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_event_raw_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_output_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_raw_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_receive_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_reverse_proxy_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_conbus_scan_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_device_service_factory.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_discovery_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_homekit_cache_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_log_file_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_module_type_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_protocol.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_protocol_monitor_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_server_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_telegram_input_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_telegram_output_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_telegram_protocol.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_telegram_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_version_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_xp20_action_table_serializer.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_xp24_action_service.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_services/test_xp_server_services.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_tui/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_tui/test_protocol_log.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_utils/__init__.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_utils/test_checksum.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_utils/test_event_helper.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_utils/test_logging.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.0}/tests/unit/test_utils/test_serialization.py +0 -0
- {conson_xp-1.37.0 → conson_xp-1.38.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.38.0
|
|
4
4
|
Summary: XP Protocol Communication Tools
|
|
5
5
|
Author-Email: ldvchosal <ldvchosal@github.com>
|
|
6
6
|
License: MIT License
|
|
@@ -350,7 +350,10 @@ xp conbus event
|
|
|
350
350
|
xp conbus event list
|
|
351
351
|
xp conbus event raw
|
|
352
352
|
|
|
353
|
+
|
|
353
354
|
xp conbus export
|
|
355
|
+
xp conbus export config
|
|
356
|
+
|
|
354
357
|
|
|
355
358
|
xp conbus lightlevel
|
|
356
359
|
xp conbus lightlevel get
|
|
@@ -371,6 +374,8 @@ xp conbus modulenumber set
|
|
|
371
374
|
|
|
372
375
|
xp conbus msactiontable
|
|
373
376
|
xp conbus msactiontable download
|
|
377
|
+
xp conbus msactiontable list
|
|
378
|
+
xp conbus msactiontable show
|
|
374
379
|
|
|
375
380
|
|
|
376
381
|
xp conbus output
|
|
@@ -297,7 +297,10 @@ xp conbus event
|
|
|
297
297
|
xp conbus event list
|
|
298
298
|
xp conbus event raw
|
|
299
299
|
|
|
300
|
+
|
|
300
301
|
xp conbus export
|
|
302
|
+
xp conbus export config
|
|
303
|
+
|
|
301
304
|
|
|
302
305
|
xp conbus lightlevel
|
|
303
306
|
xp conbus lightlevel get
|
|
@@ -318,6 +321,8 @@ xp conbus modulenumber set
|
|
|
318
321
|
|
|
319
322
|
xp conbus msactiontable
|
|
320
323
|
xp conbus msactiontable download
|
|
324
|
+
xp conbus msactiontable list
|
|
325
|
+
xp conbus msactiontable show
|
|
321
326
|
|
|
322
327
|
|
|
323
328
|
xp conbus output
|
|
@@ -8,6 +8,7 @@ from xp.cli.commands.conbus.conbus import (
|
|
|
8
8
|
conbus_autoreport,
|
|
9
9
|
conbus_blink,
|
|
10
10
|
conbus_datapoint,
|
|
11
|
+
conbus_export,
|
|
11
12
|
conbus_lightlevel,
|
|
12
13
|
conbus_linknumber,
|
|
13
14
|
conbus_modulenumber,
|
|
@@ -101,6 +102,7 @@ __all__ = [
|
|
|
101
102
|
"conbus_msactiontable",
|
|
102
103
|
"conbus_actiontable",
|
|
103
104
|
"conbus_event",
|
|
105
|
+
"conbus_export",
|
|
104
106
|
"file",
|
|
105
107
|
"module",
|
|
106
108
|
"reverse_proxy",
|
|
@@ -6,6 +6,7 @@ from xp.cli.commands.conbus.conbus import (
|
|
|
6
6
|
conbus_autoreport,
|
|
7
7
|
conbus_blink,
|
|
8
8
|
conbus_datapoint,
|
|
9
|
+
conbus_export,
|
|
9
10
|
conbus_lightlevel,
|
|
10
11
|
conbus_linknumber,
|
|
11
12
|
conbus_msactiontable,
|
|
@@ -22,4 +23,5 @@ __all__ = [
|
|
|
22
23
|
"conbus_lightlevel",
|
|
23
24
|
"conbus_msactiontable",
|
|
24
25
|
"conbus_actiontable",
|
|
26
|
+
"conbus_export",
|
|
25
27
|
]
|
|
@@ -117,6 +117,30 @@ def conbus_actiontable() -> None:
|
|
|
117
117
|
pass
|
|
118
118
|
|
|
119
119
|
|
|
120
|
+
@click.group(
|
|
121
|
+
"event",
|
|
122
|
+
cls=HelpColorsGroup,
|
|
123
|
+
help_headers_color="yellow",
|
|
124
|
+
help_options_color="green",
|
|
125
|
+
short_help="Export operations",
|
|
126
|
+
)
|
|
127
|
+
def conbus_event() -> None:
|
|
128
|
+
"""Event telegrams to Conbus modules."""
|
|
129
|
+
pass
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
@click.group(
|
|
133
|
+
"export",
|
|
134
|
+
cls=HelpColorsGroup,
|
|
135
|
+
help_headers_color="yellow",
|
|
136
|
+
help_options_color="green",
|
|
137
|
+
short_help="Export operations",
|
|
138
|
+
)
|
|
139
|
+
def conbus_export() -> None:
|
|
140
|
+
"""Download ActionTable from Conbus modules."""
|
|
141
|
+
pass
|
|
142
|
+
|
|
143
|
+
|
|
120
144
|
conbus.add_command(conbus_blink)
|
|
121
145
|
conbus.add_command(conbus_output)
|
|
122
146
|
conbus.add_command(conbus_datapoint)
|
|
@@ -126,3 +150,5 @@ conbus.add_command(conbus_autoreport)
|
|
|
126
150
|
conbus.add_command(conbus_lightlevel)
|
|
127
151
|
conbus.add_command(conbus_msactiontable)
|
|
128
152
|
conbus.add_command(conbus_actiontable)
|
|
153
|
+
conbus.add_command(conbus_event)
|
|
154
|
+
conbus.add_command(conbus_export)
|
{conson_xp-1.37.0 → conson_xp-1.38.0}/src/xp/cli/commands/conbus/conbus_actiontable_commands.py
RENAMED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import json
|
|
4
4
|
from contextlib import suppress
|
|
5
5
|
from pathlib import Path
|
|
6
|
+
from typing import Any, Dict
|
|
6
7
|
|
|
7
8
|
import click
|
|
8
9
|
from click import Context
|
|
@@ -12,12 +13,13 @@ from xp.cli.utils.decorators import (
|
|
|
12
13
|
connection_command,
|
|
13
14
|
)
|
|
14
15
|
from xp.cli.utils.serial_number_type import SERIAL
|
|
15
|
-
from xp.models.
|
|
16
|
+
from xp.models.actiontable.actiontable import ActionTable
|
|
17
|
+
from xp.models.config.conson_module_config import (
|
|
16
18
|
ConsonModuleConfig,
|
|
17
19
|
ConsonModuleListConfig,
|
|
18
20
|
)
|
|
19
21
|
from xp.services.conbus.actiontable.actiontable_download_service import (
|
|
20
|
-
|
|
22
|
+
ActionTableDownloadService,
|
|
21
23
|
)
|
|
22
24
|
from xp.services.conbus.actiontable.actiontable_list_service import (
|
|
23
25
|
ActionTableListService,
|
|
@@ -47,8 +49,8 @@ def conbus_download_actiontable(ctx: Context, serial_number: str) -> None:
|
|
|
47
49
|
ctx: Click context object.
|
|
48
50
|
serial_number: 10-digit module serial number.
|
|
49
51
|
"""
|
|
50
|
-
service:
|
|
51
|
-
ctx.obj.get("container").get_container().resolve(
|
|
52
|
+
service: ActionTableDownloadService = (
|
|
53
|
+
ctx.obj.get("container").get_container().resolve(ActionTableDownloadService)
|
|
52
54
|
)
|
|
53
55
|
|
|
54
56
|
def on_progress(progress: str) -> None:
|
|
@@ -59,13 +61,18 @@ def conbus_download_actiontable(ctx: Context, serial_number: str) -> None:
|
|
|
59
61
|
"""
|
|
60
62
|
click.echo(progress, nl=False)
|
|
61
63
|
|
|
62
|
-
def on_finish(
|
|
64
|
+
def on_finish(
|
|
65
|
+
_actiontable: ActionTable,
|
|
66
|
+
actiontable_dict: Dict[str, Any],
|
|
67
|
+
actiontable_short: list[str],
|
|
68
|
+
) -> None:
|
|
63
69
|
"""Handle successful completion of action table download.
|
|
64
70
|
|
|
65
71
|
Args:
|
|
66
|
-
|
|
72
|
+
_actiontable: a list of ActionTableEntries.
|
|
73
|
+
actiontable_dict: action table in a dictionary.
|
|
74
|
+
actiontable_short: short representation of action table.
|
|
67
75
|
"""
|
|
68
|
-
_actiontable, actiontable_dict, actiontable_short = result
|
|
69
76
|
output = {
|
|
70
77
|
"serial_number": serial_number,
|
|
71
78
|
"actiontable_short": actiontable_short,
|
|
@@ -214,7 +221,9 @@ def conbus_show_actiontable(ctx: Context, serial_number: str) -> None:
|
|
|
214
221
|
Args:
|
|
215
222
|
module: Dictionary containing module configuration.
|
|
216
223
|
"""
|
|
217
|
-
|
|
224
|
+
module_data = module.model_dump()
|
|
225
|
+
module_data.pop("msactiontable", None)
|
|
226
|
+
click.echo(json.dumps(module_data, indent=2, default=str))
|
|
218
227
|
|
|
219
228
|
def error_callback(error: str) -> None:
|
|
220
229
|
"""Handle errors during action table show.
|
|
@@ -4,7 +4,7 @@ import json
|
|
|
4
4
|
|
|
5
5
|
import click
|
|
6
6
|
|
|
7
|
-
from xp.cli.commands.conbus.conbus import conbus
|
|
7
|
+
from xp.cli.commands.conbus.conbus import conbus, conbus_event
|
|
8
8
|
from xp.cli.utils.decorators import connection_command
|
|
9
9
|
from xp.cli.utils.module_type_choice import MODULE_TYPE
|
|
10
10
|
from xp.models import ConbusEventRawResponse
|
|
@@ -12,12 +12,6 @@ from xp.services.conbus.conbus_event_list_service import ConbusEventListService
|
|
|
12
12
|
from xp.services.conbus.conbus_event_raw_service import ConbusEventRawService
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
@click.group(name="event")
|
|
16
|
-
def conbus_event() -> None:
|
|
17
|
-
"""Send event telegrams to Conbus modules."""
|
|
18
|
-
pass
|
|
19
|
-
|
|
20
|
-
|
|
21
15
|
@conbus_event.command("list")
|
|
22
16
|
@click.pass_context
|
|
23
17
|
def list_events(ctx: click.Context) -> None:
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
"""Conbus export CLI
|
|
1
|
+
"""Conbus export CLI commands."""
|
|
2
2
|
|
|
3
3
|
from contextlib import suppress
|
|
4
4
|
|
|
5
5
|
import click
|
|
6
6
|
|
|
7
|
-
from xp.cli.commands.conbus.conbus import
|
|
7
|
+
from xp.cli.commands.conbus.conbus import conbus_export
|
|
8
8
|
from xp.cli.utils.decorators import connection_command
|
|
9
9
|
from xp.models.conbus.conbus_export import ConbusExportResponse
|
|
10
|
-
from xp.models.
|
|
10
|
+
from xp.models.config.conson_module_config import ConsonModuleConfig
|
|
11
11
|
from xp.services.conbus.conbus_export_service import ConbusExportService
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
@
|
|
14
|
+
@conbus_export.command("config")
|
|
15
15
|
@click.pass_context
|
|
16
16
|
@connection_command()
|
|
17
17
|
def export_conbus_config(ctx: click.Context) -> None:
|
|
18
|
-
r"""Export Conbus device
|
|
18
|
+
r"""Export Conbus device metadata to YAML file.
|
|
19
19
|
|
|
20
20
|
Discovers all devices on the Conbus network and queries their configuration
|
|
21
21
|
datapoints to generate a complete export.yml file in conson.yml format.
|
|
@@ -25,8 +25,9 @@ def export_conbus_config(ctx: click.Context) -> None:
|
|
|
25
25
|
|
|
26
26
|
Examples:
|
|
27
27
|
\b
|
|
28
|
-
# Export to export.yml
|
|
28
|
+
# Export device metadata to export.yml
|
|
29
29
|
xp conbus export
|
|
30
|
+
xp conbus export config
|
|
30
31
|
"""
|
|
31
32
|
|
|
32
33
|
def on_progress(serial_number: str, current: int, total: int) -> None:
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"""XP24 Action Table CLI commands."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from typing import Union
|
|
5
|
+
|
|
6
|
+
import click
|
|
7
|
+
from click import Context
|
|
8
|
+
|
|
9
|
+
from xp.cli.commands.conbus.conbus import conbus_msactiontable
|
|
10
|
+
from xp.cli.utils.decorators import (
|
|
11
|
+
connection_command,
|
|
12
|
+
)
|
|
13
|
+
from xp.cli.utils.serial_number_type import SERIAL
|
|
14
|
+
from xp.cli.utils.xp_module_type import XP_MODULE_TYPE
|
|
15
|
+
from xp.models.actiontable.msactiontable_xp20 import Xp20MsActionTable
|
|
16
|
+
from xp.models.actiontable.msactiontable_xp24 import Xp24MsActionTable
|
|
17
|
+
from xp.models.actiontable.msactiontable_xp33 import Xp33MsActionTable
|
|
18
|
+
from xp.models.config.conson_module_config import ConsonModuleConfig
|
|
19
|
+
from xp.services.conbus.msactiontable.msactiontable_download_service import (
|
|
20
|
+
MsActionTableDownloadService,
|
|
21
|
+
)
|
|
22
|
+
from xp.services.conbus.msactiontable.msactiontable_list_service import (
|
|
23
|
+
MsActionTableListService,
|
|
24
|
+
)
|
|
25
|
+
from xp.services.conbus.msactiontable.msactiontable_show_service import (
|
|
26
|
+
MsActionTableShowService,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@conbus_msactiontable.command("download", short_help="Download MSActionTable")
|
|
31
|
+
@click.argument("serial_number", type=SERIAL)
|
|
32
|
+
@click.argument("xpmoduletype", type=XP_MODULE_TYPE)
|
|
33
|
+
@click.pass_context
|
|
34
|
+
@connection_command()
|
|
35
|
+
def conbus_download_msactiontable(
|
|
36
|
+
ctx: Context, serial_number: str, xpmoduletype: str
|
|
37
|
+
) -> None:
|
|
38
|
+
"""Download MS action table from XP24 module.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
ctx: Click context object.
|
|
42
|
+
serial_number: 10-digit module serial number.
|
|
43
|
+
xpmoduletype: XP module type.
|
|
44
|
+
"""
|
|
45
|
+
service: MsActionTableDownloadService = (
|
|
46
|
+
ctx.obj.get("container").get_container().resolve(MsActionTableDownloadService)
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
def on_progress(progress: str) -> None:
|
|
50
|
+
"""Handle progress updates during MS action table download.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
progress: Progress message string.
|
|
54
|
+
"""
|
|
55
|
+
click.echo(progress, nl=False)
|
|
56
|
+
|
|
57
|
+
def on_finish(
|
|
58
|
+
msaction_table: Union[
|
|
59
|
+
Xp20MsActionTable, Xp24MsActionTable, Xp33MsActionTable, None
|
|
60
|
+
],
|
|
61
|
+
msaction_table_short: str,
|
|
62
|
+
) -> None:
|
|
63
|
+
"""Handle successful completion of MS action table download.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
msaction_table: Downloaded MS action table object or None if failed.
|
|
67
|
+
msaction_table_short: Short version of MS action table object or None if failed.
|
|
68
|
+
|
|
69
|
+
Raises:
|
|
70
|
+
Abort: If action table download failed.
|
|
71
|
+
"""
|
|
72
|
+
service.stop_reactor()
|
|
73
|
+
if msaction_table is None:
|
|
74
|
+
click.echo("Error: Failed to download MS action table")
|
|
75
|
+
raise click.Abort()
|
|
76
|
+
|
|
77
|
+
output = {
|
|
78
|
+
"serial_number": serial_number,
|
|
79
|
+
"xpmoduletype": xpmoduletype,
|
|
80
|
+
"msaction_table_short": msaction_table_short,
|
|
81
|
+
"msaction_table": msaction_table.model_dump(),
|
|
82
|
+
}
|
|
83
|
+
click.echo(json.dumps(output, indent=2, default=str))
|
|
84
|
+
|
|
85
|
+
def on_error(error: str) -> None:
|
|
86
|
+
"""Handle errors during MS action table download.
|
|
87
|
+
|
|
88
|
+
Args:
|
|
89
|
+
error: Error message string.
|
|
90
|
+
"""
|
|
91
|
+
click.echo(f"Error: {error}")
|
|
92
|
+
|
|
93
|
+
with service:
|
|
94
|
+
service.on_progress.connect(on_progress)
|
|
95
|
+
service.on_error.connect(on_error)
|
|
96
|
+
service.on_finish.connect(on_finish)
|
|
97
|
+
service.start(
|
|
98
|
+
serial_number=serial_number,
|
|
99
|
+
xpmoduletype=xpmoduletype,
|
|
100
|
+
)
|
|
101
|
+
service.start_reactor()
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
@conbus_msactiontable.command("list", short_help="List modules with MsActionTable")
|
|
105
|
+
@click.pass_context
|
|
106
|
+
def conbus_list_msactiontable(ctx: Context) -> None:
|
|
107
|
+
"""List all modules with action table configurations from conson.yml.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
ctx: Click context object.
|
|
111
|
+
"""
|
|
112
|
+
service: MsActionTableListService = (
|
|
113
|
+
ctx.obj.get("container").get_container().resolve(MsActionTableListService)
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def on_finish(module_list: dict) -> None:
|
|
117
|
+
"""Handle successful completion of action table list.
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
module_list: Dictionary containing modules and total count.
|
|
121
|
+
"""
|
|
122
|
+
click.echo(json.dumps(module_list, indent=2, default=str))
|
|
123
|
+
|
|
124
|
+
def on_error(error: str) -> None:
|
|
125
|
+
"""Handle errors during action table list.
|
|
126
|
+
|
|
127
|
+
Args:
|
|
128
|
+
error: Error message string.
|
|
129
|
+
"""
|
|
130
|
+
click.echo(error)
|
|
131
|
+
|
|
132
|
+
with service:
|
|
133
|
+
service.on_finish.connect(on_finish)
|
|
134
|
+
service.on_error.connect(on_error)
|
|
135
|
+
service.start()
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
@conbus_msactiontable.command("show", short_help="Show MsActionTable configuration")
|
|
139
|
+
@click.argument("serial_number", type=SERIAL)
|
|
140
|
+
@click.pass_context
|
|
141
|
+
def conbus_show_msactiontable(ctx: Context, serial_number: str) -> None:
|
|
142
|
+
"""Show ms action table configuration for a specific module from conson.yml.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
ctx: Click context object.
|
|
146
|
+
serial_number: 10-digit module serial number.
|
|
147
|
+
"""
|
|
148
|
+
service: MsActionTableShowService = (
|
|
149
|
+
ctx.obj.get("container").get_container().resolve(MsActionTableShowService)
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
def on_finish(module: ConsonModuleConfig) -> None:
|
|
153
|
+
"""Handle successful completion of action table show.
|
|
154
|
+
|
|
155
|
+
Args:
|
|
156
|
+
module: Dictionary containing module configuration.
|
|
157
|
+
"""
|
|
158
|
+
module_data = module.model_dump()
|
|
159
|
+
module_data.pop("action_table", None)
|
|
160
|
+
click.echo(json.dumps(module_data, indent=2, default=str))
|
|
161
|
+
|
|
162
|
+
def error_callback(error: str) -> None:
|
|
163
|
+
"""Handle errors during action table show.
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
error: Error message string.
|
|
167
|
+
"""
|
|
168
|
+
click.echo(error)
|
|
169
|
+
|
|
170
|
+
with service:
|
|
171
|
+
service.start(
|
|
172
|
+
serial_number=serial_number,
|
|
173
|
+
finish_callback=on_finish,
|
|
174
|
+
error_callback=error_callback,
|
|
175
|
+
)
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"""XP20 Action Table models for input actions and settings."""
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
4
|
|
|
5
|
+
from xp.models.actiontable.msactiontable import MsActionTable
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
class InputChannel:
|
|
7
|
+
|
|
8
|
+
class InputChannel(BaseModel):
|
|
8
9
|
"""Configuration for a single input channel in XP20 action table.
|
|
9
10
|
|
|
10
11
|
Attributes:
|
|
@@ -19,13 +20,12 @@ class InputChannel:
|
|
|
19
20
|
invert: bool = False
|
|
20
21
|
short_long: bool = False
|
|
21
22
|
group_on_off: bool = False
|
|
22
|
-
and_functions: list[bool] =
|
|
23
|
+
and_functions: list[bool] = Field(default_factory=lambda: [False] * 8)
|
|
23
24
|
sa_function: bool = False
|
|
24
25
|
ta_function: bool = False
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
class Xp20MsActionTable:
|
|
28
|
+
class Xp20MsActionTable(MsActionTable):
|
|
29
29
|
"""XP20 Action Table for managing 8 input channels.
|
|
30
30
|
|
|
31
31
|
Contains configuration for 8 input channels (input1 through input8),
|
|
@@ -43,11 +43,11 @@ class Xp20MsActionTable:
|
|
|
43
43
|
input8: Configuration for input channel 8.
|
|
44
44
|
"""
|
|
45
45
|
|
|
46
|
-
input1: InputChannel =
|
|
47
|
-
input2: InputChannel =
|
|
48
|
-
input3: InputChannel =
|
|
49
|
-
input4: InputChannel =
|
|
50
|
-
input5: InputChannel =
|
|
51
|
-
input6: InputChannel =
|
|
52
|
-
input7: InputChannel =
|
|
53
|
-
input8: InputChannel =
|
|
46
|
+
input1: InputChannel = Field(default_factory=InputChannel)
|
|
47
|
+
input2: InputChannel = Field(default_factory=InputChannel)
|
|
48
|
+
input3: InputChannel = Field(default_factory=InputChannel)
|
|
49
|
+
input4: InputChannel = Field(default_factory=InputChannel)
|
|
50
|
+
input5: InputChannel = Field(default_factory=InputChannel)
|
|
51
|
+
input6: InputChannel = Field(default_factory=InputChannel)
|
|
52
|
+
input7: InputChannel = Field(default_factory=InputChannel)
|
|
53
|
+
input8: InputChannel = Field(default_factory=InputChannel)
|