diff --git a/custom_components/mikrotik_router/button.py b/custom_components/mikrotik_router/button.py index 9852651..b6451ac 100644 --- a/custom_components/mikrotik_router/button.py +++ b/custom_components/mikrotik_router/button.py @@ -1,33 +1,36 @@ """Support for the Mikrotik Router buttons.""" +from __future__ import annotations + +from logging import getLogger -import logging from homeassistant.components.button import ButtonEntity -from .entity import model_async_setup_entry, MikrotikEntity +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from .entity import MikrotikEntity, async_add_entities from .button_types import ( SENSOR_TYPES, SENSOR_SERVICES, ) -_LOGGER = logging.getLogger(__name__) +_LOGGER = getLogger(__name__) # --------------------------- # async_setup_entry # --------------------------- -async def async_setup_entry(hass, config_entry, async_add_entities): +async def async_setup_entry( + hass: HomeAssistant, + config_entry: ConfigEntry, + _async_add_entities: AddEntitiesCallback, +) -> None: """Set up entry for component""" dispatcher = { "MikrotikButton": MikrotikButton, "MikrotikScriptButton": MikrotikScriptButton, } - await model_async_setup_entry( - hass, - config_entry, - async_add_entities, - SENSOR_SERVICES, - SENSOR_TYPES, - dispatcher, - ) + await async_add_entities(hass, config_entry, dispatcher) # --------------------------- @@ -51,5 +54,4 @@ class MikrotikScriptButton(MikrotikButton): async def async_press(self) -> None: """Process the button press.""" - self._ctrl.run_script(self._data["name"]) - await self._ctrl.force_update() + self.coordinator.run_script(self._data["name"]) diff --git a/custom_components/mikrotik_router/button_types.py b/custom_components/mikrotik_router/button_types.py index 6529d20..38f8aaf 100644 --- a/custom_components/mikrotik_router/button_types.py +++ b/custom_components/mikrotik_router/button_types.py @@ -1,11 +1,14 @@ """Definitions for Mikrotik Router button entities.""" +from __future__ import annotations + from dataclasses import dataclass, field from typing import List + from homeassistant.components.sensor import ( SensorEntityDescription, ) -from .const import DOMAIN +from .const import DOMAIN DEVICE_ATTRIBUTES_SCRIPT = [ "last-started", @@ -17,21 +20,21 @@ DEVICE_ATTRIBUTES_SCRIPT = [ class MikrotikButtonEntityDescription(SensorEntityDescription): """Class describing mikrotik entities.""" - ha_group: str = "" - ha_connection: str = "" - ha_connection_value: str = "" - data_path: str = "" - data_attribute: str = "" - data_name: str = "" + ha_group: str | None = None + ha_connection: str | None = None + ha_connection_value: str | None = None + data_path: str | None = None + data_attribute: str | None = None + data_name: str | None = None data_name_comment: bool = False - data_uid: str = "" - data_reference: str = "" + data_uid: str | None = None + data_reference: str | None = None data_attributes_list: List = field(default_factory=lambda: []) func: str = "MikrotikButton" -SENSOR_TYPES = { - "script": MikrotikButtonEntityDescription( +SENSOR_TYPES: tuple[MikrotikButtonEntityDescription, ...] = ( + MikrotikButtonEntityDescription( key="script", name="", icon="mdi:script-text-outline", @@ -47,6 +50,6 @@ SENSOR_TYPES = { data_attributes_list=DEVICE_ATTRIBUTES_SCRIPT, func="MikrotikScriptButton", ), -} +) SENSOR_SERVICES = {} diff --git a/custom_components/mikrotik_router/const.py b/custom_components/mikrotik_router/const.py index 5c78372..7d8c779 100644 --- a/custom_components/mikrotik_router/const.py +++ b/custom_components/mikrotik_router/const.py @@ -6,7 +6,7 @@ PLATFORMS = [ Platform.BINARY_SENSOR, # Platform.DEVICE_TRACKER, Platform.SWITCH, - # Platform.BUTTON, + Platform.BUTTON, Platform.UPDATE, ] diff --git a/custom_components/mikrotik_router/sensor_types.py b/custom_components/mikrotik_router/sensor_types.py index 19cf193..d5d2e72 100644 --- a/custom_components/mikrotik_router/sensor_types.py +++ b/custom_components/mikrotik_router/sensor_types.py @@ -20,6 +20,7 @@ from homeassistant.const import ( UnitOfElectricPotential, UnitOfPower, ) + from .const import DOMAIN DEVICE_ATTRIBUTES_IFACE = [