From 3101894ab503d1056c1469e86b7e6f3c0ae868d0 Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Fri, 20 Feb 2026 02:08:04 +0300 Subject: [PATCH] HAOS: add server name field to config flow Allows users to specify a custom display name when adding the integration, replacing the hardcoded "LED Screen Controller" title. Co-Authored-By: Claude Opus 4.6 --- custom_components/wled_screen_controller/__init__.py | 4 +++- custom_components/wled_screen_controller/config_flow.py | 7 +++++-- custom_components/wled_screen_controller/const.py | 1 + custom_components/wled_screen_controller/strings.json | 2 ++ .../wled_screen_controller/translations/en.json | 2 ++ .../wled_screen_controller/translations/ru.json | 2 ++ 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/custom_components/wled_screen_controller/__init__.py b/custom_components/wled_screen_controller/__init__.py index 0831567..6f8fe63 100644 --- a/custom_components/wled_screen_controller/__init__.py +++ b/custom_components/wled_screen_controller/__init__.py @@ -12,6 +12,7 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession from .const import ( DOMAIN, + CONF_SERVER_NAME, CONF_SERVER_URL, CONF_API_KEY, DEFAULT_SCAN_INTERVAL, @@ -36,6 +37,7 @@ PLATFORMS: list[Platform] = [ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up LED Screen Controller from a config entry.""" + server_name = entry.data.get(CONF_SERVER_NAME, "LED Screen Controller") server_url = entry.data[CONF_SERVER_URL] api_key = entry.data[CONF_API_KEY] @@ -70,7 +72,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: config_entry_id=entry.entry_id, identifiers={(DOMAIN, target_id)}, name=info.get("name", target_id), - manufacturer="LED Screen Controller", + manufacturer=server_name, model=model, configuration_url=server_url, ) diff --git a/custom_components/wled_screen_controller/config_flow.py b/custom_components/wled_screen_controller/config_flow.py index 08cdff5..1be5083 100644 --- a/custom_components/wled_screen_controller/config_flow.py +++ b/custom_components/wled_screen_controller/config_flow.py @@ -13,12 +13,13 @@ from homeassistant.core import HomeAssistant from homeassistant.data_entry_flow import FlowResult from homeassistant.helpers.aiohttp_client import async_get_clientsession -from .const import DOMAIN, CONF_SERVER_URL, CONF_API_KEY, DEFAULT_TIMEOUT +from .const import DOMAIN, CONF_SERVER_NAME, CONF_SERVER_URL, CONF_API_KEY, DEFAULT_TIMEOUT _LOGGER = logging.getLogger(__name__) STEP_USER_DATA_SCHEMA = vol.Schema( { + vol.Optional(CONF_SERVER_NAME, default="LED Screen Controller"): str, vol.Required(CONF_SERVER_URL, default="http://localhost:8080"): str, vol.Required(CONF_API_KEY): str, } @@ -87,6 +88,7 @@ class WLEDScreenControllerConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): errors: dict[str, str] = {} if user_input is not None: + server_name = user_input.get(CONF_SERVER_NAME, "LED Screen Controller") server_url = normalize_url(user_input[CONF_SERVER_URL].rstrip("/")) api_key = user_input[CONF_API_KEY] @@ -97,8 +99,9 @@ class WLEDScreenControllerConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): self._abort_if_unique_id_configured() return self.async_create_entry( - title="LED Screen Controller", + title=server_name, data={ + CONF_SERVER_NAME: server_name, CONF_SERVER_URL: server_url, CONF_API_KEY: api_key, }, diff --git a/custom_components/wled_screen_controller/const.py b/custom_components/wled_screen_controller/const.py index c5a3a61..1c90836 100644 --- a/custom_components/wled_screen_controller/const.py +++ b/custom_components/wled_screen_controller/const.py @@ -3,6 +3,7 @@ DOMAIN = "wled_screen_controller" # Configuration +CONF_SERVER_NAME = "server_name" CONF_SERVER_URL = "server_url" CONF_API_KEY = "api_key" diff --git a/custom_components/wled_screen_controller/strings.json b/custom_components/wled_screen_controller/strings.json index 7f8d0c6..3f9bc8e 100644 --- a/custom_components/wled_screen_controller/strings.json +++ b/custom_components/wled_screen_controller/strings.json @@ -5,10 +5,12 @@ "title": "Set up LED Screen Controller", "description": "Enter the URL and API key for your LED Screen Controller server.", "data": { + "server_name": "Server Name", "server_url": "Server URL", "api_key": "API Key" }, "data_description": { + "server_name": "Display name for this server in Home Assistant", "server_url": "URL of your LED Screen Controller server (e.g., http://192.168.1.100:8080)", "api_key": "API key from your server's configuration file" } diff --git a/custom_components/wled_screen_controller/translations/en.json b/custom_components/wled_screen_controller/translations/en.json index 7f8d0c6..3f9bc8e 100644 --- a/custom_components/wled_screen_controller/translations/en.json +++ b/custom_components/wled_screen_controller/translations/en.json @@ -5,10 +5,12 @@ "title": "Set up LED Screen Controller", "description": "Enter the URL and API key for your LED Screen Controller server.", "data": { + "server_name": "Server Name", "server_url": "Server URL", "api_key": "API Key" }, "data_description": { + "server_name": "Display name for this server in Home Assistant", "server_url": "URL of your LED Screen Controller server (e.g., http://192.168.1.100:8080)", "api_key": "API key from your server's configuration file" } diff --git a/custom_components/wled_screen_controller/translations/ru.json b/custom_components/wled_screen_controller/translations/ru.json index b00c895..dec1cf2 100644 --- a/custom_components/wled_screen_controller/translations/ru.json +++ b/custom_components/wled_screen_controller/translations/ru.json @@ -5,10 +5,12 @@ "title": "Настройка LED Screen Controller", "description": "Введите URL и API-ключ вашего сервера LED Screen Controller.", "data": { + "server_name": "Имя сервера", "server_url": "URL сервера", "api_key": "API-ключ" }, "data_description": { + "server_name": "Отображаемое имя сервера в Home Assistant", "server_url": "URL сервера LED Screen Controller (например, http://192.168.1.100:8080)", "api_key": "API-ключ из конфигурационного файла сервера" }