HAOS Add-on v1.1.2: HA-Gerätename = benutzerdefinierter Wechselrichtername
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 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
name: Growatt ShineLAN-X
|
name: Growatt ShineLAN-X
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
slug: growatt_shinelan_x
|
slug: growatt_shinelan_x
|
||||||
description: Growatt Wechselrichter via ShineLAN-X (NuttX Modbus TCP) - MQTT Discovery + Web UI
|
description: Growatt Wechselrichter via ShineLAN-X (NuttX Modbus TCP) - MQTT Discovery + Web UI
|
||||||
url: https://gitea.bitfire.work/retr0/Growatt-Wechselrichter-HAOS
|
url: https://gitea.bitfire.work/retr0/Growatt-Wechselrichter-HAOS
|
||||||
|
|||||||
@@ -97,7 +97,8 @@ def _poll_loop(inv_cfg: Dict[str, Any], stop: threading.Event):
|
|||||||
|
|
||||||
with State.lock:
|
with State.lock:
|
||||||
if _publisher:
|
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",
|
log.info("[%s] Poll-Loop: %s @ %s:%s alle %ds",
|
||||||
inv_id, inverter.name, inv_cfg["modbus_ip"],
|
inv_id, inverter.name, inv_cfg["modbus_ip"],
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ class MqttPublisher:
|
|||||||
if rc == 0:
|
if rc == 0:
|
||||||
self._connected = True
|
self._connected = True
|
||||||
log.info("MQTT verbunden: %s:%d", self._broker, self._port)
|
log.info("MQTT verbunden: %s:%d", self._broker, self._port)
|
||||||
for inv, dev_id, prefix in self._registered:
|
for entry in self._registered:
|
||||||
self._publish_discovery(inv, dev_id, prefix)
|
self._publish_discovery(*entry)
|
||||||
else:
|
else:
|
||||||
log.error("MQTT Verbindungsfehler rc=%d", rc)
|
log.error("MQTT Verbindungsfehler rc=%d", rc)
|
||||||
|
|
||||||
@@ -51,20 +51,20 @@ class MqttPublisher:
|
|||||||
def connected(self) -> bool:
|
def connected(self) -> bool:
|
||||||
return self._connected
|
return self._connected
|
||||||
|
|
||||||
def register_inverter(self, inverter: Inverter, device_id: str, topic_prefix: str):
|
def register_inverter(self, inverter: Inverter, device_id: str, topic_prefix: str, display_name: str = None):
|
||||||
entry = (inverter, device_id, topic_prefix)
|
entry = (inverter, device_id, topic_prefix, display_name)
|
||||||
self._registered = [r for r in self._registered if r[1] != device_id]
|
self._registered = [r for r in self._registered if r[1] != device_id]
|
||||||
self._registered.append(entry)
|
self._registered.append(entry)
|
||||||
if self._connected:
|
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):
|
def unregister_inverter(self, device_id: str):
|
||||||
self._registered = [r for r in self._registered if r[1] != device_id]
|
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 = {
|
device_payload = {
|
||||||
"identifiers": [device_id],
|
"identifiers": [device_id],
|
||||||
"name": f"Growatt {inverter.name}",
|
"name": display_name or inverter.name,
|
||||||
"manufacturer": inverter.manufacturer,
|
"manufacturer": inverter.manufacturer,
|
||||||
"model": inverter.name,
|
"model": inverter.name,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user