Added DPS value type configuration

This commit is contained in:
DeeSe
2022-07-07 14:07:19 +02:00
parent 54dbc3a359
commit f06b8ccb49
4 changed files with 9 additions and 3 deletions

View File

@@ -73,6 +73,7 @@ CONF_FAN_ORDERED_LIST = "fan_speed_ordered_list"
CONF_FAN_DIRECTION = "fan_direction" CONF_FAN_DIRECTION = "fan_direction"
CONF_FAN_DIRECTION_FWD = "fan_direction_forward" CONF_FAN_DIRECTION_FWD = "fan_direction_forward"
CONF_FAN_DIRECTION_REV = "fan_direction_reverse" CONF_FAN_DIRECTION_REV = "fan_direction_reverse"
CONF_FAN_DPS_TYPE = "fan_dps_type"
# sensor # sensor
CONF_SCALING = "scaling" CONF_SCALING = "scaling"

View File

@@ -32,6 +32,7 @@ from .const import (
CONF_FAN_SPEED_CONTROL, CONF_FAN_SPEED_CONTROL,
CONF_FAN_SPEED_MAX, CONF_FAN_SPEED_MAX,
CONF_FAN_SPEED_MIN, CONF_FAN_SPEED_MIN,
CONF_FAN_DPS_TYPE
) )
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@@ -48,6 +49,7 @@ def flow_schema(dps):
vol.Optional(CONF_FAN_SPEED_MIN, default=1): cv.positive_int, vol.Optional(CONF_FAN_SPEED_MIN, default=1): cv.positive_int,
vol.Optional(CONF_FAN_SPEED_MAX, default=9): cv.positive_int, vol.Optional(CONF_FAN_SPEED_MAX, default=9): cv.positive_int,
vol.Optional(CONF_FAN_ORDERED_LIST, default="disabled"): cv.string, vol.Optional(CONF_FAN_ORDERED_LIST, default="disabled"): cv.string,
vol.Optional(CONF_FAN_DPS_TYPE, default='str'): vol.In(["str", "int"]),
} }
@@ -73,6 +75,7 @@ class LocaltuyaFan(LocalTuyaEntity, FanEntity):
) )
self._ordered_list = self._config.get(CONF_FAN_ORDERED_LIST).split(",") self._ordered_list = self._config.get(CONF_FAN_ORDERED_LIST).split(",")
self._ordered_list_mode = None self._ordered_list_mode = None
self._dps_type = int if self._config.get(CONF_FAN_DPS_TYPE) == "int" else str
if isinstance(self._ordered_list, list) and len(self._ordered_list) > 1: if isinstance(self._ordered_list, list) and len(self._ordered_list) > 1:
self._use_ordered_list = True self._use_ordered_list = True
@@ -138,7 +141,7 @@ class LocaltuyaFan(LocalTuyaEntity, FanEntity):
await self.async_turn_on() await self.async_turn_on()
if self._use_ordered_list: if self._use_ordered_list:
await self._device.set_dp( await self._device.set_dp(
str( self._dps_type(
percentage_to_ordered_list_item(self._ordered_list, percentage) percentage_to_ordered_list_item(self._ordered_list, percentage)
), ),
self._config.get(CONF_FAN_SPEED_CONTROL), self._config.get(CONF_FAN_SPEED_CONTROL),
@@ -151,7 +154,7 @@ class LocaltuyaFan(LocalTuyaEntity, FanEntity):
else: else:
await self._device.set_dp( await self._device.set_dp(
str( self._dps_type(
math.ceil( math.ceil(
percentage_to_ranged_value(self._speed_range, percentage) percentage_to_ranged_value(self._speed_range, percentage)
) )
@@ -221,7 +224,7 @@ class LocaltuyaFan(LocalTuyaEntity, FanEntity):
) )
if current_speed is not None: if current_speed is not None:
self._percentage = ordered_list_item_to_percentage( self._percentage = ordered_list_item_to_percentage(
self._ordered_list, current_speed self._ordered_list, str(current_speed)
) )
else: else:

View File

@@ -104,6 +104,7 @@
"fan_direction":"fan direction dps", "fan_direction":"fan direction dps",
"fan_direction_forward": "forward dps string", "fan_direction_forward": "forward dps string",
"fan_direction_reverse": "reverse dps string", "fan_direction_reverse": "reverse dps string",
"fan_dps_type": "DP value type",
"current_temperature_dp": "Current Temperature", "current_temperature_dp": "Current Temperature",
"target_temperature_dp": "Target Temperature", "target_temperature_dp": "Target Temperature",
"temperature_step": "Temperature Step (optional)", "temperature_step": "Temperature Step (optional)",

View File

@@ -165,6 +165,7 @@
"fan_direction":"fan direction dps", "fan_direction":"fan direction dps",
"fan_direction_forward": "forward dps string", "fan_direction_forward": "forward dps string",
"fan_direction_reverse": "reverse dps string", "fan_direction_reverse": "reverse dps string",
"fan_dps_type": "DP value type",
"current_temperature_dp": "Current Temperature", "current_temperature_dp": "Current Temperature",
"target_temperature_dp": "Target Temperature", "target_temperature_dp": "Target Temperature",
"temperature_step": "Temperature Step (optional)", "temperature_step": "Temperature Step (optional)",