
    j^                     *    d Z ddlmZ  G d de      Zy)aX  
 Python module to interface with Tuya ATORCH-Temperature Controller (S1TW)

 Author: Benjamin DUPUIS
 For more information see https://github.com/poil

 Local Control Classes
    AtorchTemperatureController(...)
        See OutletDevice() for constructor arguments

 Functions
    AtorchTemperatureControllerDevice:
        get_energy_consumption()
        get_current()
        get_power()
        get_get_voltage()
        get_state()
        get_temp()
    Inherited
        json = status()                    # returns json payload
        set_version(version)               # 3.1 [default] or 3.3
        set_socketPersistent(False/True)   # False [default] or True
        set_socketNODELAY(False/True)      # False or True [default]
        set_socketRetryLimit(integer)      # retry count limit [default 5]
        set_socketTimeout(timeout)         # set connection timeout in seconds [default 5]
        set_dpsUsed(dps_to_request)        # add data points (DPS) to request
        add_dps_to_request(index)          # add data point (DPS) index set to None
        set_retry(retry=True)              # retry if response payload is truncated
        set_status(on, switch=1, nowait)   # Set status of switch to 'on' or 'off' (bool)
        set_value(index, value, nowait)    # Set int value of any index.
        heartbeat(nowait)                  # Send heartbeat to device
        updatedps(index=[1], nowait)       # Send updatedps command to device
        turn_on(switch=1, nowait)          # Turn on device / switch #
        turn_off(switch=1, nowait)         # Turn off
        set_timer(num_secs, nowait)        # Set timer for num_secs
        set_debug(toggle, color)           # Activate verbose debugging output
        set_sendWait(num_secs)             # Time to wait after sending commands before pulling response
        detect_available_dps()             # Return list of DPS available from device
        generate_payload(command, data)    # Generate TuyaMessage payload for command with data
        send(payload)                      # Send payload to device (do not wait for response)
        receive()
   )Devicec                   l    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dZddZddZddZddZddZd Zy)!AtorchTemperatureControllerDevicez(
    Represents a Tuya based Socket
    101102103108109110118111c                     | j                         }i | j                  |      | j                  |      | j                  |      S N)statusget_current	get_powerget_voltage)selfdatas     _/DATA/.local/lib/python3.12/site-packages/tinytuya/Contrib/AtorchTemperatureControllerDevice.pyget_energy_consumptionz8AtorchTemperatureControllerDevice.get_energy_consumptionK   sB    {{}[$""4([DNN4,@[DDTDTUYDZ[[    Nc                 l    || j                         }|d   | j                     }|t        |      dz   dS )Ndpsz mA)current_rawcurrent_fmt)r   DPS_CURRENTstr)r   status_datacurrents      r   r   z-AtorchTemperatureControllerDevice.get_currentO   sA    ++-Ke$T%5%56&"7|e37 	7r   c                 r    || j                         }|d   | j                     dz  }|t        |      dz   dS )Nr   d    W)	power_raw	power_fmt)r   	DPS_POWERr   r   r   powers      r   r   z+AtorchTemperatureControllerDevice.get_powerX   sD    ++-KE"4>>2S8" Z$.2 	2r   c                 l    || j                         }|d   | j                     }|t        |      dz   dS )Nr   r#   )total_power_rawtotal_power_fmt)r   DPS_TOTAL_POWERr   r'   s      r   get_total_powerz1AtorchTemperatureControllerDevice.get_total_powera   sA    ++-KE"4#7#78#(#&u:#48 	8r   c                 r    || j                         }|d   | j                     dz  }|t        |      dz   dS )Nr   r"   z V)voltage_rawvoltage_fmt)r   DPS_VOLTAGEr   )r   r   voltages      r   r   z-AtorchTemperatureControllerDevice.get_voltagej   sF    ++-Ke$T%5%56<&"7|d24 	4r   c                 N    || j                         }|d   | j                     }|S )Nr   )r   DPS_TEMP_UNIT)r   r   units      r   get_temp_unitz/AtorchTemperatureControllerDevice.get_temp_units   s-    ++-K5!$"4"45r   c                     || j                         }|d   | j                     dz  }|t        |       d| j                          dS )Nr   
    )cur_temp_rawcur_temp_fmt)r   DPS_CUR_TEMPr   r6   )r   r   temps      r   get_tempz*AtorchTemperatureControllerDevice.get_tempz   sX    ++-K5!$"3"34r9 $#&t9+Qt/A/A/C.D EG 	Gr   c                     | j                         d   | j                     }|dk(  r)|| j                         d   | j                     rddS ddS d|iS )Nr   socketonoff)moder   rC   )r   DPS_MODEDPS_SWITCH_STATE)r   cur_modes     r   	get_statez+AtorchTemperatureControllerDevice.get_state   se    ;;='6x$&*kkmE&:4;P;P&Qd W\ 
 H%%r   r   )__name__
__module____qualname____doc__rD   r<   rE   r   r&   r1   r4   r,   r   r   r   r-   r   r6   r>   rG    r   r   r   r   1   s\     HLKIKMO\7284G&r   r   N)rK   corer   r   rL   r   r   <module>rN      s   )V Z& Z&r   