Source code for pyecodevices_rt2.x4fp

import time

from . import EcoDevicesRT2
from .const import RESPONSE_ENTRY
from .const import RESPONSE_SUCCESS_VALUE
from .const import RT2_API
from .exceptions import (
    EcoDevicesRT2RequestError,
)


[docs]class X4FP: """Class representing the X4FP""" def __init__(self, ecort2: EcoDevicesRT2, module_id: int, zone_id: int) -> None: self._ecort2 = ecort2 self._module_id = module_id self._zone_id = zone_id self._fp_value = (self._module_id - 1) * 4 + self._zone_id self._value_get_link = RT2_API["x4fp"]["value"]["get"]["link"] self._value_get_entry = RT2_API["x4fp"]["value"]["get"]["entry"] % ( self._module_id, self._zone_id, ) self._value_set_link = RT2_API["x4fp"]["value"]["set"]["link"] self._value_get_convert = RT2_API["x4fp"]["value"]["get"]["convert"]
[docs] def get_mode(self, cached_ms: int = None) -> int: """Return the current X4FP mode.""" response = self._ecort2.get(self._value_get_link, cached_ms=cached_ms) return ( self._value_get_convert[response[self._value_get_entry]] if (self._value_get_entry) in response else None )
@property def mode(self) -> int: return self.get_mode() @mode.setter def mode(self, value: int): """Change the current X4FP mode.""" response = self._ecort2.get( self._value_set_link % (self._fp_value, value), cached_ms=0 ) time.sleep(0.01) self.get_mode(cached_ms=0) if response[RESPONSE_ENTRY] != RESPONSE_SUCCESS_VALUE or value > 5: raise EcoDevicesRT2RequestError( "Ecodevices RT2 API error, unable to change the mode for FP extention %d, Zone %d to %d" % (self._module_id, self._zone_id, value) )