From c74fafa6c058cdc50bd85e8792f2e36b35d39aef Mon Sep 17 00:00:00 2001 From: retr0 <42kdesigners@gmail.com> Date: Sun, 26 Apr 2026 12:24:55 +0200 Subject: [PATCH] =?UTF-8?q?HAOS=20Add-on=20v1.1.2:=20HA-Ger=C3=A4tename=20?= =?UTF-8?q?=3D=20benutzerdefinierter=20Wechselrichtername?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Statt Modell-Name ("Growatt MIC 1500 TL-X") wird der vom User vergebene Name ("Dach Süd") als HA-Gerätename in MQTT Discovery verwendet. Co-Authored-By: Claude Sonnet 4.6 --- haos-addon/config.yaml | 2 +- haos-addon/src/main.py | 3 ++- haos-addon/src/mqtt_publisher.py | 14 +++++++------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/haos-addon/config.yaml b/haos-addon/config.yaml index 537eb07..4e2c622 100644 --- a/haos-addon/config.yaml +++ b/haos-addon/config.yaml @@ -1,5 +1,5 @@ name: Growatt ShineLAN-X -version: "1.1.1" +version: "1.1.2" slug: growatt_shinelan_x description: Growatt Wechselrichter via ShineLAN-X (NuttX Modbus TCP) - MQTT Discovery + Web UI url: https://gitea.bitfire.work/retr0/Growatt-Wechselrichter-HAOS diff --git a/haos-addon/src/main.py b/haos-addon/src/main.py index c8b2760..1b46ff6 100644 --- a/haos-addon/src/main.py +++ b/haos-addon/src/main.py @@ -97,7 +97,8 @@ def _poll_loop(inv_cfg: Dict[str, Any], stop: threading.Event): with State.lock: if _publisher: - _publisher.register_inverter(inverter, device_id, prefix) + _publisher.register_inverter(inverter, device_id, prefix, + inv_cfg.get("name", inverter.name)) log.info("[%s] Poll-Loop: %s @ %s:%s alle %ds", inv_id, inverter.name, inv_cfg["modbus_ip"], diff --git a/haos-addon/src/mqtt_publisher.py b/haos-addon/src/mqtt_publisher.py index 9a2ee0d..1cd3fa6 100644 --- a/haos-addon/src/mqtt_publisher.py +++ b/haos-addon/src/mqtt_publisher.py @@ -27,8 +27,8 @@ class MqttPublisher: if rc == 0: self._connected = True log.info("MQTT verbunden: %s:%d", self._broker, self._port) - for inv, dev_id, prefix in self._registered: - self._publish_discovery(inv, dev_id, prefix) + for entry in self._registered: + self._publish_discovery(*entry) else: log.error("MQTT Verbindungsfehler rc=%d", rc) @@ -51,20 +51,20 @@ class MqttPublisher: def connected(self) -> bool: return self._connected - def register_inverter(self, inverter: Inverter, device_id: str, topic_prefix: str): - entry = (inverter, device_id, topic_prefix) + def register_inverter(self, inverter: Inverter, device_id: str, topic_prefix: str, display_name: str = None): + entry = (inverter, device_id, topic_prefix, display_name) self._registered = [r for r in self._registered if r[1] != device_id] self._registered.append(entry) if self._connected: - self._publish_discovery(inverter, device_id, topic_prefix) + self._publish_discovery(inverter, device_id, topic_prefix, display_name) def unregister_inverter(self, device_id: str): self._registered = [r for r in self._registered if r[1] != device_id] - def _publish_discovery(self, inverter: Inverter, device_id: str, topic_prefix: str): + def _publish_discovery(self, inverter: Inverter, device_id: str, topic_prefix: str, display_name: str = None): device_payload = { "identifiers": [device_id], - "name": f"Growatt {inverter.name}", + "name": display_name or inverter.name, "manufacturer": inverter.manufacturer, "model": inverter.name, }