conson-xp 1.37.0__py3-none-any.whl → 1.39.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.
Files changed (45) hide show
  1. {conson_xp-1.37.0.dist-info → conson_xp-1.39.0.dist-info}/METADATA +6 -1
  2. {conson_xp-1.37.0.dist-info → conson_xp-1.39.0.dist-info}/RECORD +43 -40
  3. xp/__init__.py +1 -1
  4. xp/cli/commands/__init__.py +2 -0
  5. xp/cli/commands/conbus/__init__.py +2 -0
  6. xp/cli/commands/conbus/conbus.py +26 -0
  7. xp/cli/commands/conbus/conbus_actiontable_commands.py +17 -8
  8. xp/cli/commands/conbus/conbus_event_commands.py +1 -7
  9. xp/cli/commands/conbus/conbus_export_commands.py +7 -6
  10. xp/cli/commands/conbus/conbus_msactiontable_commands.py +92 -9
  11. xp/models/actiontable/msactiontable.py +9 -0
  12. xp/models/actiontable/msactiontable_xp20.py +14 -14
  13. xp/models/actiontable/msactiontable_xp24.py +223 -11
  14. xp/models/actiontable/msactiontable_xp33.py +42 -14
  15. xp/models/conbus/conbus_export.py +6 -2
  16. xp/models/config/__init__.py +1 -0
  17. xp/models/{homekit/homekit_conson_config.py → config/conson_module_config.py} +3 -1
  18. xp/models/protocol/conbus_protocol.py +1 -1
  19. xp/services/actiontable/msactiontable_xp20_serializer.py +12 -0
  20. xp/services/actiontable/msactiontable_xp24_serializer.py +13 -1
  21. xp/services/actiontable/msactiontable_xp33_serializer.py +12 -0
  22. xp/services/conbus/actiontable/actiontable_download_service.py +8 -5
  23. xp/services/conbus/actiontable/actiontable_list_service.py +2 -1
  24. xp/services/conbus/actiontable/actiontable_show_service.py +2 -2
  25. xp/services/conbus/actiontable/actiontable_upload_service.py +1 -1
  26. xp/services/conbus/conbus_event_list_service.py +1 -1
  27. xp/services/conbus/conbus_export_service.py +1 -1
  28. xp/services/conbus/msactiontable/__init__.py +1 -0
  29. xp/services/conbus/{actiontable/msactiontable_service.py → msactiontable/msactiontable_download_service.py} +9 -5
  30. xp/services/conbus/msactiontable/msactiontable_list_service.py +92 -0
  31. xp/services/conbus/msactiontable/msactiontable_show_service.py +89 -0
  32. xp/services/homekit/homekit_config_validator.py +1 -1
  33. xp/services/homekit/homekit_conson_validator.py +1 -1
  34. xp/services/homekit/homekit_dimminglight.py +1 -1
  35. xp/services/homekit/homekit_lightbulb.py +1 -1
  36. xp/services/homekit/homekit_module_service.py +1 -1
  37. xp/services/homekit/homekit_outlet.py +1 -1
  38. xp/services/server/server_service.py +1 -1
  39. xp/services/term/state_monitor_service.py +1 -1
  40. xp/utils/dependencies.py +36 -14
  41. xp/connection/__init__.py +0 -13
  42. xp/connection/exceptions.py +0 -22
  43. {conson_xp-1.37.0.dist-info → conson_xp-1.39.0.dist-info}/WHEEL +0 -0
  44. {conson_xp-1.37.0.dist-info → conson_xp-1.39.0.dist-info}/entry_points.txt +0 -0
  45. {conson_xp-1.37.0.dist-info → conson_xp-1.39.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: conson-xp
3
- Version: 1.37.0
3
+ Version: 1.39.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
@@ -1,26 +1,26 @@
1
- conson_xp-1.37.0.dist-info/METADATA,sha256=s1RaPxb6bPVKGRVNN0cCZj8_m5iIzBZqb5F6HKGWDmw,11246
2
- conson_xp-1.37.0.dist-info/WHEEL,sha256=tsUv_t7BDeJeRHaSrczbGeuK-TtDpGsWi_JfpzD255I,90
3
- conson_xp-1.37.0.dist-info/entry_points.txt,sha256=1OcdIcDM1hz3ljCXgybaPUh1IOFEwkaTgLIW9u9zGeg,50
4
- conson_xp-1.37.0.dist-info/licenses/LICENSE,sha256=rxj6woMM-r3YCyGq_UHFtbh7kHTAJgrccH6O-33IDE4,1419
5
- xp/__init__.py,sha256=SkcUe9q0JFuR_IuWncbF3ypd6CM8KKa86qFUeu7ICiQ,181
1
+ conson_xp-1.39.0.dist-info/METADATA,sha256=ZnnTqw5hdtgrYNryR8of7kj7-8cD0Hy5GB4h_syNtok,11330
2
+ conson_xp-1.39.0.dist-info/WHEEL,sha256=tsUv_t7BDeJeRHaSrczbGeuK-TtDpGsWi_JfpzD255I,90
3
+ conson_xp-1.39.0.dist-info/entry_points.txt,sha256=1OcdIcDM1hz3ljCXgybaPUh1IOFEwkaTgLIW9u9zGeg,50
4
+ conson_xp-1.39.0.dist-info/licenses/LICENSE,sha256=rxj6woMM-r3YCyGq_UHFtbh7kHTAJgrccH6O-33IDE4,1419
5
+ xp/__init__.py,sha256=XLd0Ey5N2BokGf5bKHhDEB2BpUIExFL_W41vN72w-Ko,181
6
6
  xp/cli/__init__.py,sha256=QjnKB1KaI2aIyKlzrnvCwfbBuUj8HNgwNMvNJVQofbI,81
7
7
  xp/cli/__main__.py,sha256=l2iKwMdat5rTGd3JWs-uGksnYYDDffp_Npz05QdKEeU,117
8
- xp/cli/commands/__init__.py,sha256=noh8fdZAWq-ihJEboP8WugbIgq4LJ3jUWMRA7720xWE,4909
9
- xp/cli/commands/conbus/__init__.py,sha256=gE3K5OEoXkkZX8UOc2v3nreQQzwkOQi7n0VZ-Z2juXA,495
10
- xp/cli/commands/conbus/conbus.py,sha256=eqdY8ArapvD08Z4p7Xk7eh4z0dESHuMSw7PKtwTJRYU,3021
11
- xp/cli/commands/conbus/conbus_actiontable_commands.py,sha256=wIzO6IcdAqqFG_2_nrmabh8roRF8AuAhskhm02Yta_8,7138
8
+ xp/cli/commands/__init__.py,sha256=G7A1KFRSV0CEeDTqr_khu-K9_sc01CTI2KSfkFcaBRM,4949
9
+ xp/cli/commands/conbus/__init__.py,sha256=HYaX2__XxwD3Xaw4CzflvL8CwoUa4yR6wOyH8wwyofM,535
10
+ xp/cli/commands/conbus/conbus.py,sha256=1j9-Nwnf6nqD4ztBZnZEbJOTlkYo4D-Ks2J7BGNF3MU,3575
11
+ xp/cli/commands/conbus/conbus_actiontable_commands.py,sha256=fIEe45iMWZ3Dbr0STzO8qbtWHR-R8qpGa_sLNeBm_og,7471
12
12
  xp/cli/commands/conbus/conbus_autoreport_commands.py,sha256=TgXFVpoyFNiEatL6r78IghzyF0R2S3cgTrGZaiJPjwA,3934
13
13
  xp/cli/commands/conbus/conbus_blink_commands.py,sha256=HRn4Lr_BO7_WynsaUnO_hKezOi3MVhkPYEOnh0rMMlg,5324
14
14
  xp/cli/commands/conbus/conbus_config_commands.py,sha256=BugIbgNX6_s4MySGvI6tWZkwguciajHUX2Xz8XBux7k,716
15
15
  xp/cli/commands/conbus/conbus_custom_commands.py,sha256=nQttCXzmuUVLy5u7mZaRqYXzy8MIHyHRJQBdkDLunYc,1735
16
16
  xp/cli/commands/conbus/conbus_datapoint_commands.py,sha256=UZ_wTO0cdxjed0fGGZYylfJN9gaXwqLg3cn80JqqWt0,3751
17
17
  xp/cli/commands/conbus/conbus_discover_commands.py,sha256=MnTCzvERO5xerfs0fuuIBoo1O9h_0IfoJ6snLGVl0lA,1899
18
- xp/cli/commands/conbus/conbus_event_commands.py,sha256=7URf-2u8Kzcy0chLYShbZfCbKawf--i-8U88AjhxleQ,3177
19
- xp/cli/commands/conbus/conbus_export_commands.py,sha256=s3jgg3Wqi1P6rYujpE_9aPA47S4UBQfrZPTr9vzH-UA,2951
18
+ xp/cli/commands/conbus/conbus_event_commands.py,sha256=Ps1hM0buhVQbYPgaap8HOS50aSHAIK2rk1SqKzny8rs,3075
19
+ xp/cli/commands/conbus/conbus_export_commands.py,sha256=KSeXZbD6tO0_BMgqmg20iVaEWOdTIHZr3heVy0GM6lQ,2986
20
20
  xp/cli/commands/conbus/conbus_lightlevel_commands.py,sha256=AQhVneN5_rH6wd7D4KW80XIMh9MGjJv85gN57S206j4,7036
21
21
  xp/cli/commands/conbus/conbus_linknumber_commands.py,sha256=hVr1g6nDTa4MezW8joHPjPuZcMp2ttd9PfZaT9sQED4,3528
22
22
  xp/cli/commands/conbus/conbus_modulenumber_commands.py,sha256=FjFWnLU_aUoAXQ2tKKLC-ichNiIb90_9OWpSdIUyHvc,3600
23
- xp/cli/commands/conbus/conbus_msactiontable_commands.py,sha256=rNLWuC19Nj8CxGJNQRCnwl-mEAipz1iufBcIbCytkGM,2847
23
+ xp/cli/commands/conbus/conbus_msactiontable_commands.py,sha256=Xs6TxwyzqMuUtvH1aQkQQToTR57Zzbs4IyeH28NKrtc,5616
24
24
  xp/cli/commands/conbus/conbus_output_commands.py,sha256=rJx8pfsl_ZeCNXhEelsY7mfYnaj_DHdz4TC-e8d5QGs,5286
25
25
  xp/cli/commands/conbus/conbus_raw_commands.py,sha256=892-S6wxp5xNPz6K86Le8KtQXNO4a0PQv20Hzx3vhiA,1996
26
26
  xp/cli/commands/conbus/conbus_receive_commands.py,sha256=_PsC-3xidmJBuOWUS60iDzhSHYYn5ZFmORXap-ljVGM,1902
@@ -55,14 +55,13 @@ xp/cli/utils/module_type_choice.py,sha256=TPIEDsO0fNDu2HOQQ16WCJ-a7o2f58j3IKd8B0
55
55
  xp/cli/utils/serial_number_type.py,sha256=GUs3jtVI6EVulvt6fCDN6H6vxhiJwdMmdIvLjDlGGZ4,1466
56
56
  xp/cli/utils/system_function_choice.py,sha256=0J02EMgAQcsrE-9rEkv6YHelBoBkZ73T8VLBSm6YO5k,1623
57
57
  xp/cli/utils/xp_module_type.py,sha256=qSFJBRceqPi_cUFPxAWtLUNq37-KwUEjo9ekYOj7kLQ,1471
58
- xp/connection/__init__.py,sha256=ClJsVWALYZgAGYZK_Jznd3YKLrHDu17kBfwugjuPfu0,209
59
- xp/connection/exceptions.py,sha256=7CcRUzkyay5zA6Z9-5dIDRzua806v5N7pCcJazP_1dE,365
60
58
  xp/models/__init__.py,sha256=lROqr559DGd8WpJJUtfPT95VERCwMZHpBDEc96QSxQ0,1312
61
59
  xp/models/actiontable/__init__.py,sha256=6kVq1rTOlpc24sZxGGVWkY48tqR42YWHLQHqakWqlPc,43
62
60
  xp/models/actiontable/actiontable.py,sha256=bIeluZhMsvukkSwy2neaewavU8YR6Pso3PIvJ8ENlGg,1251
63
- xp/models/actiontable/msactiontable_xp20.py,sha256=C_lYYIQagEFap0S5S40_S7AhLO2UZG2EmXjjeem7uw8,1967
64
- xp/models/actiontable/msactiontable_xp24.py,sha256=ne1dC6CA-5GoTnsLCr6Faue_PmSwC7vtUnX4NSRrQ_Y,2089
65
- xp/models/actiontable/msactiontable_xp33.py,sha256=2IEA0CBPvnatOueBPZiV0DPc7YFzTQIqIMqed8TKXeM,1932
61
+ xp/models/actiontable/msactiontable.py,sha256=42RdQB3rUzAP_UeH5PS6iADOnkev47rDR77_yttSkBg,192
62
+ xp/models/actiontable/msactiontable_xp20.py,sha256=iMNKrDpLcaynaG1pflfyoQjey-KUsoSjqy4J4XF-YGk,2031
63
+ xp/models/actiontable/msactiontable_xp24.py,sha256=yYaWS7VRr2EyLXozfoJWLmgQmMU9dGo81V4VU4q6cUo,9464
64
+ xp/models/actiontable/msactiontable_xp33.py,sha256=K1noQe5TNoTFLWE58r0-ZOB8lYM3oXFqoNL7z7Uob5A,2945
66
65
  xp/models/conbus/__init__.py,sha256=VIusMWQdBtlwDgj7oSj06wQkklihTp4oWFShvP_JUgA,35
67
66
  xp/models/conbus/conbus.py,sha256=mZQzKPfrdttT-qUnYUSyrEYyc_eHs8z301E5ejeiyvk,2689
68
67
  xp/models/conbus/conbus_autoreport.py,sha256=lKotDfxRBb7h2Z1d4qI3KhhLJhFDwKqLbSdG5Makm8Y,2289
@@ -74,7 +73,7 @@ xp/models/conbus/conbus_datapoint.py,sha256=4ncR-vB2lRzRBAA30rYn8eguyTxsZoOKrrXt
74
73
  xp/models/conbus/conbus_discover.py,sha256=nxxUEKfEsH1kd0BF8ovMs7zLujRhrq1oL9ZJtysPr5o,2238
75
74
  xp/models/conbus/conbus_event_list.py,sha256=M8aHRHVB5VDIjqMzjO86xlERt7AMdfjIjt1b70RF52Y,958
76
75
  xp/models/conbus/conbus_event_raw.py,sha256=i5gc7z-0yeunWOZ4rw3AiBt4MANezmhBQKjOOQk3oDc,1567
77
- xp/models/conbus/conbus_export.py,sha256=m2zrkpVifC9EZZBlJGFaaVyGq8w1a1nbapQM1n9mJo8,1078
76
+ xp/models/conbus/conbus_export.py,sha256=esxd7phNCRCunn5YqOL4g9xk3QyZiOJYHide_oLKi34,1278
78
77
  xp/models/conbus/conbus_lightlevel.py,sha256=GQGhzrCBEJROosNHInXIzBy6MD2AskEIMoFEGgZ60-0,1695
79
78
  xp/models/conbus/conbus_linknumber.py,sha256=uFzKzfB06oIzZEKCb5X2JEI80JjMPFuYglsT1W1k8j4,1815
80
79
  xp/models/conbus/conbus_logger_config.py,sha256=cFWjWn8tc_hPPI2kQAib_Akddar8O-3zkoj6wLBsdUo,3328
@@ -82,13 +81,14 @@ xp/models/conbus/conbus_output.py,sha256=q7QKsD_CWT7YOk-V3otKWD1VM7qThrSLIUOunnt
82
81
  xp/models/conbus/conbus_raw.py,sha256=xqvYao6IE1SXum7JBgZpSuWXm9x_QZquS9N_3_r0Hjs,1460
83
82
  xp/models/conbus/conbus_receive.py,sha256=-1u1qK-texfKCNZV-GYf_9KyLtJdIrx7HuZsKzu26Ow,1322
84
83
  xp/models/conbus/conbus_writeconfig.py,sha256=z8fdJeFLyGJW7UMHcHxGrHIMS6gG1D3aXeYUkBuwnEg,2136
84
+ xp/models/config/__init__.py,sha256=gEZnX9eE3DjFtLtF32riEjJQLypqQRbyPauBI4Cowbs,36
85
+ xp/models/config/conson_module_config.py,sha256=KL9AYVUiet50SaVajIjicW6FNQ38Qm1vk1jZbZnMb00,2708
85
86
  xp/models/homekit/__init__.py,sha256=5HDSOClCu0ArK3IICn3_LDMMLBAzLjBxUUSF73bxSSk,34
86
87
  xp/models/homekit/homekit_accessory.py,sha256=NsHFhskuxIdJpF9-MvXHtjkLYvNHmSGFOy0GmQv3PY4,1038
87
88
  xp/models/homekit/homekit_config.py,sha256=Y_k92PsKHFBnn3r1_RSZHJP5uLH27Gw8G7Bj5N8jvUE,2904
88
- xp/models/homekit/homekit_conson_config.py,sha256=NML644Ij7abstMbud-TUPcxraGY4vQwKrkJOwftv2pM,2603
89
89
  xp/models/log_entry.py,sha256=kPcYuAirCXugfL3YkOK9cQVlkNWxG_8a4AVuhsykHL0,4355
90
90
  xp/models/protocol/__init__.py,sha256=TJ_CJKchA-xgQiv5vCo_ndBBZjrcaTmjT74bR0T-5Cw,38
91
- xp/models/protocol/conbus_protocol.py,sha256=3uWYE_t_-mp_2wPEgbDHbZoeQSEv48IdRcQpQyemEY0,9141
91
+ xp/models/protocol/conbus_protocol.py,sha256=m8DnewIw4JSLG21hdqpcAjZVHfjSCYIUQ2imwfveggU,9139
92
92
  xp/models/response.py,sha256=h6_B1k_v6IrWhgNWBohEGQGRCp5TcVhgQ3RJS8gTkhY,1230
93
93
  xp/models/telegram/__init__.py,sha256=-_exhjlRLbBNuPxHC4tLA2SAgf8M0yHJMeyEoQIk9PI,53
94
94
  xp/models/telegram/action_type.py,sha256=vkw_chTgmsadksGXvZ9D_qYGpjOwCw-OgbEi8Bml17g,783
@@ -117,42 +117,45 @@ xp/services/__init__.py,sha256=W9YZyrkh7vm--ZHhAXNQiOYQs5yhhmUHXP5I0Lf1XBg,782
117
117
  xp/services/actiontable/__init__.py,sha256=z6js4EuJ6xKHaseTEhuEvKo1tr9K1XyQiruReJtBiPY,26
118
118
  xp/services/actiontable/actiontable_serializer.py,sha256=U7bhd8lYMUJAsFydCt_Y5uOJoUODhSjRlUQPD6jsqMo,8517
119
119
  xp/services/actiontable/msactiontable_serializer.py,sha256=RRL6TZ1gpSQw81kAiw2BV3jTqm4fCJC0pWIcO26Cmos,174
120
- xp/services/actiontable/msactiontable_xp20_serializer.py,sha256=3Lz6t3uRYhoeMRhjDAO1XuWPJzH-ML13t05UQLFUW-s,6057
121
- xp/services/actiontable/msactiontable_xp24_serializer.py,sha256=zdKzcrKqD41POqj_1c4B4why_Jp9mNXncajsnXXBtPw,4215
122
- xp/services/actiontable/msactiontable_xp33_serializer.py,sha256=xoZBA38pBSUPA9nn7HgaH1ZM5sR2heQbJ6JVlPVbzUY,8400
120
+ xp/services/actiontable/msactiontable_xp20_serializer.py,sha256=UP274qQfjFbAMojpeeqz72vJvNgAo_J5nyr4OFExsqE,6404
121
+ xp/services/actiontable/msactiontable_xp24_serializer.py,sha256=kgEKT-GSlye4ExjeXIAB1O-qi0cAm6POxoC2bKlwBi0,4601
122
+ xp/services/actiontable/msactiontable_xp33_serializer.py,sha256=XwBG-flfrSYxm0uy93gutZRj0LKGvOcJGnJpIFQQOuI,8747
123
123
  xp/services/conbus/__init__.py,sha256=Hi35sMKu9o6LpYoi2tQDaQoMb8M5sOt_-LUTxxaCU_0,28
124
124
  xp/services/conbus/actiontable/__init__.py,sha256=oD6vRk_Ye-eZ9s_hldAgtRJFu4mfAnODqpkJUGHHszk,40
125
- xp/services/conbus/actiontable/actiontable_download_service.py,sha256=1sk_STBdMfq8YlZnr_7zC_de2Rqkb3SHiKwioTJK2mw,7484
126
- xp/services/conbus/actiontable/actiontable_list_service.py,sha256=PH8B-5j1ON_Q50INylYhrVDE1gG7vNE1nMyy-2DJfqA,2808
127
- xp/services/conbus/actiontable/actiontable_show_service.py,sha256=jqNZ4UvZPHH66OYuryjnU1Km-a83OCwYvK0vc56oL8I,3017
128
- xp/services/conbus/actiontable/actiontable_upload_service.py,sha256=kXV99ReAYcMZt0icPU04lX9ZWWkiiYcxzsty0pnfzwE,9707
129
- xp/services/conbus/actiontable/msactiontable_service.py,sha256=-kZebnqOCunneSny-lI0FOyrPelyLtboQWXJBe2czGE,9743
125
+ xp/services/conbus/actiontable/actiontable_download_service.py,sha256=C6cjNRRsl7_jjn94I6ycCDvoqIpivNv0cMVkR-CQBXk,7608
126
+ xp/services/conbus/actiontable/actiontable_list_service.py,sha256=BYNpxdhdVvn5Z3XXvUYyiGGZ3fOoKR1F0boYDfAQ80c,2894
127
+ xp/services/conbus/actiontable/actiontable_show_service.py,sha256=Z11bVYstnIhahFKTL8WqgTmK8rMK6kvismdy7679ojY,3013
128
+ xp/services/conbus/actiontable/actiontable_upload_service.py,sha256=HTWJqJTIDFsp5v0SBx1Wt5gUeso6w03N6bKbtsbHtJY,9705
130
129
  xp/services/conbus/conbus_blink_all_service.py,sha256=6XsqtgHUgPDPWG0Mx2W2gnG_1eiaHrt2DiPXGqGHS50,8472
131
130
  xp/services/conbus/conbus_blink_service.py,sha256=wFCUbHYInbzfE4Ks_qjkav0FhtHXsxM9IY6tD5r0oAk,7898
132
131
  xp/services/conbus/conbus_custom_service.py,sha256=uPsBkoVGr8I5JwpHiCM8Xf2DUYy6e34cQHmGSheY98Y,7766
133
132
  xp/services/conbus/conbus_datapoint_queryall_service.py,sha256=K8a_aO5rXuOx9ZHTrN1rpQ6KIOAkhYx-HsqDf0HIo-E,8399
134
133
  xp/services/conbus/conbus_datapoint_service.py,sha256=MFyYv2TkP355S5phKLtfj05b5AtfwgQyCvklkR7AKT8,8026
135
134
  xp/services/conbus/conbus_discover_service.py,sha256=ZwjYBlgP6FgpHBJk7pcKr4JHfH7WUHDxe4he4F_HblQ,12740
136
- xp/services/conbus/conbus_event_list_service.py,sha256=0xyXXNU44epN5bFkU6oiZMyhxfUguul3evqClvPJDcA,3618
135
+ xp/services/conbus/conbus_event_list_service.py,sha256=og3medmu69CnEgzhgqihIV1yLNOQ_YTHr4zUtidGmIE,3616
137
136
  xp/services/conbus/conbus_event_raw_service.py,sha256=FZFu-LNLInrTKTpiGLyootozvyIF5Si5FMrxNk2ALD0,7000
138
- xp/services/conbus/conbus_export_service.py,sha256=3Zb58qqRDNR9gA4rQ_fyT--ZgRIK_lkqnXJFbQnrZOA,17300
137
+ xp/services/conbus/conbus_export_service.py,sha256=aQz2cRMhTiUQgEaxeFRuOW8LEsfSqJzaivsHgGKEJtU,17298
139
138
  xp/services/conbus/conbus_output_service.py,sha256=XHn_htcTt2TBSpuXr2DNsT8oOC2soctNFIojhYfd_v0,9297
140
139
  xp/services/conbus/conbus_raw_service.py,sha256=FmUaF9o2nFZVP8LpabKIwkg0P8coLCkeJC4yYgsA6U0,5780
141
140
  xp/services/conbus/conbus_receive_service.py,sha256=7wOaEDrdoXwZE9MeUM89eB3hobYpvtbYk_YLv3MVAtc,5352
142
141
  xp/services/conbus/conbus_scan_service.py,sha256=QN7_x8BtNbHnqG7akcooAAcjz9Ex2y3VNDdhShKHUX8,6824
142
+ xp/services/conbus/msactiontable/__init__.py,sha256=rDYzumPSfcTjDADHxjE7bXQoeWtZTDGaYzFTYdVl_9g,42
143
+ xp/services/conbus/msactiontable/msactiontable_download_service.py,sha256=V3qa_DIPC2G2ihCNxPo0f17AY5v7mHQsZd9y3dOyekg,10077
144
+ xp/services/conbus/msactiontable/msactiontable_list_service.py,sha256=9mAybvJLoZOzJSEV0QRh5iYY_j0ArbyZvFZa8y9rpWE,2886
145
+ xp/services/conbus/msactiontable/msactiontable_show_service.py,sha256=pyoB5xN1bDh0E8kity4k0UnYpc7-YWhs8oIMvAeC9Xk,3023
143
146
  xp/services/conbus/write_config_service.py,sha256=PQsN7rtTKHpwtAG8moLksUfRVqqE_0sxdE37meR1ZQ0,8935
144
147
  xp/services/homekit/__init__.py,sha256=xAMKmln_AmEFdOOJGKWYi96seRlKDQpKx3-hm7XbdIo,36
145
148
  xp/services/homekit/homekit_cache_service.py,sha256=NdijyH5_iyhsTHBb-OyT8Y2xnNDj8F5MP8neoVQ26hY,11010
146
149
  xp/services/homekit/homekit_conbus_service.py,sha256=porvo4nZ4PE0R6bdaKwClDW2kevkW_8DOzw4NOO6DZQ,3348
147
- xp/services/homekit/homekit_config_validator.py,sha256=1jCUrfMUqthEoNc7wAk4io1PpbptqgsdnCOCzz62Io8,10732
148
- xp/services/homekit/homekit_conson_validator.py,sha256=V_Otxu0q3LK-3GP3-Zw0nZyV_rb9RjHp4tWcvzYJeGs,3787
149
- xp/services/homekit/homekit_dimminglight.py,sha256=O5SwnhkrJQHm7BopI9nL9QcfRSokcxn-H4csZMg0B5c,5770
150
+ xp/services/homekit/homekit_config_validator.py,sha256=1m0FJddMyb5Yy73s6iMRZ7YTzLBu0wZwkLTACadmiL4,10730
151
+ xp/services/homekit/homekit_conson_validator.py,sha256=zRyCb0CIye8DO14bztEhx1kYazYZaPEMCBBLn9FZj2Q,3785
152
+ xp/services/homekit/homekit_dimminglight.py,sha256=3VP2vs_73yvPkr6trwKlvGMC_UHPj-iqgOhiqH2HQCE,5768
150
153
  xp/services/homekit/homekit_dimminglight_service.py,sha256=lxFE2k8a8V9YQwpWPAAmbUvYD3zDlVa337xzDQl6tjM,5231
151
154
  xp/services/homekit/homekit_hap_service.py,sha256=YrFe10XPBf6EC2SRnWmcCbjdVkrHjxSNPwYDPVvQiDQ,12527
152
- xp/services/homekit/homekit_lightbulb.py,sha256=7HGMIPwEcmvSs89ENcDhdb8g0R9WMq7115gYuwcskAs,3661
155
+ xp/services/homekit/homekit_lightbulb.py,sha256=3-pbCEcw44Vk_HwHI0LCJmTO4A6cNndoA1-Fv1glWvU,3659
153
156
  xp/services/homekit/homekit_lightbulb_service.py,sha256=G_ummBFiBurhQ2ZVwJ9l_aZ2MQgl5Uq-oi3KjIrdb-Y,2752
154
- xp/services/homekit/homekit_module_service.py,sha256=7lanEinxAfTdn28ZHV-O5YyTqq_3v8FIyP2FI0jsEQM,1526
155
- xp/services/homekit/homekit_outlet.py,sha256=TtrOwVF3BkEvDcTOkNJIWT64zhtPLFkDgtyzW6u_4yQ,5209
157
+ xp/services/homekit/homekit_module_service.py,sha256=hxJwbP7tV1K_zotMMP-Kyt2SQQT3DjSt50ty2ITIe_Y,1524
158
+ xp/services/homekit/homekit_outlet.py,sha256=ItWJMC-0xwX0k1JeMzPPmpE_ifKvYZ7n7_icBKLV5Lg,5207
156
159
  xp/services/homekit/homekit_outlet_service.py,sha256=y7DbWbbvihWwF1Gyl0l9Hup1JHin6PTlDEHdoIqTfEQ,3798
157
160
  xp/services/homekit/homekit_service.py,sha256=0lW-hg40ETco3gDBEYkR_sX-UIYsLSKCD4NWruLXUM8,14031
158
161
  xp/services/log_file_service.py,sha256=fvPcZQj8XOKUA-4ep5R8n0PelvwvRlTLlVxvIWM5KR4,10506
@@ -168,7 +171,7 @@ xp/services/server/base_server_service.py,sha256=B-ntxp3swbwuri-9_2EuvBDi-4Uo9AH
168
171
  xp/services/server/client_buffer_manager.py,sha256=1d_MqfzuUqBwaQUiC1n5K76WwSxrdngYAmNH7he6u3o,2235
169
172
  xp/services/server/cp20_server_service.py,sha256=SXdI6Jt400T9sLdw86ovEqKRGeV3nYVaHEA9Gcj6W2A,2041
170
173
  xp/services/server/device_service_factory.py,sha256=Y4TvSFALeq0zYzHfCwcbikSpmIyYbLcvm9756n5Jm7Q,3744
171
- xp/services/server/server_service.py,sha256=2t3guPVX3YUyNJo7B5b1U80eRMyEgE7irT2X8MMQMag,16302
174
+ xp/services/server/server_service.py,sha256=YAkn3rxNYnxs3E1Dpwtt3ZzymFXZHKEz8Nitim-Xewg,16300
172
175
  xp/services/server/xp130_server_service.py,sha256=YnvetDp72-QzkyDGB4qfZZIwFs03HuibUOz2zb9XR0c,2191
173
176
  xp/services/server/xp20_server_service.py,sha256=1wJ7A-bRkN9O5Spu3q3LNDW31mNtNF2eNMQ5E6O2ltA,2928
174
177
  xp/services/server/xp230_server_service.py,sha256=k9ftCY5tjLFP31mKVCspq283RVaPkGx-Yq61Urk8JLs,1815
@@ -185,7 +188,7 @@ xp/services/telegram/telegram_service.py,sha256=XrP1CPi0ckxoKBaNwLA6lo-TogWxXgmX
185
188
  xp/services/telegram/telegram_version_service.py,sha256=M5HdOTsLdcwo122FP-jW6R740ktLrtKf2TiMDVz23h8,10528
186
189
  xp/services/term/__init__.py,sha256=BIeOK042bMR-0l6MA80wdW5VuHlpWOXtRER9IG5ilQA,245
187
190
  xp/services/term/protocol_monitor_service.py,sha256=PhEzLNzWf1XieQw94ua-hJu9ccwrAzhdxSZGe4kHghs,9945
188
- xp/services/term/state_monitor_service.py,sha256=PYKiPO4Zijc-DApRECTIChnbdsOFT3Ndc1MsBglekts,16961
191
+ xp/services/term/state_monitor_service.py,sha256=p6h5cv_3mjij4okp73chR7Z-kGVgHwMdEq8aW0JqIDE,16959
189
192
  xp/term/__init__.py,sha256=Xg2DhBeI3xQJLfc7_BPWI1por-rUXemyer5OtOt9Cus,51
190
193
  xp/term/protocol.py,sha256=oLJAExvIaOSpy75A5TaYB_7R9skTTtNtPx8hiJLdy_U,3425
191
194
  xp/term/protocol.tcss,sha256=r_KfxrbpycGHLVXqZc6INBBcUJME0hLrAZkF1oqnab4,2126
@@ -198,10 +201,10 @@ xp/term/widgets/protocol_log.py,sha256=CJUpckWj7GC1kVqixDadteyGnI4aHyzd4kkH-pSbz
198
201
  xp/term/widgets/status_footer.py,sha256=bxrcqKzJ9V0aPSn_WwraVpJz7NxBUh3yIjA3fwv5nVA,3256
199
202
  xp/utils/__init__.py,sha256=_avMF_UOkfR3tNeDIPqQ5odmbq5raKkaq1rZ9Cn1CJs,332
200
203
  xp/utils/checksum.py,sha256=HDpiQxmdIedbCbZ4o_Box0i_Zig417BtCV_46ZyhiTk,1711
201
- xp/utils/dependencies.py,sha256=dA43oSFnhqqthSkX_wVlJorxWuSBT21rubkaYxWHbKY,23837
204
+ xp/utils/dependencies.py,sha256=Z1vRSWr_dhmyNhD4dstJg-ZOlKVPPq_viGGNJ32GRNs,24584
202
205
  xp/utils/event_helper.py,sha256=W-A_xmoXlpWZBbJH6qdaN50o3-XrwFsDgvAGMJDiAgo,1001
203
206
  xp/utils/logging.py,sha256=rZDXwlBrYK8A6MPq5StsMNpgsRowzJXM6fvROPwJdGM,3750
204
207
  xp/utils/serialization.py,sha256=RWHHk86feaB4ZP7rjE4qOWK0900yg2joUBDkP76gfOY,4618
205
208
  xp/utils/state_machine.py,sha256=Oe2sLwCh9z_vr1tF6X0ZRGTeuckRQAGzmef7xc9CNdc,2413
206
209
  xp/utils/time_utils.py,sha256=dEyViDlAG9GWU-J3D_YVa-sGma6yiyyMTgN4h2x3PY4,3781
207
- conson_xp-1.37.0.dist-info/RECORD,,
210
+ conson_xp-1.39.0.dist-info/RECORD,,
xp/__init__.py CHANGED
@@ -3,7 +3,7 @@
3
3
  conson-xp package.
4
4
  """
5
5
 
6
- __version__ = "1.37.0"
6
+ __version__ = "1.39.0"
7
7
  __manufacturer__ = "salchichon"
8
8
  __model__ = "xp.cli"
9
9
  __serial__ = "2025.09.23.000"
@@ -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)
@@ -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.homekit.homekit_conson_config import (
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
- ActionTableService,
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: ActionTableService = (
51
- ctx.obj.get("container").get_container().resolve(ActionTableService)
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(result: tuple) -> None:
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
- result: Tuple of (_actiontable, actiontable_dict, actiontable_short).
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
- click.echo(json.dumps(module.model_dump(), indent=2, default=str))
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 command."""
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 conbus
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.homekit.homekit_conson_config import ConsonModuleConfig
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
- @conbus.command("export")
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 configuration to YAML file.
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 in current directory
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:
@@ -1,7 +1,6 @@
1
1
  """XP24 Action Table CLI commands."""
2
2
 
3
3
  import json
4
- from dataclasses import asdict
5
4
  from typing import Union
6
5
 
7
6
  import click
@@ -16,8 +15,15 @@ from xp.cli.utils.xp_module_type import XP_MODULE_TYPE
16
15
  from xp.models.actiontable.msactiontable_xp20 import Xp20MsActionTable
17
16
  from xp.models.actiontable.msactiontable_xp24 import Xp24MsActionTable
18
17
  from xp.models.actiontable.msactiontable_xp33 import Xp33MsActionTable
19
- from xp.services.conbus.actiontable.msactiontable_service import (
20
- MsActionTableService,
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,
21
27
  )
22
28
 
23
29
 
@@ -36,8 +42,8 @@ def conbus_download_msactiontable(
36
42
  serial_number: 10-digit module serial number.
37
43
  xpmoduletype: XP module type.
38
44
  """
39
- service: MsActionTableService = (
40
- ctx.obj.get("container").get_container().resolve(MsActionTableService)
45
+ service: MsActionTableDownloadService = (
46
+ ctx.obj.get("container").get_container().resolve(MsActionTableDownloadService)
41
47
  )
42
48
 
43
49
  def on_progress(progress: str) -> None:
@@ -49,27 +55,30 @@ def conbus_download_msactiontable(
49
55
  click.echo(progress, nl=False)
50
56
 
51
57
  def on_finish(
52
- action_table: Union[
58
+ msaction_table: Union[
53
59
  Xp20MsActionTable, Xp24MsActionTable, Xp33MsActionTable, None
54
60
  ],
61
+ msaction_table_short: str,
55
62
  ) -> None:
56
63
  """Handle successful completion of MS action table download.
57
64
 
58
65
  Args:
59
- action_table: Downloaded MS action table object or None if failed.
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.
60
68
 
61
69
  Raises:
62
70
  Abort: If action table download failed.
63
71
  """
64
72
  service.stop_reactor()
65
- if action_table is None:
73
+ if msaction_table is None:
66
74
  click.echo("Error: Failed to download MS action table")
67
75
  raise click.Abort()
68
76
 
69
77
  output = {
70
78
  "serial_number": serial_number,
71
79
  "xpmoduletype": xpmoduletype,
72
- "action_table": asdict(action_table),
80
+ "msaction_table_short": msaction_table_short,
81
+ "msaction_table": msaction_table.model_dump(),
73
82
  }
74
83
  click.echo(json.dumps(output, indent=2, default=str))
75
84
 
@@ -90,3 +99,77 @@ def conbus_download_msactiontable(
90
99
  xpmoduletype=xpmoduletype,
91
100
  )
92
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
+ )
@@ -0,0 +1,9 @@
1
+ """Base class for MS Action Table models."""
2
+
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class MsActionTable(BaseModel):
7
+ """Base class for all MS Action Table types (XP20, XP24, XP33)."""
8
+
9
+ pass
@@ -1,10 +1,11 @@
1
1
  """XP20 Action Table models for input actions and settings."""
2
2
 
3
- from dataclasses import dataclass, field
3
+ from pydantic import BaseModel, Field
4
4
 
5
+ from xp.models.actiontable.msactiontable import MsActionTable
5
6
 
6
- @dataclass
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] = field(default_factory=lambda: [False] * 8)
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
- @dataclass
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 = 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)
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)