From d0b6b7c7355ad23f3a9555923804405d53f480b4 Mon Sep 17 00:00:00 2001 From: Tamas Varga Date: Sun, 2 Sep 2018 12:34:56 +0200 Subject: [PATCH 1/2] Added new states and exposed state/state code received from xiaomi vacuum --- homeassistant/components/vacuum/__init__.py | 5 +++++ homeassistant/components/vacuum/xiaomi_miio.py | 15 +++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/vacuum/__init__.py b/homeassistant/components/vacuum/__init__.py index 1808737d2815c1..6a823b6f14aba8 100644 --- a/homeassistant/components/vacuum/__init__.py +++ b/homeassistant/components/vacuum/__init__.py @@ -68,6 +68,11 @@ STATE_PAUSED = STATE_PAUSED STATE_RETURNING = 'returning' STATE_ERROR = 'error' +STATE_REMOTE = 'remote controlled' +STATE_SPOT_CLEANING = 'spot cleaning' +STATE_GOING_TO_TARGET = 'going to target' +STATE_UPDATING = 'updating' +STATE_ZONED_CLEANING = 'zoned cleaning' DEFAULT_NAME = 'Vacuum cleaner robot' diff --git a/homeassistant/components/vacuum/xiaomi_miio.py b/homeassistant/components/vacuum/xiaomi_miio.py index 41842459c8a795..1a09531865e296 100644 --- a/homeassistant/components/vacuum/xiaomi_miio.py +++ b/homeassistant/components/vacuum/xiaomi_miio.py @@ -16,7 +16,8 @@ SUPPORT_RETURN_HOME, SUPPORT_SEND_COMMAND, SUPPORT_STOP, SUPPORT_STATE, SUPPORT_START, VACUUM_SERVICE_SCHEMA, StateVacuumDevice, STATE_CLEANING, STATE_DOCKED, STATE_PAUSED, STATE_IDLE, STATE_RETURNING, - STATE_ERROR) + STATE_ERROR, STATE_REMOTE, STATE_SPOT_CLEANING, STATE_GOING_TO_TARGET, + STATE_UPDATING, STATE_ZONED_CLEANING) from homeassistant.const import ( ATTR_ENTITY_ID, CONF_HOST, CONF_NAME, CONF_TOKEN, STATE_OFF, STATE_ON) import homeassistant.helpers.config_validation as cv @@ -60,6 +61,8 @@ ATTR_RC_DURATION = 'duration' ATTR_RC_ROTATION = 'rotation' ATTR_RC_VELOCITY = 'velocity' +ATTR_RAW_STATE = 'state' +ATTR_RAW_STATE_CODE = 'state_code' SERVICE_SCHEMA_REMOTE_CONTROL = VACUUM_SERVICE_SCHEMA.extend({ vol.Optional(ATTR_RC_VELOCITY): @@ -89,16 +92,18 @@ STATE_CODE_TO_STATE = { 2: STATE_IDLE, 3: STATE_IDLE, + 4: STATE_REMOTE, 5: STATE_CLEANING, 6: STATE_RETURNING, 8: STATE_DOCKED, 9: STATE_ERROR, 10: STATE_PAUSED, - 11: STATE_CLEANING, + 11: STATE_SPOT_CLEANING, 12: STATE_ERROR, + 14: STATE_UPDATING, 15: STATE_RETURNING, - 16: STATE_CLEANING, - 17: STATE_CLEANING, + 16: STATE_GOING_TO_TARGET, + 17: STATE_ZONED_CLEANING, } @@ -245,6 +250,8 @@ def device_state_attributes(self): if self.vacuum_state.got_error: attrs[ATTR_ERROR] = self.vacuum_state.error + attrs[ATTR_RAW_STATE_CODE] = self.vacuum_state.state_code + attrs[ATTR_RAW_STATE] = self.vacuum_state.state return attrs @property From d39e34c28fd933068a53bfd495a53945505dab60 Mon Sep 17 00:00:00 2001 From: Tamas Varga Date: Sat, 8 Sep 2018 17:30:08 +0200 Subject: [PATCH 2/2] Restore status attribute for xiaomi_vacuum --- homeassistant/components/vacuum/__init__.py | 5 ----- .../components/vacuum/xiaomi_miio.py | 19 +++++++------------ 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/vacuum/__init__.py b/homeassistant/components/vacuum/__init__.py index 6a823b6f14aba8..1808737d2815c1 100644 --- a/homeassistant/components/vacuum/__init__.py +++ b/homeassistant/components/vacuum/__init__.py @@ -68,11 +68,6 @@ STATE_PAUSED = STATE_PAUSED STATE_RETURNING = 'returning' STATE_ERROR = 'error' -STATE_REMOTE = 'remote controlled' -STATE_SPOT_CLEANING = 'spot cleaning' -STATE_GOING_TO_TARGET = 'going to target' -STATE_UPDATING = 'updating' -STATE_ZONED_CLEANING = 'zoned cleaning' DEFAULT_NAME = 'Vacuum cleaner robot' diff --git a/homeassistant/components/vacuum/xiaomi_miio.py b/homeassistant/components/vacuum/xiaomi_miio.py index 1a09531865e296..290c3417149331 100644 --- a/homeassistant/components/vacuum/xiaomi_miio.py +++ b/homeassistant/components/vacuum/xiaomi_miio.py @@ -16,8 +16,7 @@ SUPPORT_RETURN_HOME, SUPPORT_SEND_COMMAND, SUPPORT_STOP, SUPPORT_STATE, SUPPORT_START, VACUUM_SERVICE_SCHEMA, StateVacuumDevice, STATE_CLEANING, STATE_DOCKED, STATE_PAUSED, STATE_IDLE, STATE_RETURNING, - STATE_ERROR, STATE_REMOTE, STATE_SPOT_CLEANING, STATE_GOING_TO_TARGET, - STATE_UPDATING, STATE_ZONED_CLEANING) + STATE_ERROR) from homeassistant.const import ( ATTR_ENTITY_ID, CONF_HOST, CONF_NAME, CONF_TOKEN, STATE_OFF, STATE_ON) import homeassistant.helpers.config_validation as cv @@ -61,8 +60,7 @@ ATTR_RC_DURATION = 'duration' ATTR_RC_ROTATION = 'rotation' ATTR_RC_VELOCITY = 'velocity' -ATTR_RAW_STATE = 'state' -ATTR_RAW_STATE_CODE = 'state_code' +ATTR_STATUS = 'status' SERVICE_SCHEMA_REMOTE_CONTROL = VACUUM_SERVICE_SCHEMA.extend({ vol.Optional(ATTR_RC_VELOCITY): @@ -92,18 +90,16 @@ STATE_CODE_TO_STATE = { 2: STATE_IDLE, 3: STATE_IDLE, - 4: STATE_REMOTE, 5: STATE_CLEANING, 6: STATE_RETURNING, 8: STATE_DOCKED, 9: STATE_ERROR, 10: STATE_PAUSED, - 11: STATE_SPOT_CLEANING, + 11: STATE_CLEANING, 12: STATE_ERROR, - 14: STATE_UPDATING, 15: STATE_RETURNING, - 16: STATE_GOING_TO_TARGET, - 17: STATE_ZONED_CLEANING, + 16: STATE_CLEANING, + 17: STATE_CLEANING, } @@ -245,13 +241,12 @@ def device_state_attributes(self): / 3600), ATTR_SENSOR_DIRTY_LEFT: int( self.consumable_state.sensor_dirty_left.total_seconds() - / 3600) + / 3600), + ATTR_STATUS: str(self.vacuum_state.state) }) if self.vacuum_state.got_error: attrs[ATTR_ERROR] = self.vacuum_state.error - attrs[ATTR_RAW_STATE_CODE] = self.vacuum_state.state_code - attrs[ATTR_RAW_STATE] = self.vacuum_state.state return attrs @property