ShineBridge v1.10.0 — Neuer Geräte-Typ: Growatt ShineWifi-X über bestehende HA-Entity (ESPHome)
Statt selbst per Modbus/UDP zu pollen, kann ShineBridge jetzt einen Wechselrichter einbinden, der bereits per ESPHome nativ in Home Assistant läuft — nützlich für die ShineWifi-X-Variante, die keine eigene Modbus-TCP-Schnittstelle hat. - Neuer ha_entity_client.py: liest Sensor-Werte über die interne Supervisor-API (http://supervisor/core/api), braucht dafür 'homeassistant_api: true' in config.yaml (neu gesetzt — Add-on muss dafür einmal neu installiert werden) - Neuer Geräte-Typ 'GROWATT_WIFI_X' in inverters.py, protocol='ha_entity' - Feste Suffix-Zuordnung (dcpower→pv_power, acpower→ac_power, energytoday→ energy_today, ...) passend zur esphome-growatt-Komponente aus growatt-diagnose-tool/ShineWifi-X — Entity-Id ergibt sich als sensor.<prefix>_<suffix> - Neues Feld 'HA Entity-Prefix' im Geräte-Dialog statt Modbus-IP/Port/Adresse, blendet sich abhängig vom gewählten Gerätetyp ein/aus - Läuft danach durch dieselbe Aggregations-/Dashboard-Logik wie jedes andere Gerät (kein Sonderfall in EMS/Finanzen nötig, da Netzbezug bereits über den bestehenden Zähler erfasst wird — dieser Wechselrichter liefert nur PV-Werte) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@ import history
|
||||
from modbus_client import ModbusReader
|
||||
from goodwe_client import GoodweReader
|
||||
from wallbox_client import WallboxReader
|
||||
from ha_entity_client import HAEntityReader
|
||||
from ems_controller import EmsController
|
||||
from mqtt_publisher import MqttPublisher
|
||||
from surplus_devices import SurplusDeviceController
|
||||
@@ -272,12 +273,16 @@ def _poll_loop(inv_cfg: Dict[str, Any], stop: threading.Event):
|
||||
log.error("[%s] Ungültige Konfiguration: %s", inv_id, e)
|
||||
return
|
||||
|
||||
host = inv_cfg["modbus_ip"]
|
||||
host = inv_cfg.get("modbus_ip", "")
|
||||
ems: Optional[EmsController] = None
|
||||
if inverter.protocol == "goodwe_udp":
|
||||
reader = GoodweReader(host=host, family=inverter.goodwe_family)
|
||||
log.info("[%s] Poll-Loop: %s @ %s (Goodwe UDP/8899) alle %ds",
|
||||
inv_id, inverter.name, host, interval)
|
||||
elif inverter.protocol == "ha_entity":
|
||||
reader = HAEntityReader(entity_prefix=inv_cfg.get("ha_entity_prefix", ""))
|
||||
log.info("[%s] Poll-Loop: %s (HA-Entity Prefix: %s) alle %ds",
|
||||
inv_id, inverter.name, inv_cfg.get("ha_entity_prefix", ""), interval)
|
||||
elif inverter.protocol == "kathrein":
|
||||
reader = WallboxReader(host=host, port=port, timeout=min(5.0, interval * 0.4))
|
||||
ems = EmsController(
|
||||
|
||||
Reference in New Issue
Block a user