From 3bc16739d9f39391c560e1cebd1e7d436d22a7e9 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Tue, 20 Oct 2020 12:51:51 +0200 Subject: [PATCH] Introduced 1_2_3 Commands set for covers --- custom_components/localtuya/__init__.py | 3 ++- custom_components/localtuya/const.py | 2 +- custom_components/localtuya/cover.py | 27 +++++++++++-------- .../localtuya/translations/en.json | 4 +-- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/custom_components/localtuya/__init__.py b/custom_components/localtuya/__init__.py index ae2c893..f4a89b2 100644 --- a/custom_components/localtuya/__init__.py +++ b/custom_components/localtuya/__init__.py @@ -20,7 +20,8 @@ localtuya: - platform: cover friendly_name: Device Cover id: 2 - open_close_cmds: ["on_off","open_close"] # Optional, default: "on_off" + open_close_stop_cmds: # Optional, default: "on_off_stop" + ["on_off_stop","open_close_stop","fz_zz_stop","1_2_3"] positioning_mode: ["none","position","fake"] # Optional, default: "none" currpos_dp: 3 # Optional, required only for "position" mode setpos_dp: 4 # Optional, required only for "position" mode diff --git a/custom_components/localtuya/const.py b/custom_components/localtuya/const.py index 2b57240..e1ffad9 100644 --- a/custom_components/localtuya/const.py +++ b/custom_components/localtuya/const.py @@ -18,7 +18,7 @@ CONF_CURRENT_CONSUMPTION = "current_consumption" CONF_VOLTAGE = "voltage" # cover -CONF_OPENCLOSE_CMDS = "open_close_cmds" +CONF_COMMANDS_SET = "commands_set" CONF_POSITIONING_MODE = "positioning_mode" CONF_CURRENT_POSITION_DP = "current_position_dp" CONF_SET_POSITION_DP = "set_position_dp" diff --git a/custom_components/localtuya/cover.py b/custom_components/localtuya/cover.py index 5df0c97..f0fc50a 100644 --- a/custom_components/localtuya/cover.py +++ b/custom_components/localtuya/cover.py @@ -16,7 +16,7 @@ from homeassistant.components.cover import ( ) from .const import ( - CONF_OPENCLOSE_CMDS, + CONF_COMMANDS_SET, CONF_CURRENT_POSITION_DP, CONF_SET_POSITION_DP, CONF_POSITIONING_MODE, @@ -26,14 +26,15 @@ from .common import LocalTuyaEntity, async_setup_entry _LOGGER = logging.getLogger(__name__) -COVER_ONOFF_CMDS = "on_off" -COVER_OPENCLOSE_CMDS = "open_close" -COVER_STOP_CMD = "stop" +COVER_ONOFF_CMDS = "on_off_stop" +COVER_OPENCLOSE_CMDS = "open_close_stop" +COVER_FZZZ_CMDS = "fz_zz_stop" +COVER_12_CMDS = "1_2_3" COVER_MODE_NONE = "none" COVER_MODE_POSITION = "position" COVER_MODE_FAKE = "fake" -DEFAULT_OPENCLOSE_CMDS = COVER_ONOFF_CMDS +DEFAULT_COMMANDS_SET = COVER_ONOFF_CMDS DEFAULT_POSITIONING_MODE = COVER_MODE_NONE DEFAULT_SPAN_TIME = 25.0 @@ -41,8 +42,8 @@ DEFAULT_SPAN_TIME = 25.0 def flow_schema(dps): """Return schema used in config flow.""" return { - vol.Optional(CONF_OPENCLOSE_CMDS, default=DEFAULT_OPENCLOSE_CMDS): vol.In( - [COVER_ONOFF_CMDS, COVER_OPENCLOSE_CMDS] + vol.Optional(CONF_COMMANDS_SET): vol.In( + [COVER_ONOFF_CMDS, COVER_OPENCLOSE_CMDS, COVER_FZZZ_CMDS, COVER_12_CMDS] ), vol.Optional(CONF_POSITIONING_MODE, default=DEFAULT_POSITIONING_MODE): vol.In( [COVER_MODE_NONE, COVER_MODE_POSITION, COVER_MODE_FAKE] @@ -69,8 +70,12 @@ class LocaltuyaCover(LocalTuyaEntity, CoverEntity): super().__init__(device, config_entry, switchid, **kwargs) self._state = None self._current_cover_position = None - self._open_cmd = self._config[CONF_OPENCLOSE_CMDS].split("_")[0] - self._close_cmd = self._config[CONF_OPENCLOSE_CMDS].split("_")[1] + command_set = DEFAULT_COMMANDS_SET + if self.has_config(CONF_COMMANDS_SET): + command_set = self._config[CONF_COMMANDS_SET] + self._open_cmd = command_set.split("_")[0] + self._close_cmd = command_set.split("_")[1] + self._stop_cmd = command_set.split("_")[2] print("Initialized cover [{}]".format(self.name)) @property @@ -151,8 +156,8 @@ class LocaltuyaCover(LocalTuyaEntity, CoverEntity): async def async_stop_cover(self, **kwargs): """Stop the cover.""" - _LOGGER.debug("Launching command %s to cover ", COVER_STOP_CMD) - await self._device.set_dp(COVER_STOP_CMD, self._dp_id) + _LOGGER.debug("Launching command %s to cover ", self._stop_cmd) + await self._device.set_dp(self._stop_cmd, self._dp_id) def status_updated(self): """Device status was updated.""" diff --git a/custom_components/localtuya/translations/en.json b/custom_components/localtuya/translations/en.json index 3193735..f8dbc94 100644 --- a/custom_components/localtuya/translations/en.json +++ b/custom_components/localtuya/translations/en.json @@ -46,7 +46,7 @@ "current": "Current", "current_consumption": "Current Consumption", "voltage": "Voltage", - "open_close_cmds": "Open/Close Commands", + "commands_set": "Open_Close_Stop Commands Set", "positioning_mode": "Positioning mode", "current_position_dp": "Current Position (when Position mode is *position*)", "set_position_dp": "Set Position (when Position Mode is *position*)", @@ -85,7 +85,7 @@ "current": "Current", "current_consumption": "Current Consumption", "voltage": "Voltage", - "open_close_cmds": "Open/Close Commands", + "commands_set": "Open_Close_Stop Commands Set", "positioning_mode": "Positioning mode", "current_position_dp": "Current Position (for *position* mode only)", "set_position_dp": "Set Position (for *position* mode only)",