
    &i/                        S r SSKJr  SSKrSSKJr  SSKJr  SSKJrJ	r	  SSK
Jr  SS	KJr  SS
KJrJrJrJrJrJrJr  SSKJrJr  \R2                  " \5      rSS jr        SS jrSS jrSS jrg)zThe AC Infinity integration.    )annotationsN)datetime)ConfigEntry)
CONF_EMAILCONF_PASSWORD)HomeAssistant   )ACInfinityClient)ConfigurationKeyDEFAULT_POLLING_INTERVALDOMAIN	PLATFORMSHOSTControllerPropertyKeyEntityConfigValue)ACInfinityDataUpdateCoordinatorACInfinityServicec                v  #    U R                   R                  [        0 5        [        R                  UR                   ;   a&  [        UR                   [        R                     5      O[        n[        [        [        UR                   [           UR                   [           5      5      n[        XX25      nX@R                   [           UR                  '   UR                  5       I Sh  vN   [        XUR                   5      I Sh  vN   U R"                  R%                  U[&        5      I Sh  vN   g NK N/ N	7f)z'Set up AC Infinity from a config entry.NT)data
setdefaultr   r   POLLING_INTERVALintr   r   r
   r   r   r   r   entry_id async_config_entry_first_refresh__initialize_new_devices_if_anyac_infinityconfig_entriesasync_forward_entry_setupsr   )hassentrypolling_intervalservicecoordinators        1/config/custom_components/ac_infinity/__init__.pyasync_setup_entryr%      s      	II$ ,,

: 	EJJ'889:%   uzz*5uzz-7PQG 2WK )4IIfenn%

6
6
888
)${7N7N
OOO 


8
8	
JJJ 9O Ks6   C%D9'D3(D9D5'D9-D7.D95D97D9c                  #    [        UR                  5       =(       d    / 5      n[        UR                  [        R                     R                  5       5      nX4-
  nU(       d  [        R                  S5        gUR                  R                  5       nU[        R                     R                  5       nU H  nUR                  U[        R                  5      n	[        R                  [        R                  S.n
[        SU	S-   5       H  n[        R                  U
SU 3'   M     X[        U5      '   UR                  U[        R                   SU 35      n[        R#                  SX5        M     Xv[        R                  '   [$        R&                  " 5       R)                  5       U[        R*                  '   U R,                  R/                  XS9  g7f)	zOAdd newly discovered devices to entity configuration with SensorsOnly defaults.zNo new devices found.N
controllersensorsr	   port_Device zPAdded new device '%s' (ID: %s) to entity configuration with SensorsOnly defaults)r   )setget_device_idsr   r   ENTITIESkeys_LOGGERdebugcopyget_controller_propertyr   
PORT_COUNTr   SensorsOnlyrangestrDEVICE_NAMEinfor   now	isoformatMODIFIED_ATr   async_update_entry)r   r    r   current_device_idsconfigured_device_idsnew_device_idsnew_dataentities_config	device_id
port_countdevice_configidevice_names                r$   r   r   6   s     [779?R@

+;+D+D E J J LM (?N-.zz H/889>>@O#	 88DYDdDde
 ,77(44

 q*q.)A):)F)FME!+& * +8I'!99)EZEfEfjqr{q|h}~^	
 $& +:&&'-5\\^-E-E-GH))***5*@s   GGc                P  #    U R                   R                  U[        5      I Sh  vN =n(       an  U R                  [           UR
                     nUR                  R                  5       I Sh  vN   U R                  [           R                  UR
                  5        U$  N{ N47f)zUnload a config entry.N)	r   async_unload_platformsr   r   r   r   r   closepop)r   r    	unload_okr#   s       r$   async_unload_entryrM   c   s     --DDUIVVVyVii'7%%++---		&enn- W-s"   $B&B"AB&/B$03B&$B&c                  #    [         R                  SUR                  5        UR                  S:  Ga  UR                  R	                  5       n[        [        [        U[           U[           5      5      n UR                  5       I Sh  vN   UR                  5       n0 U[        R                  '   U H  nUR                  U[        R                   S5      nUR                  U[        R"                  SU 35      n[$        R&                  [$        R(                  S.n[+        SUS-   5       H  n	[$        R,                  USU	 3'   M     X[        R                     [/        U5      '   [         R                  S	Xu5        M     [0        R2                  " 5       R5                  5       U[        R6                  '   U R8                  R;                  UUSS
9   URA                  5       I Sh  vN   [         R                  S5        g GNu! [<         a9  n
[         R?                  SU
5         Sn
A
URA                  5       I Sh  vN    gSn
A
ff = f Nc! URA                  5       I Sh  vN    f = f7f)z?Migrate from an old config entry version to the newest version.z2Migrating AC Infinity config entry from version %s   Nr   r+   r'   r	   r*   zUMigrated device '%s' (ID: %s) to v2 with all entities enabled to preserve v1 behavior)r   versionz0Failed to migrate config entry from v1 to v2: %sFz>Successfully migrated config entry from version 1 to version 2T)!r0   r9   rP   r   r2   r   r
   r   r   r   refreshr-   r   r.   r3   r   r4   r8   r   SensorsAndSettingsr5   r6   Allr7   r   r:   r;   r<   r   r=   	ExceptionerrorrJ   )r   config_entryrA   r   
device_idsrC   rD   rG   rE   rF   exs              r$   async_migrate_entryrY   m   s"    LLE|G[G[\a$$))+'T8J#7-9PQ
'	&%%'''$335J 35H%../ (	(@@LaLlLlnop
)AA)MbMnMnry  {D  zE  qF  G #4"F"F0<<!
 q*q.1A1B1F1FME!+. 2 GT)223C	NCk (& 6>\\^5M5M5OH%11222 3  ##%%%UVU (D  	MMLbQ##%%%		 &+##%%%s   A4I(7H 
G?EH I($I%I(?H 
II "I
 &I(9H<:I( II
 I(
I%I!I%%I()r   r   r    r   returnbool)r   r   r    r   r   r   rZ   None)r   r   rV   r   rZ   r[   ) __doc__
__future__r   loggingr   homeassistant.config_entriesr   homeassistant.constr   r   homeassistant.corer   clientr
   constr   r   r   r   r   r   r   corer   r   	getLogger__name__r0   r%   r   rM   rY        r$   <module>rj      s    " "   4 9 , $  
 

H
%<*A
*A*A #*A 
	*AZ7ri   