From 6487398741487673455974daca563d16b2cbe830 Mon Sep 17 00:00:00 2001 From: Tomaae <23486452+tomaae@users.noreply.github.com> Date: Thu, 1 May 2025 11:21:10 +0200 Subject: [PATCH] Reworked scripts to buttons only, fixes #414 --- custom_components/mikrotik_router/__init__.py | 7 +----- custom_components/mikrotik_router/button.py | 8 +++++-- custom_components/mikrotik_router/const.py | 2 -- .../mikrotik_router/coordinator.py | 23 ------------------- .../mikrotik_router/services.yaml | 10 +------- 5 files changed, 8 insertions(+), 42 deletions(-) diff --git a/custom_components/mikrotik_router/__init__.py b/custom_components/mikrotik_router/__init__.py index 3f13d3a..9b3e78c 100644 --- a/custom_components/mikrotik_router/__init__.py +++ b/custom_components/mikrotik_router/__init__.py @@ -12,7 +12,7 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_VERIFY_SSL -from .const import PLATFORMS, DOMAIN, RUN_SCRIPT_COMMAND, DEFAULT_VERIFY_SSL +from .const import PLATFORMS, DOMAIN, DEFAULT_VERIFY_SSL from .coordinator import MikrotikData, MikrotikCoordinator, MikrotikTrackerCoordinator SCRIPT_SCHEMA = vol.Schema( @@ -40,10 +40,6 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b config_entry.async_on_unload(config_entry.add_update_listener(async_reload_entry)) - hass.services.async_register( - DOMAIN, RUN_SCRIPT_COMMAND, coordinator.run_script, schema=SCRIPT_SCHEMA - ) - return True @@ -64,7 +60,6 @@ async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> if unload_ok := await hass.config_entries.async_unload_platforms( config_entry, PLATFORMS ): - hass.services.async_remove(DOMAIN, RUN_SCRIPT_COMMAND) hass.data[DOMAIN].pop(config_entry.entry_id) return unload_ok diff --git a/custom_components/mikrotik_router/button.py b/custom_components/mikrotik_router/button.py index f2f7c06..ffa9fea 100644 --- a/custom_components/mikrotik_router/button.py +++ b/custom_components/mikrotik_router/button.py @@ -14,6 +14,7 @@ from .button_types import ( SENSOR_TYPES, SENSOR_SERVICES, ) +from .exceptions import ApiEntryNotFound _LOGGER = getLogger(__name__) @@ -54,5 +55,8 @@ class MikrotikScriptButton(MikrotikButton): """Representation of a script button.""" async def async_press(self) -> None: - """Process the button press.""" - self.coordinator.run_script(self._data["name"]) + """Run script using Mikrotik API""" + try: + self.coordinator.api.run_script(self._data["name"]) + except ApiEntryNotFound as error: + _LOGGER.error("Failed to run script: %s", error) diff --git a/custom_components/mikrotik_router/const.py b/custom_components/mikrotik_router/const.py index 163572e..6b79b15 100644 --- a/custom_components/mikrotik_router/const.py +++ b/custom_components/mikrotik_router/const.py @@ -15,8 +15,6 @@ DOMAIN = "mikrotik_router" DEFAULT_NAME = "Mikrotik Router" ATTRIBUTION = "Data provided by Mikrotik" -RUN_SCRIPT_COMMAND = "run_script" - DEFAULT_ENCODING = "ISO-8859-1" DEFAULT_LOGIN_METHOD = "plain" diff --git a/custom_components/mikrotik_router/coordinator.py b/custom_components/mikrotik_router/coordinator.py index 5d2fea2..69263be 100644 --- a/custom_components/mikrotik_router/coordinator.py +++ b/custom_components/mikrotik_router/coordinator.py @@ -64,7 +64,6 @@ from .const import ( CONF_SENSOR_NETWATCH_TRACKER, DEFAULT_SENSOR_NETWATCH_TRACKER, ) -from .exceptions import ApiEntryNotFound from .apiparser import parse_api from .mikrotikapi import MikrotikAPI @@ -463,28 +462,6 @@ class MikrotikCoordinator(DataUpdateCoordinator[None]): """Change value using Mikrotik API""" return self.api.execute(path, command, param, value, attributes) - # --------------------------- - # run_script - # --------------------------- - def run_script(self, name): - """Run script using Mikrotik API""" - if type(name) != str: - if "router" not in name.data: - return - - if self.config_entry.data["name"] != name.data.get("router"): - return - - if "script" in name.data: - name = name.data.get("script") - else: - return - - try: - self.api.run_script(name) - except ApiEntryNotFound as error: - _LOGGER.error("Failed to run script: %s", error) - # --------------------------- # get_capabilities # --------------------------- diff --git a/custom_components/mikrotik_router/services.yaml b/custom_components/mikrotik_router/services.yaml index d318823..ed97d53 100644 --- a/custom_components/mikrotik_router/services.yaml +++ b/custom_components/mikrotik_router/services.yaml @@ -1,9 +1 @@ -run_script: - description: Run script on Mikrotik - fields: - router: - description: Name of the router - example: "Mikrotik" - script: - description: Name of the script - example: "MyScript" \ No newline at end of file +---