a
    i                     @   s.   d Z ddlmZ ddlmZ G dd dZdS )u   
Класс - адаптер, для класса AM2320 
Цель адаптера: Приведение  протокола общения с внешним классом к унифицированным требованиям контроллера.
   )AM2320    )Optionalc                   @   sj   e Zd ZddiZddddZdeddddZdedd	d
dZdeee	 dddZ
ddddZdS )AM2320_adapteri2c_busN)returnc                 C   s   d | _ | j | _d S )N)AM2320_instanceDEFAULT_CONFIGcopyAM2320_config)self r   5/var/aqua_controller/devices/am2320/am2320_adapter.py__init__   s    zAM2320_adapter.__init__)optionsr   c              
   C   s   zZ|r8t |tstddD ]}||v r|| | j|< q| jd}|d urXt|d| _W n4 ty } ztd| |W Y d }~n
d }~0 0 d S )N.   options должен быть словарем)r   r   )i2cu>   Ошибка инициализации устройства: )	
isinstancedict	TypeErrorr   getr   r   	ExceptionRuntimeError)r   r   key_i2c_buser   r   r   run   s    
zAM2320_adapter.run)optionr   c                 C   s   t dd S )Nu=   Метод не доступен для устройства.)r   )r   r   r   r   r   set1   s    zAM2320_adapter.setc              
   C   sZ  z|d u rW d S t |ts$tdd|vr4td| jd u rFtd|d  }|dkrz| j	 }t
|dW W S  ty } ztd| |W Y d }~n
d }~0 0 nl|dkrz| j }t
|dW W S  ty } ztd	| |W Y d }~n
d }~0 0 ntd
| dW n6 tyT } ztd| |W Y d }~n
d }~0 0 d S )Nr   valueu/   Параметр value не обнаружен.uo   Невозможно получить данные, устройство не инициализировано.Ztemperature   u<   Ошибка определения температуры: Zhumidityu8   Ошибка определения влажности: u,   Значение параметра value = u*    не подлежит обработке.u.   Ошибка получения данных: )r   r   r   KeyErrorr   r   r   striplowerZget_temperatureroundr   Zget_humidity
ValueError)r   r   _valueZ_temperaturer   Z	_humidityr   r   r   r   ;   s2    


(

(zAM2320_adapter.getc              
   C   sP   | j r@zW n4 ty> } ztd| |W Y d }~n
d }~0 0 d | _ d | _d S )Nu6   Ошибка остановки устройства: )r   r   r   r   )r   r   r   r   r   stop\   s    &zAM2320_adapter.stop)N)N)N)__name__
__module____qualname__r	   r   r   r   r   r   floatr   r'   r   r   r   r   r      s   	
!r   N)__doc__Zam2320r   typingr   r   r   r   r   r   <module>   s   