diff --git a/custom_components/localtuya/const.py b/custom_components/localtuya/const.py index 80dc4d6..faf6f35 100644 --- a/custom_components/localtuya/const.py +++ b/custom_components/localtuya/const.py @@ -53,7 +53,9 @@ CONF_FAN_SPEED_DP = "fan_speed_dp" CONF_FAN_SPEEDS = "fan_speeds" CONF_CLEAN_TIME_DP = "clean_time_dp" CONF_CLEAN_AREA_DP = "clean_area_dp" +CONF_CLEAN_RECORD_DP = "clean_record_dp" CONF_LOCATE_DP = "locate_dp" +CONF_FAULT_DP = "fault_dp" CONF_PAUSED_STATE = "paused_state" CONF_RETURN_MODE = "return_mode" CONF_STOP_STATUS = "stop_status" diff --git a/custom_components/localtuya/translations/en.json b/custom_components/localtuya/translations/en.json index e268d4d..0513276 100644 --- a/custom_components/localtuya/translations/en.json +++ b/custom_components/localtuya/translations/en.json @@ -64,6 +64,7 @@ "idle_status_value": "Idle Status (comma-separated)", "returning_status_value": "Returning Status", "docked_status_value": "Docked Status (comma-separated)", + "fault_dp": "Fault DP (Usually 11)", "battery_dp": "Battery status DP (Usually 14)", "mode_dp": "Mode DP (Usually 27)", "modes": "Modes list", @@ -72,6 +73,7 @@ "fan_speeds": "Fan speeds list (comma-separated)", "clean_time_dp": "Clean Time DP (Usually 33)", "clean_area_dp": "Clean Area DP (Usually 32)", + "clean_record_dp": "Clean Record DP (Usually 34)", "locate_dp": "Locate DP (Usually 31)", "paused_state": "Pause state (pause, paused, etc)", "stop_status": "Stop status", @@ -131,6 +133,7 @@ "idle_status_value": "Idle Status (comma-separated)", "returning_status_value": "Returning Status", "docked_status_value": "Docked Status (comma-separated)", + "fault_dp": "Fault DP (Usually 11)", "battery_dp": "Battery status DP (Usually 14)", "mode_dp": "Mode DP (Usually 27)", "modes": "Modes list", @@ -139,6 +142,7 @@ "fan_speeds": "Fan speeds list (comma-separated)", "clean_time_dp": "Clean Time DP (Usually 33)", "clean_area_dp": "Clean Area DP (Usually 32)", + "clean_record_dp": "Clean Record DP (Usually 34)", "locate_dp": "Locate DP (Usually 31)", "paused_state": "Pause state (pause, paused, etc)", "stop_status": "Stop status", diff --git a/custom_components/localtuya/vacuum.py b/custom_components/localtuya/vacuum.py index cc97e25..15a1d6b 100644 --- a/custom_components/localtuya/vacuum.py +++ b/custom_components/localtuya/vacuum.py @@ -10,6 +10,7 @@ from homeassistant.components.vacuum import ( STATE_IDLE, STATE_RETURNING, STATE_PAUSED, + STATE_ERROR, SUPPORT_BATTERY, SUPPORT_FAN_SPEED, SUPPORT_PAUSE, @@ -36,7 +37,9 @@ from .const import ( CONF_FAN_SPEEDS, CONF_CLEAN_TIME_DP, CONF_CLEAN_AREA_DP, + CONF_CLEAN_RECORD_DP, CONF_LOCATE_DP, + CONF_FAULT_DP, CONF_PAUSED_STATE, CONF_RETURN_MODE, CONF_STOP_STATUS, @@ -46,8 +49,10 @@ _LOGGER = logging.getLogger(__name__) CLEAN_TIME = "clean_time" CLEAN_AREA = "clean_area" +CLEAN_RECORD = "clean_record" MODES_LIST = "cleaning_mode_list" MODE = "cleaning_mode" +FAULT = "fault" DEFAULT_IDLE_STATUS = "standby,sleep" DEFAULT_RETURNING_STATUS = "docking" @@ -76,7 +81,9 @@ def flow_schema(dps): vol.Optional(CONF_FAN_SPEEDS, default=DEFAULT_FAN_SPEEDS): str, vol.Optional(CONF_CLEAN_TIME_DP): vol.In(dps), vol.Optional(CONF_CLEAN_AREA_DP): vol.In(dps), + vol.Optional(CONF_CLEAN_RECORD_DP): vol.In(dps), vol.Optional(CONF_LOCATE_DP): vol.In(dps), + vol.Optional(CONF_FAULT_DP): vol.In(dps), vol.Optional(CONF_PAUSED_STATE, default=DEFAULT_PAUSED_STATE): str, vol.Optional(CONF_STOP_STATUS, default=DEFAULT_STOP_STATUS): str, } @@ -209,6 +216,7 @@ class LocaltuyaVacuum(LocalTuyaEntity, StateVacuumEntity): def status_updated(self): """Device status was updated.""" state_value = str(self.dps(self._dp_id)) + if state_value in self._idle_status_list: self._state = STATE_IDLE elif state_value in self._docked_status_list: @@ -238,5 +246,13 @@ class LocaltuyaVacuum(LocalTuyaEntity, StateVacuumEntity): if self.has_config(CONF_CLEAN_AREA_DP): self._attrs[CLEAN_AREA] = self.dps_conf(CONF_CLEAN_AREA_DP) + if self.has_config(CONF_CLEAN_RECORD_DP): + self._attrs[CLEAN_RECORD] = self.dps_conf(CONF_CLEAN_RECORD_DP) + + if self.has_config(CONF_FAULT_DP): + self._attrs[FAULT] = self.dps_conf(CONF_FAULT_DP) + if self._attrs[FAULT] != 0: + self._state = STATE_ERROR + async_setup_entry = partial(async_setup_entry, DOMAIN, LocaltuyaVacuum, flow_schema)