From b1202ab31f714e64e052f4ef419847c6a49a253b Mon Sep 17 00:00:00 2001 From: Quentame Date: Mon, 24 Oct 2022 09:33:59 +0200 Subject: [PATCH] Add Freebox button to mark calls as read (#80609) * Add Freebox button to mark calls as read * Bump Freebox to 1.0.1 * Fix black/flake8 * Add entity_category + fix reboot button name * Add has_entity_name to reboot * Remove 'missed' as it put all calls as read * base unique_id on key and not name * unique_id base on key later with migration step * Keep the same name Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> --- homeassistant/components/freebox/button.py | 9 ++++++++- homeassistant/components/freebox/manifest.json | 2 +- homeassistant/components/freebox/router.py | 6 ++++++ requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/freebox/button.py b/homeassistant/components/freebox/button.py index b3313bba9dd..69fa10ff268 100644 --- a/homeassistant/components/freebox/button.py +++ b/homeassistant/components/freebox/button.py @@ -11,7 +11,7 @@ from homeassistant.components.button import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.helpers.entity import DeviceInfo +from homeassistant.helpers.entity import DeviceInfo, EntityCategory from homeassistant.helpers.entity_platform import AddEntitiesCallback from .const import DOMAIN @@ -37,8 +37,15 @@ BUTTON_DESCRIPTIONS: tuple[FreeboxButtonEntityDescription, ...] = ( key="reboot", name="Reboot Freebox", device_class=ButtonDeviceClass.RESTART, + entity_category=EntityCategory.CONFIG, async_press=lambda router: router.reboot(), ), + FreeboxButtonEntityDescription( + key="mark_calls_as_read", + name="Mark calls as read", + entity_category=EntityCategory.DIAGNOSTIC, + async_press=lambda router: router.call.mark_calls_log_as_read(), + ), ) diff --git a/homeassistant/components/freebox/manifest.json b/homeassistant/components/freebox/manifest.json index a6d21bb635f..44d9b47557c 100644 --- a/homeassistant/components/freebox/manifest.json +++ b/homeassistant/components/freebox/manifest.json @@ -3,7 +3,7 @@ "name": "Freebox", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/freebox", - "requirements": ["freebox-api==1.0.0"], + "requirements": ["freebox-api==1.0.1"], "zeroconf": ["_fbx-api._tcp.local."], "codeowners": ["@hacf-fr", "@Quentame"], "iot_class": "local_polling", diff --git a/homeassistant/components/freebox/router.py b/homeassistant/components/freebox/router.py index ce4d03aae7a..0fb0f10a27d 100644 --- a/homeassistant/components/freebox/router.py +++ b/homeassistant/components/freebox/router.py @@ -9,6 +9,7 @@ from pathlib import Path from typing import Any from freebox_api import Freepybox +from freebox_api.api.call import Call from freebox_api.api.wifi import Wifi from freebox_api.exceptions import NotOpenError @@ -186,6 +187,11 @@ class FreeboxRouter: """Return sensors.""" return {**self.sensors_temperature, **self.sensors_connection} + @property + def call(self) -> Call: + """Return the call.""" + return self._api.call + @property def wifi(self) -> Wifi: """Return the wifi.""" diff --git a/requirements_all.txt b/requirements_all.txt index b0470e124f9..ba49cdaa59e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -709,7 +709,7 @@ forecast_solar==2.2.0 fortiosapi==1.0.5 # homeassistant.components.freebox -freebox-api==1.0.0 +freebox-api==1.0.1 # homeassistant.components.free_mobile freesms==0.2.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index fac773bf328..169574d8d0e 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -528,7 +528,7 @@ foobot_async==1.0.0 forecast_solar==2.2.0 # homeassistant.components.freebox -freebox-api==1.0.0 +freebox-api==1.0.1 # homeassistant.components.fritz # homeassistant.components.fritzbox_callmonitor