conson-xp 1.46.0__py3-none-any.whl → 1.47.0__py3-none-any.whl
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.46.0.dist-info → conson_xp-1.47.0.dist-info}/METADATA +1 -1
- conson_xp-1.47.0.dist-info/RECORD +210 -0
- xp/__init__.py +3 -2
- xp/cli/commands/conbus/conbus.py +1 -1
- xp/cli/commands/conbus/conbus_actiontable_commands.py +33 -15
- xp/cli/commands/conbus/conbus_autoreport_commands.py +8 -4
- xp/cli/commands/conbus/conbus_blink_commands.py +20 -10
- xp/cli/commands/conbus/conbus_config_commands.py +2 -1
- xp/cli/commands/conbus/conbus_custom_commands.py +4 -2
- xp/cli/commands/conbus/conbus_datapoint_commands.py +10 -5
- xp/cli/commands/conbus/conbus_discover_commands.py +8 -4
- xp/cli/commands/conbus/conbus_event_commands.py +8 -4
- xp/cli/commands/conbus/conbus_export_commands.py +8 -4
- xp/cli/commands/conbus/conbus_lightlevel_commands.py +16 -8
- xp/cli/commands/conbus/conbus_linknumber_commands.py +8 -4
- xp/cli/commands/conbus/conbus_modulenumber_commands.py +8 -4
- xp/cli/commands/conbus/conbus_msactiontable_commands.py +78 -40
- xp/cli/commands/conbus/conbus_output_commands.py +16 -8
- xp/cli/commands/conbus/conbus_raw_commands.py +6 -3
- xp/cli/commands/conbus/conbus_receive_commands.py +6 -3
- xp/cli/commands/conbus/conbus_scan_commands.py +6 -3
- xp/cli/commands/file_commands.py +6 -3
- xp/cli/commands/homekit/homekit.py +4 -2
- xp/cli/commands/homekit/homekit_start_commands.py +2 -1
- xp/cli/commands/module_commands.py +8 -4
- xp/cli/commands/reverse_proxy_commands.py +8 -4
- xp/cli/commands/server/server_commands.py +6 -3
- xp/cli/commands/telegram/telegram_blink_commands.py +4 -2
- xp/cli/commands/telegram/telegram_checksum_commands.py +4 -2
- xp/cli/commands/telegram/telegram_discover_commands.py +2 -1
- xp/cli/commands/telegram/telegram_linknumber_commands.py +4 -2
- xp/cli/commands/telegram/telegram_parse_commands.py +4 -2
- xp/cli/commands/telegram/telegram_version_commands.py +2 -1
- xp/cli/commands/term/term_commands.py +4 -2
- xp/cli/main.py +2 -1
- xp/cli/utils/click_tree.py +6 -3
- xp/cli/utils/datapoint_type_choice.py +4 -2
- xp/cli/utils/decorators.py +42 -21
- xp/cli/utils/error_handlers.py +16 -8
- xp/cli/utils/formatters.py +22 -11
- xp/cli/utils/module_type_choice.py +4 -2
- xp/cli/utils/serial_number_type.py +4 -2
- xp/cli/utils/system_function_choice.py +4 -2
- xp/cli/utils/xp_module_type.py +4 -2
- xp/models/actiontable/actiontable.py +8 -8
- xp/models/actiontable/actiontable_type.py +20 -0
- xp/models/actiontable/msactiontable_xp20.py +8 -4
- xp/models/actiontable/msactiontable_xp24.py +12 -6
- xp/models/actiontable/msactiontable_xp33.py +20 -10
- xp/models/conbus/conbus.py +8 -4
- xp/models/conbus/conbus_autoreport.py +4 -2
- xp/models/conbus/conbus_blink.py +4 -2
- xp/models/conbus/conbus_client_config.py +6 -3
- xp/models/conbus/conbus_connection_status.py +4 -2
- xp/models/conbus/conbus_custom.py +4 -2
- xp/models/conbus/conbus_datapoint.py +4 -2
- xp/models/conbus/conbus_discover.py +6 -3
- xp/models/conbus/conbus_event_list.py +4 -2
- xp/models/conbus/conbus_event_raw.py +4 -2
- xp/models/conbus/conbus_export.py +2 -1
- xp/models/conbus/conbus_lightlevel.py +4 -2
- xp/models/conbus/conbus_linknumber.py +4 -2
- xp/models/conbus/conbus_logger_config.py +8 -4
- xp/models/conbus/conbus_output.py +4 -2
- xp/models/conbus/conbus_raw.py +4 -2
- xp/models/conbus/conbus_receive.py +4 -2
- xp/models/conbus/conbus_writeconfig.py +4 -2
- xp/models/config/conson_module_config.py +8 -4
- xp/models/homekit/homekit_accessory.py +4 -2
- xp/models/homekit/homekit_config.py +12 -6
- xp/models/log_entry.py +16 -8
- xp/models/protocol/conbus_protocol.py +36 -18
- xp/models/response.py +12 -8
- xp/models/telegram/action_type.py +4 -2
- xp/models/telegram/datapoint_type.py +4 -2
- xp/models/telegram/event_telegram.py +14 -7
- xp/models/telegram/event_type.py +2 -1
- xp/models/telegram/input_action_type.py +2 -1
- xp/models/telegram/input_type.py +2 -1
- xp/models/telegram/module_type.py +24 -12
- xp/models/telegram/module_type_code.py +2 -1
- xp/models/telegram/output_telegram.py +16 -10
- xp/models/telegram/reply_telegram.py +24 -13
- xp/models/telegram/system_function.py +6 -3
- xp/models/telegram/system_telegram.py +10 -6
- xp/models/telegram/telegram.py +2 -1
- xp/models/telegram/telegram_type.py +2 -1
- xp/models/telegram/timeparam_type.py +2 -1
- xp/models/term/connection_state.py +4 -2
- xp/models/term/module_state.py +2 -1
- xp/models/term/protocol_keys_config.py +6 -3
- xp/models/term/status_message.py +2 -1
- xp/models/term/telegram_display.py +2 -1
- xp/models/write_config_type.py +4 -2
- xp/services/actiontable/actiontable_serializer.py +34 -41
- xp/services/{conbus/actiontable/actiontable_download_state_machine.py → actiontable/download_state_machine.py} +13 -8
- xp/services/actiontable/msactiontable_xp20_serializer.py +77 -49
- xp/services/actiontable/msactiontable_xp24_serializer.py +78 -53
- xp/services/actiontable/msactiontable_xp33_serializer.py +39 -9
- xp/services/actiontable/serializer_protocol.py +76 -0
- xp/services/conbus/actiontable/actiontable_download_service.py +63 -29
- xp/services/conbus/actiontable/actiontable_list_service.py +17 -4
- xp/services/conbus/actiontable/actiontable_show_service.py +10 -6
- xp/services/conbus/actiontable/actiontable_upload_service.py +17 -9
- xp/services/conbus/conbus_blink_all_service.py +16 -8
- xp/services/conbus/conbus_blink_service.py +14 -7
- xp/services/conbus/conbus_custom_service.py +16 -8
- xp/services/conbus/conbus_datapoint_queryall_service.py +18 -9
- xp/services/conbus/conbus_datapoint_service.py +18 -9
- xp/services/conbus/conbus_discover_service.py +24 -13
- xp/services/conbus/conbus_event_list_service.py +11 -7
- xp/services/conbus/conbus_event_raw_service.py +18 -10
- xp/services/conbus/conbus_export_service.py +28 -14
- xp/services/conbus/conbus_output_service.py +18 -10
- xp/services/conbus/conbus_raw_service.py +16 -8
- xp/services/conbus/conbus_receive_service.py +18 -10
- xp/services/conbus/conbus_scan_service.py +18 -10
- xp/services/conbus/msactiontable/msactiontable_upload_service.py +17 -9
- xp/services/conbus/write_config_service.py +18 -9
- xp/services/homekit/homekit_cache_service.py +12 -6
- xp/services/homekit/homekit_conbus_service.py +12 -6
- xp/services/homekit/homekit_config_validator.py +34 -17
- xp/services/homekit/homekit_conson_validator.py +18 -9
- xp/services/homekit/homekit_dimminglight.py +14 -7
- xp/services/homekit/homekit_dimminglight_service.py +14 -7
- xp/services/homekit/homekit_hap_service.py +18 -9
- xp/services/homekit/homekit_lightbulb.py +10 -5
- xp/services/homekit/homekit_lightbulb_service.py +10 -5
- xp/services/homekit/homekit_module_service.py +8 -4
- xp/services/homekit/homekit_outlet.py +14 -7
- xp/services/homekit/homekit_outlet_service.py +12 -6
- xp/services/homekit/homekit_service.py +24 -12
- xp/services/log_file_service.py +16 -8
- xp/services/module_type_service.py +10 -5
- xp/services/protocol/conbus_event_protocol.py +46 -24
- xp/services/protocol/conbus_protocol.py +36 -19
- xp/services/protocol/protocol_factory.py +12 -6
- xp/services/protocol/telegram_protocol.py +12 -6
- xp/services/reverse_proxy_service.py +26 -14
- xp/services/server/base_server_service.py +42 -23
- xp/services/server/client_buffer_manager.py +12 -7
- xp/services/server/cp20_server_service.py +10 -7
- xp/services/server/device_service_factory.py +12 -8
- xp/services/server/server_service.py +18 -11
- xp/services/server/xp130_server_service.py +11 -8
- xp/services/server/xp20_server_service.py +16 -10
- xp/services/server/xp230_server_service.py +10 -7
- xp/services/server/xp24_server_service.py +22 -13
- xp/services/server/xp33_server_service.py +44 -25
- xp/services/telegram/telegram_blink_service.py +14 -8
- xp/services/telegram/telegram_checksum_service.py +12 -7
- xp/services/telegram/telegram_datapoint_service.py +14 -9
- xp/services/telegram/telegram_discover_service.py +28 -15
- xp/services/telegram/telegram_link_number_service.py +18 -10
- xp/services/telegram/telegram_output_service.py +24 -12
- xp/services/telegram/telegram_service.py +22 -11
- xp/services/telegram/telegram_version_service.py +14 -8
- xp/services/term/protocol_monitor_service.py +30 -16
- xp/services/term/state_monitor_service.py +39 -21
- xp/term/protocol.py +12 -6
- xp/term/state.py +12 -7
- xp/term/widgets/help_menu.py +6 -3
- xp/term/widgets/modules_list.py +20 -10
- xp/term/widgets/protocol_log.py +12 -6
- xp/term/widgets/status_footer.py +10 -5
- xp/utils/checksum.py +6 -3
- xp/utils/dependencies.py +25 -30
- xp/utils/event_helper.py +6 -4
- xp/utils/logging.py +6 -3
- xp/utils/serialization.py +30 -16
- xp/utils/state_machine.py +16 -9
- xp/utils/time_utils.py +6 -3
- conson_xp-1.46.0.dist-info/RECORD +0 -211
- xp/services/conbus/msactiontable/msactiontable_download_service.py +0 -275
- xp/services/conbus/msactiontable/msactiontable_list_service.py +0 -100
- xp/services/conbus/msactiontable/msactiontable_show_service.py +0 -89
- {conson_xp-1.46.0.dist-info → conson_xp-1.47.0.dist-info}/WHEEL +0 -0
- {conson_xp-1.46.0.dist-info → conson_xp-1.47.0.dist-info}/entry_points.txt +0 -0
- {conson_xp-1.46.0.dist-info → conson_xp-1.47.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"""Service for listing modules with action table configurations from conson.yml."""
|
|
2
|
-
|
|
3
|
-
import logging
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Any, Optional
|
|
6
|
-
|
|
7
|
-
from psygnal import Signal
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class MsActionTableListService:
|
|
11
|
-
"""Service for listing modules with action table configurations.
|
|
12
|
-
|
|
13
|
-
Reads conson.yml and returns a list of all modules that have action table
|
|
14
|
-
configurations defined.
|
|
15
|
-
|
|
16
|
-
Attributes:
|
|
17
|
-
on_finish: Signal emitted with dict[str, Any] when listing completes.
|
|
18
|
-
on_error: Signal emitted with error message string when an error occurs.
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
on_finish: Signal = Signal(object) # dict[str, Any]
|
|
22
|
-
on_error: Signal = Signal(str)
|
|
23
|
-
|
|
24
|
-
def __init__(self) -> None:
|
|
25
|
-
"""Initialize the action table list service."""
|
|
26
|
-
self.logger = logging.getLogger(__name__)
|
|
27
|
-
|
|
28
|
-
def __enter__(self) -> "MsActionTableListService":
|
|
29
|
-
"""Context manager entry.
|
|
30
|
-
|
|
31
|
-
Returns:
|
|
32
|
-
Self for context manager use.
|
|
33
|
-
"""
|
|
34
|
-
return self
|
|
35
|
-
|
|
36
|
-
def __exit__(self, _exc_type: Any, _exc_val: Any, _exc_tb: Any) -> None:
|
|
37
|
-
"""Context manager exit."""
|
|
38
|
-
# Disconnect service signals
|
|
39
|
-
self.on_finish.disconnect()
|
|
40
|
-
self.on_error.disconnect()
|
|
41
|
-
|
|
42
|
-
def start(
|
|
43
|
-
self,
|
|
44
|
-
config_path: Optional[Path] = None,
|
|
45
|
-
) -> None:
|
|
46
|
-
"""List all modules with action table configurations.
|
|
47
|
-
|
|
48
|
-
Args:
|
|
49
|
-
config_path: Optional path to conson.yml. Defaults to current directory.
|
|
50
|
-
"""
|
|
51
|
-
# Default to current directory if not specified
|
|
52
|
-
if config_path is None:
|
|
53
|
-
config_path = Path.cwd() / "conson.yml"
|
|
54
|
-
|
|
55
|
-
# Check if config file exists
|
|
56
|
-
if not config_path.exists():
|
|
57
|
-
self._handle_error("Error: conson.yml not found in current directory")
|
|
58
|
-
return
|
|
59
|
-
|
|
60
|
-
# Load configuration
|
|
61
|
-
try:
|
|
62
|
-
from xp.models.config.conson_module_config import ConsonModuleListConfig
|
|
63
|
-
|
|
64
|
-
config = ConsonModuleListConfig.from_yaml(str(config_path))
|
|
65
|
-
except Exception as e:
|
|
66
|
-
self.logger.error(f"Failed to load conson.yml: {e}")
|
|
67
|
-
self._handle_error(f"Error: Failed to load conson.yml: {e}")
|
|
68
|
-
return
|
|
69
|
-
|
|
70
|
-
# Filter modules that have ms_action_table configured
|
|
71
|
-
modules_with_msactiontable = [
|
|
72
|
-
{
|
|
73
|
-
"serial_number": module.serial_number,
|
|
74
|
-
"module_type": module.module_type,
|
|
75
|
-
"msaction_table": (
|
|
76
|
-
1
|
|
77
|
-
if (
|
|
78
|
-
module.xp20_msaction_table
|
|
79
|
-
or module.xp24_msaction_table
|
|
80
|
-
or module.xp33_msaction_table
|
|
81
|
-
)
|
|
82
|
-
else 0
|
|
83
|
-
),
|
|
84
|
-
}
|
|
85
|
-
for module in config.root
|
|
86
|
-
]
|
|
87
|
-
|
|
88
|
-
# Prepare result
|
|
89
|
-
result = {"modules": modules_with_msactiontable}
|
|
90
|
-
|
|
91
|
-
# Emit finish signal
|
|
92
|
-
self.on_finish.emit(result)
|
|
93
|
-
|
|
94
|
-
def _handle_error(self, message: str) -> None:
|
|
95
|
-
"""Handle error and emit error signal.
|
|
96
|
-
|
|
97
|
-
Args:
|
|
98
|
-
message: Error message.
|
|
99
|
-
"""
|
|
100
|
-
self.on_error.emit(message)
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"""Service for showing ms action table configuration for a specific module."""
|
|
2
|
-
|
|
3
|
-
import logging
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Any, Callable, Optional
|
|
6
|
-
|
|
7
|
-
from xp.models.config.conson_module_config import ConsonModuleConfig
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class MsActionTableShowService:
|
|
11
|
-
"""Service for showing action table configuration for a specific module.
|
|
12
|
-
|
|
13
|
-
Reads conson.yml and returns the action table configuration for the specified
|
|
14
|
-
module serial number.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
def __init__(self) -> None:
|
|
18
|
-
"""Initialize the action table show service."""
|
|
19
|
-
self.logger = logging.getLogger(__name__)
|
|
20
|
-
self.finish_callback: Optional[Callable[[ConsonModuleConfig], None]] = None
|
|
21
|
-
self.error_callback: Optional[Callable[[str], None]] = None
|
|
22
|
-
|
|
23
|
-
def __enter__(self) -> "MsActionTableShowService":
|
|
24
|
-
"""Context manager entry.
|
|
25
|
-
|
|
26
|
-
Returns:
|
|
27
|
-
Self for context manager use.
|
|
28
|
-
"""
|
|
29
|
-
return self
|
|
30
|
-
|
|
31
|
-
def __exit__(self, _exc_type: Any, _exc_val: Any, _exc_tb: Any) -> None:
|
|
32
|
-
"""Context manager exit."""
|
|
33
|
-
pass
|
|
34
|
-
|
|
35
|
-
def start(
|
|
36
|
-
self,
|
|
37
|
-
serial_number: str,
|
|
38
|
-
finish_callback: Callable[[ConsonModuleConfig], None],
|
|
39
|
-
error_callback: Callable[[str], None],
|
|
40
|
-
config_path: Optional[Path] = None,
|
|
41
|
-
) -> None:
|
|
42
|
-
"""Show ms action table configuration for a specific module.
|
|
43
|
-
|
|
44
|
-
Args:
|
|
45
|
-
serial_number: Module serial number.
|
|
46
|
-
finish_callback: Callback to invoke with the module configuration.
|
|
47
|
-
error_callback: Callback to invoke on error.
|
|
48
|
-
config_path: Optional path to conson.yml. Defaults to current directory.
|
|
49
|
-
"""
|
|
50
|
-
self.finish_callback = finish_callback
|
|
51
|
-
self.error_callback = error_callback
|
|
52
|
-
|
|
53
|
-
# Default to current directory if not specified
|
|
54
|
-
if config_path is None:
|
|
55
|
-
config_path = Path.cwd() / "conson.yml"
|
|
56
|
-
|
|
57
|
-
# Check if config file exists
|
|
58
|
-
if not config_path.exists():
|
|
59
|
-
self._handle_error("Error: conson.yml not found in current directory")
|
|
60
|
-
return
|
|
61
|
-
|
|
62
|
-
# Load configuration
|
|
63
|
-
try:
|
|
64
|
-
from xp.models.config.conson_module_config import ConsonModuleListConfig
|
|
65
|
-
|
|
66
|
-
config = ConsonModuleListConfig.from_yaml(str(config_path))
|
|
67
|
-
except Exception as e:
|
|
68
|
-
self.logger.error(f"Failed to load conson.yml: {e}")
|
|
69
|
-
self._handle_error(f"Error: Failed to load conson.yml: {e}")
|
|
70
|
-
return
|
|
71
|
-
|
|
72
|
-
# Find module
|
|
73
|
-
module = config.find_module(serial_number)
|
|
74
|
-
if not module:
|
|
75
|
-
self._handle_error(f"Error: Module {serial_number} not found in conson.yml")
|
|
76
|
-
return
|
|
77
|
-
|
|
78
|
-
# Invoke callback
|
|
79
|
-
if self.finish_callback is not None:
|
|
80
|
-
self.finish_callback(module)
|
|
81
|
-
|
|
82
|
-
def _handle_error(self, message: str) -> None:
|
|
83
|
-
"""Handle error and invoke error callback.
|
|
84
|
-
|
|
85
|
-
Args:
|
|
86
|
-
message: Error message.
|
|
87
|
-
"""
|
|
88
|
-
if self.error_callback is not None:
|
|
89
|
-
self.error_callback(message)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|