Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c787349e3 | ||
|
|
1b78857b3d |
@@ -1,5 +1,5 @@
|
|||||||
name: ShineBridge
|
name: ShineBridge
|
||||||
version: "1.10.0"
|
version: "1.10.2"
|
||||||
slug: shinebridge
|
slug: shinebridge
|
||||||
description: Energiemanagement für Growatt/Goodwe-Wechselrichter — PV-Überschussladen, Wallbox-EMS, Tarifvergleich, Zigbee2MQTT-Überschussgeräte
|
description: Energiemanagement für Growatt/Goodwe-Wechselrichter — PV-Überschussladen, Wallbox-EMS, Tarifvergleich, Zigbee2MQTT-Überschussgeräte
|
||||||
url: https://gitea.bitfire.work/retr0/shinebridge
|
url: https://gitea.bitfire.work/retr0/shinebridge
|
||||||
|
|||||||
@@ -38,6 +38,9 @@ class HAEntityReader:
|
|||||||
def __init__(self, entity_prefix: str):
|
def __init__(self, entity_prefix: str):
|
||||||
self.entity_prefix = entity_prefix
|
self.entity_prefix = entity_prefix
|
||||||
self.token = os.environ.get("SUPERVISOR_TOKEN", "")
|
self.token = os.environ.get("SUPERVISOR_TOKEN", "")
|
||||||
|
if not self.token:
|
||||||
|
related = [k for k in os.environ if "TOKEN" in k.upper() or "SUPERVISOR" in k.upper() or "HASSIO" in k.upper()]
|
||||||
|
log.warning("[HA-Entity] SUPERVISOR_TOKEN nicht gesetzt. Verwandte Env-Vars gefunden: %s", related or "keine")
|
||||||
|
|
||||||
def read(self, inverter=None) -> Optional[Dict[str, float]]:
|
def read(self, inverter=None) -> Optional[Dict[str, float]]:
|
||||||
if not self.entity_prefix:
|
if not self.entity_prefix:
|
||||||
|
|||||||
+10
-3
@@ -837,10 +837,17 @@ def api_import_config():
|
|||||||
if not isinstance(inverters, list):
|
if not isinstance(inverters, list):
|
||||||
return jsonify({"error": "inverters ungültig"}), 400
|
return jsonify({"error": "inverters ungültig"}), 400
|
||||||
for inv in inverters:
|
for inv in inverters:
|
||||||
if not inv.get("modbus_ip"):
|
model_id = inv.get("inverter_model")
|
||||||
|
if model_id not in INVERTERS:
|
||||||
|
return jsonify({"error": f"Unbekanntes Modell: {model_id}"}), 400
|
||||||
|
protocol = INVERTERS[model_id].protocol
|
||||||
|
# modbus_ip wird als generisches Host-Feld fuer alle IP-basierten Protokolle
|
||||||
|
# wiederverwendet (modbus, goodwe_udp, kathrein) — nur ha_entity braucht keins.
|
||||||
|
if protocol == "ha_entity":
|
||||||
|
if not inv.get("ha_entity_prefix"):
|
||||||
|
return jsonify({"error": f"ha_entity_prefix fehlt in Gerät {inv.get('name', '?')}"}), 400
|
||||||
|
elif not inv.get("modbus_ip"):
|
||||||
return jsonify({"error": f"modbus_ip fehlt in Gerät {inv.get('name', '?')}"}), 400
|
return jsonify({"error": f"modbus_ip fehlt in Gerät {inv.get('name', '?')}"}), 400
|
||||||
if inv.get("inverter_model") not in INVERTERS:
|
|
||||||
return jsonify({"error": f"Unbekanntes Modell: {inv.get('inverter_model')}"}), 400
|
|
||||||
|
|
||||||
with State.lock:
|
with State.lock:
|
||||||
if mqtt := data.get("mqtt"):
|
if mqtt := data.get("mqtt"):
|
||||||
|
|||||||
Reference in New Issue
Block a user