ó
    YíÌfó  ã                   óL   • S r SSKrSSKJr  SSKJr  SSKJrJr   " S S5      r	g)uÎ  
Backend principal para el Sistema de Lectura AutomÃ¡tica de Medidores.

Este mÃ³dulo gestiona mÃºltiples conexiones de medidores y coordina el sistema general.
Proporciona mÃ©todos para aÃ±adir, eliminar y listar conexiones, asÃ­ como para verificar su estado.

Desarrolladores:
- Para modificar la gestiÃ³n general de conexiones, ajuste los mÃ©todos de la clase MeterReadingBackend
- Si se necesitan nuevas funcionalidades a nivel de sistema, aÃ±Ã¡dalas aquÃ­
é    N)ÚMeterConnection)ÚAlertSystem)ÚForeÚStylec                   ó<   • \ rS rSrS rS
S jrS rS rS rS r	Sr
g	)ÚMeterReadingBackendé   c                 ó0   • / U l         [        5       U l        g )N)Úconnectionsr   Úalert_system)Úselfs    Ú5/var/www/blue/EV-AMI-Back_02/meter_reading_backend.pyÚ__init__ÚMeterReadingBackend.__init__   s   € ØˆÔÜ'›MˆÕó    c           	      ó*  • [        XX4U R                  XV5      nU R                  R                  U5        [        R
                  " U R                  U4SS9R                  5         [        [        R                   SU SU [        R                   35        g)u”  
AÃ±ade una nueva conexiÃ³n de medidor al backend.

Args:
    host (str): DirecciÃ³n IP del medidor.
    port (int): Puerto del medidor.
    mode (str): Modo de conexiÃ³n ("client" o "server").
    meter_type (str): Tipo de protocolo del medidor.
    interrogation_enabled (bool): Si se debe interrogar activamente al medidor.
    interrogation_frequency (int): Frecuencia de interrogaciÃ³n en segundos.
T)ÚtargetÚargsÚdaemonu   ConexiÃ³n aÃ±adida: Ú:N)r   r   r   ÚappendÚ	threadingÚThreadÚrun_connectionÚstartÚprintr   ÚGREENr   Ú	RESET_ALL)r   ÚhostÚportÚmodeÚ
meter_typeÚinterrogation_enabledÚinterrogation_frequencyÚ
connections           r   Úadd_connectionÚ"MeterReadingBackend.add_connection   s}   € ô % T°À4×CTÑCTÐVkó  Fˆ
Ø×Ñ×Ñ 
Ô+Ü×Ò × 3Ñ 3¸:¸-ÐPTÑU×[Ñ[Ô]Ü”—‘�Ð0°°°a¸°v¼e¿o¹oÐ=NÐOÕPr   c           	      óf  • SUs=::  a  [        U R                  5      :  ae  O  ObU R                  R                  U5      n[        [        R
                   SUR                   SUR                   S[        R                   35        g[        [        R                   S[        R                   35        g)uc   
Elimina una conexiÃ³n por su Ã­ndice.

Args:
    index (int): Ã�ndice de la conexiÃ³n a eliminar.
r   u
   ConexiÃ³n r   z eliminada.u   Ã�ndice de conexiÃ³n invÃ¡lido.N)Úlenr   Úpopr   r   ÚYELLOWr   r    r   r   ÚRED)r   Úindexr%   s      r   Úremove_connectionÚ%MeterReadingBackend.remove_connection'   s„   € ð �Õ-œ˜D×,Ñ,Ó-Ö-Ø×)Ñ)×-Ñ-¨eÓ4ˆJä”T—[‘[�M ¨J¯O©OÐ+<¸A¸j¿o¹oÐ=NÈkÔZ_×ZiÑZiÐYjÐkÕlä”T—X‘X�JÐ=¼e¿o¹oÐ=NÐOÕPr   c                 ó  • [        U R                  5       Hf  u  p[        [        R                   U SUR
                   SUR                   SUR                   SUR                   [        R                   35        Mh     g)z#Lista todas las conexiones activas.ú: r   ú - N)Ú	enumerater   r   r   ÚCYANr   r    r!   r"   r   r   )r   ÚiÚconns      r   Úlist_connectionsÚ$MeterReadingBackend.list_connections5   sc   € ä  ×!1Ñ!1Ö2‰GˆAÜ”T—Y‘Y�K ˜s " T§Y¡Y K¨q°·±°¸3¸t¿y¹y¸kÈÈTÏ_É_ÐL]Ô^c×^mÑ^mÐ]nÐoÖpò 3r   c                 ó‚  • [        U R                  5       H¦  u  pUR                  (       a#  [        R                   S[
        R                   3O"[        R                   S[
        R                   3n[        [        R                   U SUR                   SUR                   SU [
        R                   3	5        M¨     g)z*Muestra el estado de todas las conexiones.Ú	ConectadoÚDesconectador1   r   r2   N)r3   r   Ú	connectedr   r   r   r   r,   r   r4   r   r    )r   r5   r6   Ústatuss       r   r=   ÚMeterReadingBackend.status:   s’   € ä  ×!1Ñ!1Ö2‰GˆAØBFÇ.Ç.œŸ
™
�| 9¬U¯_©_Ð,=Ñ>ÔY]×YaÑYaÐXbÐbnÔot×o~Ño~Ðnð  WAˆFÜ”T—Y‘Y�K ˜s " T§Y¡Y K¨q°·±°¸3¸v¸hÄuÇÁÐFWÐXÖYò 3r   c                 óD   • UR                  5         UR                  5         g)u,   Ejecuta una conexiÃ³n de medidor individual.N)ÚconnectÚhandle_connection)r   r%   s     r   r   Ú"MeterReadingBackend.run_connection@   s   € à×ÑÔØ×$Ñ$Õ&r   )r   r   N)Fé<   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r&   r.   r7   r=   r   Ú__static_attributes__© r   r   r   r      s$   † ò*ôQò"Qòqò
Zõ'r   r   )
Ú__doc__r   Úmeter_connectionr   r   r   Úcoloramar   r   r   rI   r   r   Ú<module>rM      s"   ðñ	ó Ý ,Ý $ß  ÷2'ò 2'r   