Hallo,
ich habe den Thread von mhauser vor 14 Tagen gelesen und würde da gerne anknüpfen.
Während der ersten Gehversuche fehlte die Unterstützung der lokalen Geräte. Ich komme zwar mit dem Sunspec PV ein Stück weit, es scheitert aber immer an Details der Kombination aus PV und Batterie im gleichen Wechselrichter.
Das Forum durchsuchend habe ich ein paar Implementierungen versucht, mit dem Ziel den Plenticore mit PV und Battery als All-in-One Hybrid-WR darzustellen. Die Implementierungen von SMA/Solaredge und GoodWe und andere beachtend (aber nach einigen Stunden letztlich noch nicht vollständig verstehend), versuchte ich eine Implementierung mit den Klassen EssDcCharger, HybridEss, ManagedSymmetricEss, SymmetricEss.
Ich kann alle scheinbar alle nötigen Werte unterbringen und gepaart mit einer “invertierten” Sunspec Implementierung (Modell 203) des KSEM als Meter zeigt auch das UI einen Großteil der Daten inzwischen richtig an. Leider wird die PV Leistung nicht als PV Leistung gewertet - sondern als Batterieleistung im UI dargestellt, obwohl ich versucht habe, die Kanäle richtig(?) zuzuordnen.
So gibt es Modbus-Register für:
SymmetricEss.ChannelId.ACTIVE_POWER - > Total AC active power (in W)
SymmetricEss.ChannelId.SOC,
SymmetricEss.ChannelId.MAX_APPARENT_POWER
HybridEss.ChannelId.DC_DISCHARGE_POWER → Actual battery charge/discharge power (in W),
EssDcCharger.ChannelId.ACTUAL_POWER → Total DC power (sum of all PV inputs) (in W),
Ich würde auch die Entladungsleistung der Batterie später steuern wollen. Die Werte für die Controller und die Diagramme sehen für’s Erste recht stimmig aus.
Die Implementierung erfolgt per spezifischer Modbus-Register des Wechselrichters, da per SUNSPEC-only auch SUNSPEC Modell 160 (MPTT) benötigt würde. Das konnte ich nicht als Implementierung finden?
Vielleicht braucht es einen anderen Ansatz? Versuche mit einem HybridManagedSymmetricBatteryInverter waren an anderer Stelle nicht erfolgreich.
So richtig weiß ich noch nicht, wie die Implementierung erfolgen soll und ob das zum Ziel führt. Eigentlich müsste das alles per SUNSPEC und einer geschicken Wiederverwendung von “Generic” Implementierungen auch klappen, dafür fehlt mir aktuell noch das Verständnis.
Ich wäre für einen Tipp dankbar, wieso die Zuordnung der PV Energie zur Produktion nicht gelingt - und wie dies aufzulösen wäre, nachdem die Werte eigentlich alle vorliegen sollten.
Hallo,
den Thread habe ich gemeint (hätte den Link nehmen sollen…). Das war mein erster Versuch, so richtig passte der Energiefluss aber nicht in allen Bedingungen.
Dann habe ich mich auf eine falsche Fährte bringen lassen durch den HybridSymmetricManaged… ein all-in-one Device definieren zu können?
Muss es zwei Implementierungen mit Verknüpfungen geben, um die Flüsse richtig darzustellen? Beispiel wäre Kaco Hybrid (und auch GoodWe?!): Core Ess + Charger?
Den BydContainer hatte ich mir auch mal angesehen… ich schau nochmal rein.
Ich glaub, ich brauch‘ nur einen Schubs, damit ich die nötigen Klassen in ihren Möglichkeiten/Bedingungen besser verwenden kann, und ich sicherer in der Struktur der verfügbaren Klassen bleibe.
Eine Schwierigkeit besteht darin, die weiteren Werte des Wechselrichters dem richtigen Gerät zuzuordnen. Noch bin ich aber auch nicht im Klaren darüber, wofür die Angaben nötig sind, bzw. für welche Funktionen die genutzt werden würden, die im Kontext sinnvoll sind.
Die bestehende Implementierung des Kostal PV-Inverters liefert summiert auch die Batterieleistung wegen des genutzten Sunspec-Modells, daher scheint es nötig, den PV-Inverter als Hybrid-Inverter neu zu implementieren.
Die Leistungswerte werden richtig berechnet und die Grafiken sehen auch richtig aus.
Was (noch) nicht gelingt ist die Berechnung der Ladeleistung durch die Controller - hier fehlt mir der Einstieg aktuell. Der Balancing-Controller zwischen ess0 und meter0 berechnet die notwendige Entlade-/Ladeleistung des (Batterie-)Inverters nicht. Ich denke, hier fehlt aber auch noch das Verständnis meinerseits…
Das steht ja schon ganz schick aus. Magst du deinen Code teilen? Dann würde ich mal reinschauen. Hört sich für mich erstmal danach an, als ob Werte nicht richtig durchgereicht werden. Die controller wie zb der balancing controller sollten eigentlich nur über das ess steuern und die spezifische Inverter Einbindung sollte hier keinen Einfluss auf den Controller haben
Hallo,
irgendwas hält den Balancing Controller auf, den richtigen Wert an das ESS zu übergeben.
Ich habe das Gefühl hängt mit den Grenzen (min/max) zusammen, da er immer an der maximalen Discharge-Leistung hängen bleibt. Füge ich andere Controller zur Probe hinzu, wird die Leistung nicht richtig summiert. Ich glaube die notwendigen Parameter für den BalancingCtrl nicht richtig zu belegen. Nötig waren MAX_APPARANT_POWER und ALLOWED_CHARGE/DISCHARGE? Ich hatte diese nicht berechnet, sondern die HW-Grenzen des WR genutzt, gedacht aber eigentlich im Sinne von Constraints. Muss mir vielleicht mal den Code des Controllers ansehen…
Eine verbleibende Baustelle wäre noch eine Implementierung als EssDcCharger, da machen mir der richtige Energiefluss und die Zusammenhänge noch Probleme - die aktuelle Implementierung scheint diesbezüglich vorerst ok zu sein. Zwischenziel wäre die richtige Übergabe der Leistung an das ESS.
Hallo,
ich hab mir wohl selbst geantwortet - es waren die Constraints. Ich hatte keine negative Ladeleistung als unteren Grenzwert angegeben, wodurch kein Intervall für die Regelung existierte. Der Inverter ist jetzt steuerbar und ich mache detailliertere Tests.