U
    ‹„`H  ã                   @   s¢   d Z ddlZddlmZ ddlZddlZddlZddlZddl	Z	ddl
Z
ddlZdaedƒ\ZZZZZZdd„ Zddd„ZG d	d
„ d
ƒZG dd„ dƒZdd„ ZdS )uG   
mylib2.py
24.04.2021
- Bibliotheksfunktionen fÃ¼r smartHome-Programme
é    N)ÚRotatingFileHandleré   c                 C   s^   t  d | ¡¡}| |¡ td | ¡ddd}| |¡ t  d¡}| |¡ | |¡ |a|S )Nz{}z./log/{}.logi   é
   )ÚmaxBytesÚbackupCountz0%(asctime)s %(name)s %(levelname)-6s %(message)s)	ÚloggingÚ	getLoggerÚformatÚsetLevelr   Ú	FormatterÚsetFormatterÚ
addHandlerÚlogger)ÚprogÚlevelZlgZrfhZlfo© r   úI/run/user/1000/gvfs/sftp:host=wolke8,user=caesar/home/smartHome/mylib2.pyÚstartlogging   s    

 ÿ



r   c              	   C   s<   z
| |ƒW S  t tfk
r6   t d |¡¡ | Y S X d S )Nzcast_error: {})Ú
ValueErrorÚ	TypeErrorr   Údebugr	   )Zto_typeÚvalZstdr   r   r   Úcast*   s
    
r   c                   @   s>   e Zd Zddd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdS )ÚmydbÚhomeÚtm3110Hú	127.0.0.1Nc                 C   s6   d | _ || _|| _|| _|| _|| _|  ¡  d| _d S )NT)ÚdbÚuserÚpasswordÚhostÚdatabaseÚoptionsÚconnectÚOK)Úselfr   r   r    r!   r"   r   r   r   Ú__init__4   s    zmydb.__init__c                 C   s(  d| _ | jd kr:| j ¡ r:d| _ t d | j| j¡¡ d S tdƒD ]Þ}zŒ| j	d krŒt d | j	¡¡ t
jj| j	d| _| jj| _| jj| _n t
jj| j| j| j| jdd| _d| _ W  q"t d	 | j| j¡¡ W qB t
jjk
r } z(|d
krt d |¡¡ t d¡ W 5 d }~X Y qBX qB| j S )NFTz$DB war verbunden host:{} database:{}é   zDB: Parameter:{})Úoption_filesÚmysql_native_password)r   r   r    r!   Úauth_pluginz DB verbunden host:{} database:{}é   zDB Fehler (connect): {}é   )r$   r   Úis_connectedr   r   r	   r    r!   Úranger"   ÚmysqlÚ	connectorr#   r   r   ÚErrorÚerrorÚtimeÚsleep)r%   ÚcntÚerrr   r   r   r#   @   sF    

 ÿ
ÿ

ü ÿ

zmydb.connectc              
   C   sˆ   t  d¡ d| _| j ¡ rrz| j ¡  d| _t  d¡ W q‚ | jjk
rn } zt  d |¡¡ W 5 d }~X Y q‚X nt  d¡ d| _| jS )Nzmydb.close()FTzDB geschlossenzDB Fehler (close): {}zDB war geschlossen)	r   r   r$   r   r-   Úcloser1   r2   r	   )r%   r6   r   r   r   r7   b   s    


$
z
mydb.closec              
   C   s¦   t  d |¡¡ d| _zvz:| jjdd}| |¡ | 	¡ }d| _t  |¡ |W W ¢<S  t
jjk
rˆ } zt  d |¡¡ W 5 d }~X Y nX W 5 | j ¡ r | ¡  X d S )Nzmydb.read_one({})FT©ÚbufferedzDB Fehler (read_one): {})r   r   r	   r$   r   r-   r7   ÚcursorÚexecuteÚfetchoner/   r0   r1   r2   ©r%   ÚqueryÚmycursZmyrecr2   r   r   r   Úread_ones   s    


&
zmydb.read_onec              
   C   sœ   t  d |¡¡ d| _zlz0| jjdd}| |¡ | 	¡ }d| _|W W ¢<S  t
jjk
r~ } zt  d |¡¡ W 5 d }~X Y nX W 5 | j ¡ r–| ¡  X d S )Nzmydb.read_all({})FTr8   zDB Fehler (read_all): {})r   r   r	   r$   r   r-   r7   r:   r;   Úfetchallr/   r0   r1   r2   r=   r   r   r   Úread_all…   s    

&
zmydb.read_allc                 C   sÄ   t  d |¡¡ d| _tdƒD ]ž}z„z@| jjdd}| 	|¡ | j 
¡  d| _t  d¡ W W ¢J q¾W n> tjjk
r¢ } z|dkr’t  d |¡¡ W 5 d }~X Y nX W 5 | j ¡ rº| ¡  X q| jS )	Nzmydb.query({})Fr'   Tr8   Z	committedr+   zDB Fehler (query): {})r   r   r	   r$   r.   r   r-   r7   r:   r;   Úcommitr/   r0   r1   r2   )r%   r>   r5   r?   r2   r   r   r   r>   —   s     


&
z
mydb.query)r   r   r   r   N)	Ú__name__Ú
__module__Ú__qualname__r&   r#   r7   r@   rB   r>   r   r   r   r   r   3   s   
"r   c                   @   s*   e Zd Zddd„Zddd„Zdd
d„ZdS )Úprozessé<   TNc                 C   sb   || _ || _|| _d| _t ¡ | _|r2t ¡ | _n,|d kr^| j | j ¡| _t	| j 
| j ¡ƒ| _d S )Nr   )Únamer   Ú	intervallÚpidr3   ÚtstartÚosÚgetpidZ	readwtaktÚintZ	readtxakt)r%   rI   rJ   Zownr   r   r   r   r&   ®   s    
zprozess.__init__Fc                 C   s&   t   ¡ | _| jd kr"|r"| j ¡  d S )N)r3   rL   r   r#   )r%   Z	connectdbr   r   r   Ústart½   s    
zprozess.startr   c                 C   s„   |dkr|| _ tt ¡ | j ƒ}td| j | ƒ}t d |¡¡ | jd krv| j 	| j
t| jƒt| j ƒ¡ |rv| j ¡  t |¡ d S )Ng        r,   z=== WARTEN === {}s)rJ   rO   r3   rL   Úmaxr   r   r	   r   Z	log_valuerI   rK   Ústrr7   r4   )r%   rJ   ZclosedbZtprozZtsleepr   r   r   r4   Ä   s    

zprozess.sleep)rH   TN)F)r   F)rD   rE   rF   r&   rP   r4   r   r   r   r   rG   ­   s   

rG   c                 C   sØ   | d dkr| S | d dkr dS | dd… dkr8d|  } | d	d … d
krh| d d… dkrhd| dd	…  S | d	d … d
kr„| d d	… S | d	d … dkr°| d d… dkr°| d d	… S t t| d d… ƒd ƒ| dd…  S d S )Nr   ú?Ú*ú r,   é   ú:Ú0éþÿÿÿZAMZ12Z00ZPMé   r'   )rR   rO   )Zstr1r   r   r   Ú	convert24Ò   s      r[   )N)Ú__doc__r   Úlogging.handlersr   r3   Úmysql.connectorr/   ÚdatetimeÚsysrM   ÚrequestsÚjsonr   r.   ZST_UNBEKANNTZST_OKZST_INFOZST_WARNZST_ERRORZST_ALARMr   r   r   rG   r[   r   r   r   r   Ú<module>   s    
	z%