
    j?                     6    d dl mZ ddlZddlZ G d de      Zy)   )Device    Nc                        e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ fdZd Z fdZd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )PresenceDetectorDevicez4
    Represents a Tuya-based Presence Detector.
    dps123469101102104c                 H    d|vs|d   sd|d<   t        t        | 
  |i | y )Nversiongffffff
@)superr   __init__)selfargskwargs	__class__s      T/DATA/.local/lib/python3.12/site-packages/tinytuya/Contrib/PresenceDetectorDevice.pyr   zPresenceDetectorDevice.__init__   s1    F"&*; #F9$d4dEfE    c                 x   | j                         }d|v r|S || j                     }t        j                  || j                     || j
                     || j                     || j                     || j                     || j                     || j                     || j                     || j                     d	      }|S )zLWrapper around status() that replace DPS indices with human readable labels.Error)	PresenceSensitivityzNear detectionzFar detectionzChecking resultzTarget distancezDetection delayzFading timezLight sense)statusDPS_KEYjsondumpsPRESENCE_KEYSENSITIVITY_KEYNEAR_DETECTION_KEYFAR_DETECTION_KEYAUTO_DETECT_RESULT_KEYTARGET_DISTANCE_KEYDETECTION_DELAY_KEYFADING_TIME_KEYLIGHT_SENSE_KEY)r   r   r   json_strings       r   status_jsonz"PresenceDetectorDevice.status_json   s    f=T\\"jjD--.t334!$"9"9: !7!78"4#>#>?"4#;#;<"4#;#;<t334t334
"
 
 r   c                    t         |          }d|v r|S || j                     }d}|dkD  rY| j                  |vrK|dz
  }t         |          }|| j                     }t	        j
                  d       |dkD  r| j                  |vrK|S )zIn some cases the status json we received is not the standard one with all the proper keys. We will re-try 5 to get the expected oner      r      )r   r   r    r#   timesleep)r   r   r   retryr   s       r   r   zPresenceDetectorDevice.status.   s    !f=T\\"ai 1 1S 8AIEW^%F&CJJqM	 ai 1 1S 8
 r   c                 f    | j                         }d|v r|S || j                     | j                     S )zGet the presence state of the Presence Detector.

        Returns:
            str: Presence state ("none" or "presence").
        r   )r   r    r#   r   r   s     r   get_presence_statez)PresenceDetectorDevice.get_presence_state<   s6     f=dll#D$5$566r   c                 f    | j                         }d|v r|S || j                     | j                     S )z{Get the sensitivity level of the Presence Detector.

        Returns:
            int: Sensitivity level (0 to 9).
        r   )r   r    r$   r5   s     r   get_sensitivityz&PresenceDetectorDevice.get_sensitivityG   s6     fMdll#D$8$899r   c                 <    | j                  | j                  |       y N)	set_valuer$   )r   sensitivitys     r   set_sensitivityz&PresenceDetectorDevice.set_sensitivityR   s    t++[9r   c                 f    | j                         }d|v r|S || j                     | j                     S )zGet the near detection distance of the Presence Detector.

        Returns:
            int: Near detection distance in meters.
        r   )r   r    r%   r5   s     r   get_near_detectionz)PresenceDetectorDevice.get_near_detectionU   s6     fMdll#D$;$;<<r   c                 <    | j                  | j                  |       y r:   )r;   r%   r   distances     r   set_near_detectionz)PresenceDetectorDevice.set_near_detection`   s    t..9r   c                 f    | j                         }d|v r|S || j                     | j                     S )zGet the far detection distance of the Presence Detector.

        Returns:
            int: Far detection distance in meters.
        r   )r   r    r&   r5   s     r   get_far_detectionz(PresenceDetectorDevice.get_far_detectionc   s6     fMdll#D$:$:;;r   c                 <    | j                  | j                  |       y r:   )r;   r&   rA   s     r   set_far_detectionz(PresenceDetectorDevice.set_far_detectionn   s    t--x8r   c                 f    | j                         }d|v r|S || j                     | j                     S )zGet the checking result of the Presence Detector.

        Returns:
            str: Checking result (one of ["checking", "check_success", "check_failure", "others", "comm_fault", "radar_fault"]).
        r   )r   r    r'   r5   s     r   get_checking_resultz*PresenceDetectorDevice.get_checking_resultq   s6     fMdll#D$?$?@@r   c                 f    | j                         }d|v r|S || j                     | j                     S )zGet the closest target distance of the Presence Detector.

        Returns:
            int: Closest target distance in meters.
        r   )r   r    r(   r5   s     r   get_target_distancez*PresenceDetectorDevice.get_target_distance|   s6     fMdll#D$<$<==r   )__name__
__module____qualname____doc__r    r#   r$   r%   r&   r'   r(   r)   r*   r+   r   r-   r   r6   r8   r=   r?   rC   rE   rG   rI   rK   __classcell__)r   s   @r   r   r      s     GLO OOF&	7	::	=:	<9	A	>r   r   )corer   r1   r!   r    r   r   <module>rS      s      @>V @>r   