From 8b56e28838e21888350c9f27b3d707619bb9f7f9 Mon Sep 17 00:00:00 2001 From: Massimiliano Cannarozzo Date: Tue, 8 Aug 2023 14:35:41 +0200 Subject: [PATCH] Add neato dismiss alert button (#97572) * Bump pybotvac * Add neato dismiss alert button * fixup! Add neato dismiss alert button * fixup! Add neato dismiss alert button Co-authored-by: Joost Lekkerkerker * fixup! Add neato dismiss alert button Co-authored-by: Joost Lekkerkerker * fixup! Add neato dismiss alert button * fixup! Add neato dismiss alert button * fixup! Add neato dismiss alert button Co-authored-by: G Johansson * fixup! Add neato dismiss alert button Co-authored-by: G Johansson * fixup! Add neato dismiss alert button * fixup! Add neato dismiss alert button --------- Co-authored-by: Joost Lekkerkerker Co-authored-by: G Johansson --- .coveragerc | 1 + homeassistant/components/neato/__init__.py | 8 +++- homeassistant/components/neato/button.py | 42 ++++++++++++++++++++ homeassistant/components/neato/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 6 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 homeassistant/components/neato/button.py diff --git a/.coveragerc b/.coveragerc index 01e1d0d3b0e..2e35001ee14 100644 --- a/.coveragerc +++ b/.coveragerc @@ -772,6 +772,7 @@ omit = homeassistant/components/neato/sensor.py homeassistant/components/neato/switch.py homeassistant/components/neato/vacuum.py + homeassistant/components/neato/button.py homeassistant/components/nederlandse_spoorwegen/sensor.py homeassistant/components/netdata/sensor.py homeassistant/components/netgear/__init__.py diff --git a/homeassistant/components/neato/__init__.py b/homeassistant/components/neato/__init__.py index 4daa7e5b14d..52bc841f3b5 100644 --- a/homeassistant/components/neato/__init__.py +++ b/homeassistant/components/neato/__init__.py @@ -40,7 +40,13 @@ CONFIG_SCHEMA = vol.Schema( extra=vol.ALLOW_EXTRA, ) -PLATFORMS = [Platform.CAMERA, Platform.VACUUM, Platform.SWITCH, Platform.SENSOR] +PLATFORMS = [ + Platform.CAMERA, + Platform.VACUUM, + Platform.SWITCH, + Platform.SENSOR, + Platform.BUTTON, +] async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: diff --git a/homeassistant/components/neato/button.py b/homeassistant/components/neato/button.py new file mode 100644 index 00000000000..f215bbe7225 --- /dev/null +++ b/homeassistant/components/neato/button.py @@ -0,0 +1,42 @@ +"""Support for Neato buttons.""" +from __future__ import annotations + +from pybotvac import Robot + +from homeassistant.components.button import ButtonEntity +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import EntityCategory +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity import DeviceInfo +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from .const import NEATO_DOMAIN, NEATO_ROBOTS + + +async def async_setup_entry( + hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: + """Set up Neato button from config entry.""" + entities = [NeatoDismissAlertButton(robot) for robot in hass.data[NEATO_ROBOTS]] + + async_add_entities(entities, True) + + +class NeatoDismissAlertButton(ButtonEntity): + """Representation of a dismiss_alert button entity.""" + + _attr_entity_category = EntityCategory.CONFIG + + def __init__( + self, + robot: Robot, + ) -> None: + """Initialize a dismiss_alert Neato button entity.""" + self.robot = robot + self._attr_name = f"{robot.name} Dismiss Alert" + self._attr_unique_id = f"{robot.serial}_dismiss_alert" + self._attr_device_info = DeviceInfo(identifiers={(NEATO_DOMAIN, robot.serial)}) + + async def async_press(self) -> None: + """Press the button.""" + await self.hass.async_add_executor_job(self.robot.dismiss_current_alert) diff --git a/homeassistant/components/neato/manifest.json b/homeassistant/components/neato/manifest.json index 654a57ab2bb..5222ec938c8 100644 --- a/homeassistant/components/neato/manifest.json +++ b/homeassistant/components/neato/manifest.json @@ -7,5 +7,5 @@ "documentation": "https://www.home-assistant.io/integrations/neato", "iot_class": "cloud_polling", "loggers": ["pybotvac"], - "requirements": ["pybotvac==0.0.23"] + "requirements": ["pybotvac==0.0.24"] } diff --git a/requirements_all.txt b/requirements_all.txt index 30281d1accd..1aac3651bc8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1584,7 +1584,7 @@ pybbox==0.0.5-alpha pyblackbird==0.6 # homeassistant.components.neato -pybotvac==0.0.23 +pybotvac==0.0.24 # homeassistant.components.braviatv pybravia==0.3.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 880e6e15684..9736a8d176a 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1187,7 +1187,7 @@ pybalboa==1.0.1 pyblackbird==0.6 # homeassistant.components.neato -pybotvac==0.0.23 +pybotvac==0.0.24 # homeassistant.components.braviatv pybravia==0.3.3