Ë
    «UŸgC  ã                   óT   — d Z ddlZddlmZ  ej                  e«      Z G d„ d«      Zy)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)Údatetimec                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚCommandProcessorz,
    Procesador de comandos de usuario.
    c                 ó�   — || _         | j                  | j                  | j                  | j                  | j
                  dœ| _        y )N)ÚXÚVÚDÚSÚM)Ú	processorÚ_exit_systemÚ_toggle_verboseÚ_toggle_debugÚ_show_statusÚ_show_measurementsÚcommands)ÚselfÚrealtime_processors     ú7/Users/jma/desarrollo/EV-Temp_rev04/src/cli/commands.pyÚ__init__zCommandProcessor.__init__   s?   € Ø+ˆŒà×"Ñ"Ø×%Ñ%Ø×#Ñ#Ø×"Ñ"Ø×(Ñ(ñ
ˆ�ó    c                 ób  — | j                   j                  ra	 | j                  «        t        d«      j	                  «       j                  «       }| j                  |«       | j                   j                  rŒ`yy# t        $ r Y yt        $ r"}t        j                  d|› �«       Y d}~ŒId}~ww xY w)z3
        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   ÚstartzCommandProcessor.start   s�   € ð �n‰n×$Ò$ð?Ø—‘Ô!Ü˜MÓ*×0Ñ0Ó2×8Ñ8Ó:�Ø×%Ñ% cÔ*ð	 �n‰n×$Õ$øô
 ò ÙÜò ?Ü—‘Ð9¸!¸Ð=×>Ñ>ûð?ús   ˜AA9 Á9	B.ÂB.ÂB)Â)B.c                 óò  — t        d«       g }| j                  j                  r|j                  d«       n|j                  d«       | j                  j                  r|j                  d«       t        ddj                  |«      › �«       t        dt        | j                  j                  «      › �«       t        d«       t        d	«       t        d
«       t        d«       t        d«       t        d«       y)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 medicionesN)Úprintr   ÚverboseÚappendÚdebugÚjoinÚlenÚentradas)r   Úestadoss     r   r   zCommandProcessor._show_menu.   s¾   € ô 	Ð.Ô/ØˆØ�>‰>×!Ò!Ø�N‰N˜9Õ%à�N‰N˜8Ô$Ø�>‰>×ÒØ�N‰N˜7Ô#ä�˜Ÿ™ GÓ,Ð-Ð.Ô/ÜÐ"¤3 t§~¡~×'>Ñ'>Ó#?Ð"@ÐAÔBÜÐ'Ô(ÜˆmÔÜÐ)Ô*ÜÐ'Ô(ÜÐ$Ô%ÜÐ(Õ)r   c                 ó`   — || j                   v r | j                   |   «        yt        d«       y)z0
        Procesa un comando de usuario.
        zComando no reconocidoN)r   r+   )r   r#   s     r   r   z!CommandProcessor._process_commandD   s*   € ð �$—-‘-ÑØˆD�M‰M˜#ÑÕ äÐ)Õ*r   c                 óN   — | j                   j                  «        t        d«       y)z%
        Detiene el sistema.
        zDeteniendo sistema...N)r   Ústopr+   ©r   s    r   r   zCommandProcessor._exit_systemM   s   € ð 	�‰×ÑÔÜÐ%Õ&r   c                 ó8   — | j                   j                  «        y)z)
        Cambia el modo verbose.
        N)r   Útoggle_verboser6   s    r   r   z CommandProcessor._toggle_verboseT   s   € ð 	�‰×%Ñ%Õ'r   c                 ó8   — | j                   j                  «        y)z'
        Cambia el modo debug.
        N)r   Útoggle_debugr6   s    r   r   zCommandProcessor._toggle_debugZ   s   € ð 	�‰×#Ñ#Õ%r   c                 ó(  — t        d«       t        d| j                  j                  › �«       t        dt        | j                  j                  «      › �«       t        d«       | j                  j                  j                  «       D ]ˆ  \  }}|j                  «       }|sŒt        d|› d�«       t        d|d   › d	|d
   › �«       t        d| j                  j                  j                  |d«      › �«       |d   €Œwt        d|d   › d�«       ŒŠ y)z7
        Muestra el estado actual del sistema.
        z
=== Estado del Sistema ===u   Ãšltimo proceso: r*   u   
EstadÃ­sticas por entrada:ú	
Entrada ú:u     PerÃ­odo: Úperiodo_inicioz - Úperiodo_finú  Mediciones: r   ÚpromedioNz  Promedio: õ   Â°C)	r+   r   Úlast_process_timer0   r1   ÚitemsÚget_estadisticasÚperiod_measurementsÚget)r   ÚdmacÚentradaÚstatss       r   r   zCommandProcessor._show_status`   s  € ô 	Ð,Ô-ÜÐ! $§.¡.×"BÑ"BÐ!CÐDÔEÜÐ"¤3 t§~¡~×'>Ñ'>Ó#?Ð"@ÐAÔBÜÐ,Ô-à!Ÿ^™^×4Ñ4×:Ñ:Ó<ò 	A‰MˆD�'Ø×,Ñ,Ó.ˆEÚÜ˜
 4 &¨Ð*Ô+Ü˜ UÐ+;Ñ%<Ð$=¸SÀÀ}ÑAUÐ@VÐWÔXÜ˜ t§~¡~×'IÑ'I×'MÑ'MÈdÐTUÓ'VÐ&WÐXÔYØ˜Ñ$Ñ0Ü˜L¨¨zÑ):Ð(;¸3Ð?Õ@ñ	Ar   c                 ó   — t        d«       t        | j                  j                  j	                  «       «      }t        d|› �«       | j                  j
                  j                  «       D ]‘  \  }}| j                  j                  j                  |d«      }|dkD  sŒ2|j                  «       }|sŒE|d   €ŒKt        d|› d�«       t        d|› �«       t        d	|d   › d
�«       t        d|d   › d|d   › d
�«       Œ“ y)z2
        Muestra las mediciones actuales.
        z
=== Mediciones Actuales ===u   Total mediciones perÃ­odo: r   rA   Nr<   r=   r@   u     Ãšltima temperatura: rB   u     MÃ¡x/Min: Úmaximou   Â°C / Úminimo)	r+   Úsumr   rF   Úvaluesr1   rD   rG   rE   )r   ÚtotalrH   rI   ÚcountrJ   s         r   r   z#CommandProcessor._show_measurementsr   sú   € ô 	Ð-Ô.Ü�D—N‘N×6Ñ6×=Ñ=Ó?Ó@ˆÜÐ+¨E¨7Ð3Ô4à!Ÿ^™^×4Ñ4×:Ñ:Ó<ò 	V‰MˆD�'Ø—N‘N×6Ñ6×:Ñ:¸4ÀÓCˆEØ�q‹yØ×0Ñ0Ó2�Ú˜U :Ñ.Ñ:Ü˜J t f¨AÐ.Ô/Ü˜N¨5¨'Ð2Ô3ÜÐ3°E¸*Ñ4EÐ3FÀcÐJÔKÜ˜L¨¨x©Ð(9¸ÀÀhÁÐ?PÐPSÐTÕUñ	Vr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r%   r   r   r   r   r   r   r   © r   r   r   r      s6   „ ñò
ò?ò*ò,+ò'ò(ò&òAó$Vr   r   )rU   Úloggingr   Ú	getLoggerrR   r!   r   rV   r   r   ú<module>rY      s2   ðñó Ý à	ˆ×	Ñ	˜8Ó	$€÷rVò rVr   