ó
    £¢g  ã                   óh   • S r SSKrSSKrSSKJr  SSKJr  \R                  " \5      r " S S5      r	g)u·   
MÃ³dulo de comandos CLI - MVP v1.0

Implementa la interfaz de lÃ­nea de comandos del sistema:
- Procesamiento de comandos de usuario
- VisualizaciÃ³n de estado
- Control del sistema
é    N)Údatetime)ÚPrettyTablec                   ó^   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS rSrg)ÚCommandProcessoré   z$
Procesador de comandos de usuario.
Nc                 óÆ   • Xl         X l        U R                  U R                  U R                  U R
                  U R                  U R                  U R                  S.U l	        g )N)ÚXÚVÚDÚSÚMÚLÚC)
Ú	processorÚ	deviationÚ_exit_systemÚ_toggle_verboseÚ_toggle_debugÚ_show_statusÚ_show_measurementsÚ_clear_screenÚ_show_configurationsÚcommands)ÚselfÚrealtime_processorÚdeviation_processors      Ú//var/www/blue/EV-Temp_rev04/src/cli/commands.pyÚ__init__ÚCommandProcessor.__init__   sT   € Ø+ŒØ,Œà×"Ñ"Ø×%Ñ%Ø×#Ñ#Ø×"Ñ"Ø×(Ñ(Ø×#Ñ#Ø×*Ñ*ñ
ˆ�ó    c                 ó|  • U R                   R                  (       ag   U R                  5         [        S5      R	                  5       R                  5       nU R                  U5        U R                   R                  (       a  Mf  gg! [         a     g[         a"  n[        R                  SU 35         SnANQSnAff = f)z#
Inicia el procesador de comandos.
z

Comando: zError procesando comando: N)r   ÚrunningÚ
_show_menuÚinputÚstripÚupperÚ_process_commandÚEOFErrorÚ	ExceptionÚloggerÚerror)r   ÚcmdÚes      r   ÚstartÚCommandProcessor.start#   s�   € ð �n‰n×$×$ð?Ø—‘Ô!Ü˜MÓ*×0Ñ0Ó2×8Ñ8Ó:�Ø×%Ñ% cÔ*ð	 �n‰n×$×$Ó$øô
 ó ÙÜó ?Ü—‘Ð9¸!¸Ð=×>Ñ>ûð?ús   �AB Â
B;Â	B;ÂB6Â6B;c                 ó2  • [        S5        / nU R                  R                  (       a  UR                  S5        OUR                  S5        U R                  R                  (       a  UR                  S5        [        SSR                  U5       35        [        S[        U R                  R                  5       35        [        S5        [        S	5        [        S
5        [        S5        [        S5        [        S5        [        S5        [        S5        g)u+   
Muestra el menÃº de comandos disponibles.
z
=== Sistema de Monitoreo ===ÚVERBOSEÚNORMALÚDEBUGzEstado: z | úEntradas activas: z
Comandos disponibles:z  X - Salirz  V - Toggle modo Verbosez  D - Toggle modo Debugz  S - Mostrar estadoz  M - Mostrar medicionesz  L - Limpiar pantallaz  C - Mostrar configuracionesN)Úprintr   ÚverboseÚappendÚdebugÚjoinÚlenÚentradas)r   Úestadoss     r   r#   ÚCommandProcessor._show_menu1   sÐ   € ô 	Ð.Ô/ØˆØ�>‰>×!×!Ø�N‰N˜9Õ%à�N‰N˜8Ô$Ø�>‰>××Ø�N‰N˜7Ô#ä�˜Ÿ™ GÓ,Ð-Ð.Ô/ÜÐ"¤3 t§~¡~×'>Ñ'>Ó#?Ð"@ÐAÔBÜÐ'Ô(ÜˆmÔÜÐ)Ô*ÜÐ'Ô(ÜÐ$Ô%ÜÐ(Ô)ÜÐ&Ô'ÜÐ-Õ.r    c                 ób   • XR                   ;   a  U R                   U   " 5         g[        S5        g)z 
Procesa un comando de usuario.
zComando no reconocidoN)r   r5   )r   r,   s     r   r'   Ú!CommandProcessor._process_commandI   s&   € ð —-‘-ÓØ�M‰M˜#ÒÕ äÐ)Õ*r    c                 óN   • U R                   R                  5         [        S5        g)z
Detiene el sistema.
zDeteniendo sistema...N)r   Ústopr5   ©r   s    r   r   ÚCommandProcessor._exit_systemR   s   € ð 	�‰×ÑÔÜÐ%Õ&r    c                 ó8   • U R                   R                  5         g)z
Cambia el modo verbose.
N)r   Útoggle_verboserB   s    r   r   Ú CommandProcessor._toggle_verboseY   s   € ð 	�‰×%Ñ%Õ'r    c                 ó8   • U R                   R                  5         g)z
Cambia el modo debug.
N)r   Útoggle_debugrB   s    r   r   ÚCommandProcessor._toggle_debug_   s   € ð 	�‰×#Ñ#Õ%r    c                 ó:  • [        S5        [        SU R                  R                   35        [        S[        U R                  R                  5       35        [        S5        U R                  R                  R                  5        H�  u  pUR                  5       nU(       d  M  [        SU S35        [        SUS    S	US
    35        [        SU R                  R                  R                  US5       35        US   c  M~  [        SUS    S35        M’     g)z'
Muestra el estado actual del sistema.
z
=== Estado del Sistema ===u   Ãšltimo proceso: r4   u   
EstadÃ­sticas por entrada:ú	
Entrada Ú:u     PerÃ­odo: Úperiodo_inicioz - Úperiodo_finú  Mediciones: r   ÚpromedioNz  Promedio: õ   Â°C)	r5   r   Úlast_process_timer:   r;   ÚitemsÚget_estadisticasÚperiod_measurementsÚget)r   ÚdmacÚentradaÚstatss       r   r   ÚCommandProcessor._show_statuse   s   € ô 	Ð,Ô-ÜÐ! $§.¡.×"BÑ"BÐ!CÐDÔEÜÐ"¤3 t§~¡~×'>Ñ'>Ó#?Ð"@ÐAÔBÜÐ,Ô-à!Ÿ^™^×4Ñ4×:Ñ:Ö<‰MˆDØ×,Ñ,Ó.ˆEßˆuÜ˜
 4 &¨Ð*Ô+Ü˜ UÐ+;Ñ%<Ð$=¸SÀÀ}ÑAUÐ@VÐWÔXÜ˜ t§~¡~×'IÑ'I×'MÑ'MÈdÐTUÓ'VÐ&WÐXÔYØ˜Ñ$Ó0Ü˜L¨¨zÑ):Ð(;¸3Ð?Ö@ò =r    c                 ó  • [        S5        [        U R                  R                  R	                  5       5      n[        SU 35        U R                  R
                  R                  5        H›  u  p#U R                  R                  R                  US5      nUS:”  d  M3  UR                  5       nU(       d  ML  US   c  MT  [        SU S35        [        SU 35        [        S	US    S
35        [        SUS    SUS    S
35        M�     g)z"
Muestra las mediciones actuales.
z
=== Mediciones Actuales ===u   Total mediciones perÃ­odo: r   rP   NrK   rL   rO   u     Ãšltima temperatura: rQ   u     MÃ¡x/Min: Úmaximou   Â°C / Úminimo)	r5   Úsumr   rU   Úvaluesr;   rS   rV   rT   )r   ÚtotalrW   rX   ÚcountrY   s         r   r   Ú#CommandProcessor._show_measurementsw   só   € ô 	Ð-Ô.Ü�D—N‘N×6Ñ6×=Ñ=Ó?Ó@ˆÜÐ+¨E¨7Ð3Ô4à!Ÿ^™^×4Ñ4×:Ñ:Ö<‰MˆDØ—N‘N×6Ñ6×:Ñ:¸4ÀÓCˆEØ�q�yØ×0Ñ0Ó2�ß�5˜U :Ñ.Ó:Ü˜J t f¨AÐ.Ô/Ü˜N¨5¨'Ð2Ô3ÜÐ3°E¸*Ñ4EÐ3FÀcÐJÔKÜ˜L¨¨x©Ð(9¸ÀÀhÁÐ?PÐPSÐTÖUò =r    c                 óf   • [         R                  " [         R                  S:X  a  S5        gS5        g)z#
Limpia la pantalla de la consola.
ÚntÚclsÚclearN)ÚosÚsystemÚnamerB   s    r   r   ÚCommandProcessor._clear_screen‰   s   € ô 	�	Š	œ2Ÿ7™7 d›?�%Õ8°Õ8r    c                 óþ  • U R                   (       d  [        S5        g[        S5        [        5       n/ SQUl        SUl        SUR                  S'   SUR                  S'   [        U R                   R                  R                  5       5      nU H_  nU R                   R                  U   nUR                  US	   US
   US   US   US   UR                  SS
5      US   (       a  SOS/5        Ma     [        U5        g)z<
Muestra la tabla de configuraciones de todos los sensores.
u*   
No hay procesador de desvÃ­os configuradoNz$
=== Configuraciones de Sensores ===)ÚSistemaÚEntradazVal. MinzVal. MaxzT.Max (seg)ÚFactorzGenera AlarmaÚrÚlrl   rm   r   é   ÚvMin1ÚvMax1ÚtMax1ÚfactorÚgeneraAlarmau   SÃ­ÚNo)
r   r5   r   Úfield_namesÚalignÚsortedÚconfigsÚkeysÚadd_rowrV   )r   ÚtableÚsorted_keysÚkeyÚconfigs        r   r   Ú%CommandProcessor._show_configurations�   sê   € ð �~�~ÜÐ?Ô@ØäÐ5Ô6Ü“ˆò
ˆÔð ˆŒØ!$ˆ�‰�IÑØ!$ˆ�‰�IÑô ˜TŸ^™^×3Ñ3×8Ñ8Ó:Ó;ˆãˆCØ—^‘^×+Ñ+¨CÑ0ˆFØ�M‰MØ�A‘Ø�A‘Ø�w‘Ø�w‘Ø�w‘Ø—
‘
˜8 QÓ'Ø ×/‘°Tðö ñ ô 	ˆe�r    )r   r   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r.   r#   r'   r   r   r   r   r   r   r   Ú__static_attributes__© r    r   r   r      s@   † ñô
ò?ò/ò0+ò'ò(ò&òAò$Vò$9õ#r    r   )
r‡   Úloggingrg   r   Úprettytabler   Ú	getLoggerrƒ   r*   r   r‰   r    r   Ú<module>r�      s4   ðñó Û 	Ý Ý #à	×	Ò	˜8Ó	$€÷aò ar    