From 72a65b6a211262d4690dda5067e9100d5ff4f253 Mon Sep 17 00:00:00 2001 From: Nathan Spencer Date: Fri, 13 May 2022 17:03:25 -0600 Subject: [PATCH] Add last seen and status code diagnostic sensors to litterrobot (#71760) --- .../components/litterrobot/sensor.py | 17 ++++++++++- .../litterrobot/strings.sensor.json | 28 +++++++++++++++++++ .../litterrobot/translations/sensor.en.json | 28 +++++++++++++++++++ .../components/litterrobot/vacuum.py | 3 -- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 homeassistant/components/litterrobot/strings.sensor.json create mode 100644 homeassistant/components/litterrobot/translations/sensor.en.json diff --git a/homeassistant/components/litterrobot/sensor.py b/homeassistant/components/litterrobot/sensor.py index 751d16551c3..01deaa302cf 100644 --- a/homeassistant/components/litterrobot/sensor.py +++ b/homeassistant/components/litterrobot/sensor.py @@ -17,6 +17,7 @@ from homeassistant.components.sensor import ( from homeassistant.config_entries import ConfigEntry from homeassistant.const import PERCENTAGE from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.entity_platform import AddEntitiesCallback from .const import DOMAIN @@ -63,7 +64,9 @@ class LitterRobotSensorEntity(LitterRobotEntity, SensorEntity): def native_value(self) -> StateType | datetime: """Return the state.""" if self.entity_description.should_report(self.robot): - return getattr(self.robot, self.entity_description.key) + if isinstance(val := getattr(self.robot, self.entity_description.key), str): + return val.lower() + return val return None @property @@ -93,6 +96,18 @@ ROBOT_SENSORS = [ device_class=SensorDeviceClass.TIMESTAMP, should_report=lambda robot: robot.sleep_mode_enabled, ), + LitterRobotSensorEntityDescription( + name="Last Seen", + key="last_seen", + device_class=SensorDeviceClass.TIMESTAMP, + entity_category=EntityCategory.DIAGNOSTIC, + ), + LitterRobotSensorEntityDescription( + name="Status Code", + key="status_code", + device_class="litterrobot__status_code", + entity_category=EntityCategory.DIAGNOSTIC, + ), ] diff --git a/homeassistant/components/litterrobot/strings.sensor.json b/homeassistant/components/litterrobot/strings.sensor.json new file mode 100644 index 00000000000..d9ad141cf21 --- /dev/null +++ b/homeassistant/components/litterrobot/strings.sensor.json @@ -0,0 +1,28 @@ +{ + "state": { + "litterrobot__status_code": { + "br": "Bonnet Removed", + "ccc": "Clean Cycle Complete", + "ccp": "Clean Cycle In Progress", + "csf": "Cat Sensor Fault", + "csi": "Cat Sensor Interrupted", + "cst": "Cat Sensor Timing", + "df1": "Drawer Almost Full - 2 Cycles Left", + "df2": "Drawer Almost Full - 1 Cycle Left", + "dfs": "Drawer Full", + "dhf": "Dump + Home Position Fault", + "dpf": "Dump Position Fault", + "ec": "Empty Cycle", + "hpf": "Home Position Fault", + "off": "[%key:common::state::off%]", + "offline": "Offline", + "otf": "Over Torque Fault", + "p": "[%key:common::state::paused%]", + "pd": "Pinch Detect", + "rdy": "Ready", + "scf": "Cat Sensor Fault At Startup", + "sdf": "Drawer Full At Startup", + "spf": "Pinch Detect At Startup" + } + } +} diff --git a/homeassistant/components/litterrobot/translations/sensor.en.json b/homeassistant/components/litterrobot/translations/sensor.en.json new file mode 100644 index 00000000000..5491a6a835f --- /dev/null +++ b/homeassistant/components/litterrobot/translations/sensor.en.json @@ -0,0 +1,28 @@ +{ + "state": { + "litterrobot__status_code": { + "br": "Bonnet Removed", + "ccc": "Clean Cycle Complete", + "ccp": "Clean Cycle In Progress", + "csf": "Cat Sensor Fault", + "csi": "Cat Sensor Interrupted", + "cst": "Cat Sensor Timing", + "df1": "Drawer Almost Full - 2 Cycles Left", + "df2": "Drawer Almost Full - 1 Cycle Left", + "dfs": "Drawer Full", + "dhf": "Dump + Home Position Fault", + "dpf": "Dump Position Fault", + "ec": "Empty Cycle", + "hpf": "Home Position Fault", + "off": "Off", + "offline": "Offline", + "otf": "Over Torque Fault", + "p": "Paused", + "pd": "Pinch Detect", + "rdy": "Ready", + "scf": "Cat Sensor Fault At Startup", + "sdf": "Drawer Full At Startup", + "spf": "Pinch Detect At Startup" + } + } +} \ No newline at end of file diff --git a/homeassistant/components/litterrobot/vacuum.py b/homeassistant/components/litterrobot/vacuum.py index 0d9a2b1dc3d..dbe51270857 100644 --- a/homeassistant/components/litterrobot/vacuum.py +++ b/homeassistant/components/litterrobot/vacuum.py @@ -162,11 +162,8 @@ class LitterRobotCleaner(LitterRobotControlEntity, StateVacuumEntity): def extra_state_attributes(self) -> dict[str, Any]: """Return device specific state attributes.""" return { - "clean_cycle_wait_time_minutes": self.robot.clean_cycle_wait_time_minutes, "is_sleeping": self.robot.is_sleeping, "sleep_mode_enabled": self.robot.sleep_mode_enabled, "power_status": self.robot.power_status, - "status_code": self.robot.status_code, - "last_seen": self.robot.last_seen, "status": self.status, }