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, }