
    |e                         d dl Z d dlmZ d dlmZmZmZ ddlmZ ddl	m
Z
mZ  e j        e          Zej        ej        ej        ej        ej        ej        dZdd	d
dZdddddZ G d de          ZdS )    N)CONNECTION_NETWORK_MAC)
DeviceInfoEntityEntityCategory   )DOMAIN)XDevice	XRegistry)batterybattery_voltageledrssipulse
pulseWidthz	mdi:cloudzmdi:led-offzmdi:bell-ring)dustyr   noiseLEDRSSIINCHINGzINCHING Duration)r   r   r   r   c                       e Zd ZU i Zeed<   dZeed<   dZeed<   dZ	dZ
dededdfd	Zdefd
ZdefdZddefdZddefdZd ZdS )XEntityparamsNparamuidFewelinkdevicereturnc           
      &   || _         || _        | j        r| j        | j        | _        | j        r| j        s| j        h| _        | j        r|d          d| j         | _        | j                                        st                              | j                  | _	        t                              | j                  | _        t                              | j                  p,| j                                                            dd          }|d          d| | _        n(|d         | _        n|d         | _        |d         | _        t            dt            d| j         | _        |d         }|d         }d|v rt$          |d         fhnd }t'          |t           |fh|                    d          |                    d	          |d         |                    d
                    | _        	 |                     |           n6# t,          $ r)}t.                              d| |           Y d }~nd }~ww xY w|                    || j                   |                    d          x}r#|                    |d         | j                   d S d S )Ndeviceid_ name.r   staMac	brandNameproductModel	fwVersion)connectionsidentifiersmanufacturermodelr"   
sw_versionzCan't init device: )exc_infoparent)r   r   r   r   r   _attr_unique_idisdigitENTITY_CATEGORIESget_attr_entity_categoryICONS
_attr_iconNAMEStitlereplace
_attr_namer   	entity_idr   r   _attr_device_infointernal_update	Exception_LOGGERerrordispatcher_connectinternal_parent_update)	selfr   r   sr   r   r(   er.   s	            //config/custom_components/sonoff/core/entity.py__init__zXEntity.__init__+   s   : 	"$(*zDH: 	'dk 	':,DK8 	6&,Z&8#E#E48#E#ED 8##%% 1->-B-B48-L-L*"'))DH"5"5IIdh''M48>>+;+;+C+CC+M+M%+F^"9"9a"9"9"(. %VnDO#)*#5D  #DDVDDd.BDDz*h' =E<N<N$fX&6788TX 	 ",# (+,K00**^,,zz+.."
 "
 "
	F  (((( 	F 	F 	FMM8881MEEEEEEEE	F 	""8T-ABBBZZ)))6 	X&&vj'94;VWWWWW	X 	Xs   0H 
H9H44H9c                     d S N rB   r   s     rE   	set_statezXEntity.set_statea   s        c                     | j                             d          p| j         }| j        j        j        r|                    d          p%| j        j        j        o|                    d          S )Nr.   onlinelocal)r   r2   r   cloudrN   rO   )rB   r   s     rE   internal_availablezXEntity.internal_availabled   s^    **9dk")Bfjj.B.B 
L%=&**W*=*=	
rL   c                    |                                  }d}| j        |k    r	|| _        d}|r3|                                | j        z  r|                     |           d}|r| j        r|                                  d S d S d S )NFT)rQ   _attr_availablekeysr   rK   hass_async_write_ha_state)rB   r   	availablechanges       rE   r<   zXEntity.internal_updatej   s    ++--	9,,#,D F 	fkkmmdk1 	NN6"""F 	)di 	)&&(((((	) 	) 	) 	)rL   c                 0    |                      d            d S rH   )r<   rJ   s     rE   rA   zXEntity.internal_parent_updatey   s    T"""""rL   c                    K   | j         d                             d          x}r,| j                            | j         d|id           d {V  d S | j                            | j                    d {V  d S )Nr   
sledOnline
sledonline)
params_lancmd_lan)r   r2   r   send)rB   r   s     rE   async_updatezXEntity.async_update|   s      +h'++L9993 	1,##s(;\ $            ,##DK00000000000rL   rH   )__name__
__module____qualname__r   set__annotations__r   strr   _attr_is_on_attr_should_pollr
   r	   rF   dictrK   boolrQ   r<   rA   r`   rI   rL   rE   r   r   "   s        FCE3COOO K4X	 4X7 4Xt 4X 4X 4X 4Xl    
D 
 
 
 
) )d ) ) ) )# #T # # # #1 1 1 1 1rL   r   )logging%homeassistant.helpers.device_registryr   homeassistant.helpers.entityr   r   r   constr   r   r	   r
   	getLoggerra   r>   
DIAGNOSTICCONFIGr1   r4   r6   r   rI   rL   rE   <module>rr      s    H H H H H H K K K K K K K K K K       ' ' ' ' ' ' ' '
'
H
%
% (%0 %" '   	 	 $		 	a1 a1 a1 a1 a1f a1 a1 a1 a1 a1rL   