-
-
Notifications
You must be signed in to change notification settings - Fork 512
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lastabhängige Stuerung der Solarproduktion #272
Comments
Ich sträube mich noch etwas dagegen, so einen Algorithmus einzubauen. Hintergrund ist, dass dieser ja ggf. für Solar Panels anders sein müsste als wenn Akkus o.Ä. am Inverter hängen. Jeden einzelnen Use-Case kann man hier nicht berücksichtigen. Ein MQTT Broker muss aber sowieso laufen. Daher wäre es ja auch möglich dort ein einfaches Python Script (o.Ä.) zu betreiben das die Regelung übernimmt. |
Das ist eine Idee.. Die werde ich mal verfolgen. Die Frage die sich mri stellt ist dann ist der ESP "schnell" genug das das auch klappt? Wenn das ganze per Blockly auf ioBroker realisierbar ist hänge ich mich da mal rein.. (zu Python bin ich nicht in der Lage) :) |
Es gibt Topics an die man die Limits schicken kann: Lines 67 to 70 in 13b22de
Für deinen Einsatzzweck wären dann die |
Was den ioBroker und Blockly angeht kann ich dir schon mal sagen das es geht, ich hatte die MQTT Topics die unterstützt werden schon mal durch probiert. Ich habe jedoch das Problem das es an dem "schnell" genug etwas habert, teilweise wenn ich Werte einstelle dauert es 5-10min bis diese auch übernommen werden. Ein anderes mal geht es innerhalb einer Minute. Ich arbeite immer mit "nonpersitent_relative" Weiß aber auch nicht ob so ein kleiner Wechselrichter das so präzise Regeln kann wie ein großer Hybrid. |
Wäre es nicht möglich das Limit automatisch abhängig der Verschattungssituation von Kanal 1&2 und Kanal 3&4 anzupassen? |
Bei mir gucken die 4 Panele starr 30° Aufgestellt nach süden, das wäre also kein Problem. Mir ist "nur" wichtig nicht zu viel auszuspeisen, da ich sonst die Auspeisung per Zählerfehler nicht mehr erklären kann :) |
@tbnobody ist es evtl. möglich das openDTU beim Verbinden mit dem MQTT Broker die cmd Topics mit published? |
Das entspricht so nicht der Spezifikation von MQTT. Es können dort keine Topics "angelegt" werden. Entweder wird etwas published oder eben nicht. Selbst wenn OpenDTU auf cmd etwas publishen würde und ioBroker erst danach gestartet würde, würde es nichts sehen (ok, außer natürlich retained values). Wenn der Adapter hier Fehler gibt sollte dieses in ioBroker behoben werden. |
Hättest du mal ein Blockly-Beispiel parat? Ich bekomme es über MQTT gar nicht erst angelegt. |
Danke dir, ich werd es ausprobieren, müssen die DP angelegt werden oder macht das OpenDTU? in MQTT finde ich diese DP nänlich nicht? |
So für alle die es interessiert: curl -X POST http://192.168.1.188/api/limit/config -d 'data={"serial":"116162810943","limit_type":1,"limit_value":100}' Wobei die IP und die Seriennummer des Inverters ersetzt werden muss! Jetzt versuche ich mit meinen mageren Scriptkenntnissen was Javascript angeht das ganze zu realisieren. Im Prinzip: Das Ganze halt nur auf Javarisch. Jetzt bin ich zumindest ein ganzen Stück weiter... Edit: mit dem Adapter "Linux Control" und bei diesem "Eigene Befehle" kann man problemlos Buttons basteln, die das Limit dann über die VIS setzen lassen (Datenpunkte von LinuxControl per State=true ansprechen). |
Ich hab mal so eine Tarnkappe für meine hoymiles angefangen. |
Danke, ich seh mir das mal an, ich bin was Scripting angeht bei Python aber direkt raus °° auch Java kann ich nur in Ansätzen.. Mir wäre daher ein Blockly mit meiner derzeitigen Umgebung lieber (Iobroker, Smartmeter (Volkszähler), OpenDTU und das setzen der Limits via curl und Java, da das direkte Datenpunkte im LinuxControl Adapter sind und das Script dann direkt in Iobroker nutzbar ist). Ich habe dein Script aber tatsächlich verstanden °° |
Ich habe heute etwas ähnliches veröffentlicht. Auch in python, frei konfigurierbar und nur minimales python scripting erforderlich: https://github.com/ThePradox/SolarExportControl |
@PeterFausH kann man dein Vorhaben auch bei Home Asisstant einbinden ? |
Das kann ich dir nicht sagen, kenne Home Assistent nicht.
…
Am 03.11.2022 um 21:30, LJ9210 ***@***.***> schrieb:
@PeterFausH kann man dein Vorhaben auch bei Home Asisstant einbinden ?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
um das Feature der DTU Pro nachzubilden ist es notwendig ein Smartmeter, (z.B. SDM630, Fronius 63A-3) im ESP einzubinden und die Leistung entsprechend an den Wechselrichter zu kommunizieren. Die Leistungsbegrenzung sollte für Batterie/Akku Projekte aufgenommen werden. |
Meinung: Ich glaube das übersteigt den Scope von dem Projekt. Viele beziehen Ihre Smartmeter-Stromdaten auch per Infrarot SML Schnittstelle. Sollen die dann auch unterstützt werden? Wie groß ist die Chance das dort wo der Stromzähler steht, auch der Inverter per Funk erreichbar ist? |
Ergänzung: Vielleicht wäre es sinnvoller einfach nur einen RX Pin in OpenDTU zu definieren an den man den Stromverbrauch senden kann? Da kann dann jeder dran klemmen was er will. |
Da hast du recht, ein RX und ein TX PIN zu definieren an den die aktuelle Leistung gesendet werden kann, ist für viele sicherlich hinreichend gut. |
Ich würde mir auch wünschen, man könnte die Limits via Serielle Schnittstelle setzen. Dann könnte ich das mit weniger Aufwand in mein Projekt einbinden das leider MQTT nicht direkt unterstützt. Dazu kommt noch, dass das Setzen der Limits im Moment der einzige Grund ist, dass ich einen MQTT Server betreiben muss. |
Hallo, habe aktuell eine Solaranlage mit Speicher und möchte gerne das ganze mit Nulleinspeisung realisieren. |
Können kann man alles, es muss nur einer Programmieren... |
Eine zugelassene Nulleinspeisung sollte in dieser Leistungsklasse auch kaum jemand benötigen. |
Um ein Limit zu setzen braucht es nur ein einziges MQTT-Kommando: Limiter-Beispiel-Graph |
Ich habe einen Fork von dem Projekt OpenDTU_VeDirect gemacht und Support für Nulleinspeisung (mit Batterie statt Solar) mit dem Shelly 3 EM eingebaut. Der subscribed sich einfach auf die Shelly MQTT topics und setzt dann alle 15 Sekunden das Limit vom Hoymiles neu. Konfiguration ist über das Web interface möglich. Man kann eine Stop und eine Start Voltage setzen damit er bei einem gewissen Ladestand der Batterie anfängt zu arbeiten. Man kann 3 MQTT Topics setzen die addiert werden, also es funktioniert wahrscheinlich mit jedem MQTT Power Meter wie Shelly 3em. https://github.com/berni2288/OpenDTU_PowerLimiter Allerdings ist hier noch irgendein Bug, alle paar Tage hört der Hoymiles auf Updates an meinen ESP32 zu schicken, dass muss ich noch lösen. Ansonsten bin ich damit sehr zufrieden und mein Smart Meter Diagram zeigt schön dass weder Strom bezogen wird (also nichts über 10 W) und dass auch nichts ins Netz geht. Da es hier um eine kritische Funktion geht die möglichst in "Echtzeit" passieren sollte und auch die Fehleranfälligkeit möglichst klein gehalten sollte, halte ich nichts davon diese Funktionalität auf einen weiteren Computer auszulagern, deswegen habe ich das direkt in OpenDTU eingebaut. |
Hi @berni2288, wenn du nichts dagegen hast, würde ich deine Änderung gerne wieder nach OpenDTU_VeDirect holen. Ich plane meinen China-Inverter durch einen HM-300 zu ersetzen. Aktuell kann ich den China-Inverter nur über einen Shelly an und abschalten. Er liefert dann konstant 100W (regelbar über ein Poti). Kurze Frage. Warum machst die Start-/Stop-Voltage in OpenDTU? Victron hat dafür eigentlich das (virtual) Load flag. Ich nutze es, um meinen Inverter an und ab zu schalten. Das OpenDTU Setting würde ich eher als Sicherung sehen, wenn der MPPT ausfällt und man die Batterie vor der vollständigen Entladung schützen will. Inzwischen ist der OpenDTU und OpenDTU_VeDirect ziemlich stabil. Die Update-Ausfälle nach einer gewissen Laufzeit hatte ich, als es noch diverse Memory-Leaks gab. Schau dir mal den Speicherverbrauch an. |
@helgeerbe Gerne, aber beachte das Feature ist derzeit noch eher im Beta-Status, funktioniert bei mir aber schon gut, bis auf den Bug. Also ich hatte noch nicht wirklich viel Zeit meinen ESP32 mit dem Victron MPPT zu verbinden, irgendwie hat es das erste Mal nicht geklappt. Ich bin mir noch unsicher welche Pins vom ESP32 (NodeMCU) ich verwenden kann für den Victron, weil ein TX und ein RX sind ja schon vom nrf24l01+ belegt? Den Wechselrichter an den Lastausgang zu hängen ist glaub ich nicht wirklich empfohlen, da die Kondensatoren vom Wechselrichter beim Anschließen viel Strom in kurzer Zeit ziehen. Hab schon mal ein Youtube-Video gesehen wo einer berichtet hat dass es die Victron-Sicherung zerschossen hat damit. Ich hab ein Pylontech 48V-Batterie-System (das US3000C), im 48V-Modus liefert der Victron MPPT 100/20 48V sowieso nur 0,1A am Lastausgang, kann ich also mit 48V eh vergessen :) Das mit dem Speicherverbrauch ist ein sehr guter Tipp, das werde ich mal machen, danke! Ich dachte dass mein Code einfach zu viele Befehle an den Hoymiles schickt und ich ihn dadurch überlaste. Wenn der Bug auftritt dann hilft es nicht mal den ESP32 neuzustarten, ich muss dann den Hoymiles komplett stromlos machen und den ESP32, keine Ahnung was es da hat... |
@berni2288 lass dich nicht von den aufgedruckten Bezeichnungen verwirren. Beim esp32 kannst du die TX/RX Pins für eine serielle Schnittstelle frei wählen. Bei meinem Wemos esp32 Mini habe ich z. B. diese Pins gewählt.
Der Hardware Lastausgang beim MPPT 100/20 48V liefert 1 A und nicht 0,1 A bei 48 V. Das sind aber auch nur 48W. Kein Wunder, wenn da die Sicherung am MPPT fliegt. Interessanterweise können aber bei 24V 20 A geliefert werden. Das sind schon 480W, was für ein Grundlastkraftwerk ausreicht. Aber ich meinte den virtuellen Lastausgang. D. h. wenn der MPPT den Lastausgang an und ausschaltet, wird dies auch über das VE.direct Protokoll signalisiert (Mein MPPT hat auch gar keinen physikalischen Lastausgang). Ich nutze das ON/OFF Flag um den Inverter an und auszuschalten, da der Batterielader den Zustand der Batterie am besten kennt (Meine Batterie steht z. B. leider nicht frostsicher). Dein US3000C ist sicher eine gute Lösung. Ich habe nur einen einfachen Akku. Ob der Kondensator vom Inverter beim Anschluss die Batterie überlastet, hängt sicher von der Leistung des Inverters ab. Einen HM-300 sollte die Batterie und die Kontakte abkönnen. Bei großen Invertern sollte man tatsächlich die Kondensatoren vorladen, sonst kann es einen schönen Funkenflug geben. (Nur um es erwähnt zu haben: Sicherungen sind Pflicht. Ein Kabel ist keine Schmelzsicherung!). Behalte mal im WebInterface der OpenDTU unter System-Info den Heap im Auge. Wenn der sich über die Laufzeit verändert, würde ich intensiv nach Speicher-Leaks schauen. Ich habe auch gesehen, dass du bei Stringoperationen |
Wo hattest du denn Level-Shifter eingesetzt? |
@cbscpe2 Aber egal, funktioniert ja jetzt auch ohne dem Konverter :) |
Komisch müsste eigentlich klappen. Die Signale sind zum Glück alle TTL kompatibel, das erklärt wohl auch warum es ohne funktioniert. Sobald angekommen, werde ich mal den ADUM1201 ausprobieren. Der isoliert auch gleich, wie das eigentlich Victron empfiehlt. Dann muss ich mir auch keine Gedanken bezüglich der Spannungsversorgung machen, jede Seite kann mit 2-5V betrieben werden. |
@berni2288 du macht genau da was ich vorhabe, gut dass ich dass gefunden habe :)
Jetzt fehlt mir noch noch der Limiter.
Auch ja, Shelly 3M als Input habe ich leider nicht, da werde ich entweder auf ziemlich ungenaue ADC-Messung mit emonLib setzen oder auf SDM72 Zähler |
Hi @Adminius,
Ja so hab ich es derzeit implementiert, mit Korrekturfaktor weil die Voltage runtergeht wenn der Wechselrichter grad Saft rausnimmt. Aber ich vermute mal dass die Spannungs/SOC Kurve der Batterie nicht linear ist, also finde ich die Lösung nicht ganz so schön. Deswegen versuche ich grad mit RS485 (oder CAN) an die Daten von meinem BMS zu kommen.
In meinem Projekt hab ich grad die Settings "Minimale Leistung", "Maximale Leistung", "Start Spannung" und "Stop Spannung". Meld dich wenn du Hilfe brauchst, ich hatte noch keine Zeit das Projekt ausführlich zu dokumentieren. |
hi @berni2288 ich habe auch ohne Doku geschafft, ist eigentlich selbsterklärend. ich habe zwar auch SmartBMS (JBD) mit UART und würde auch gern die Daten haben/nutzen/per MQTT verteilen, aber diese Spielereien erst, wenn der Rest besser läuft. ich muss noch SDM72 Stromzähler per RS485 als Leistungsquelle einbinden. An dem Einsatzort gibt es nichts anderes... soll eigentlich komplett offline/autark ohne WLAN laufen. |
Ich hab mir eh überlegt die Spannungseinstellungen noch weiter auszubauen, am besten so flexibel dass es die meisten möglichen use cases von anderen Leuten abdeckt.
Ja das mit der BMS-Abschaltung ist mir auch schon einmal passiert, sowas will man eigentlich vermeiden. Da mit dem Hoymiles über (nicht 100% zuverlässigen) Funk kommuniziert wird und der ESP32 möglichweise stromlos werden kann (aus verschiedenen Gründen) empfiehlt sich eine extra Absicherung, außer man nimmt das in Kauf.
Wenn du magst kannst du da einen PR erstellen, damit man in den UI Einstellungen zwischen MQTT und SDM72 wechseln kann. Ich vermute mal dass SDM72 ein proprietäres RS485 Protokoll verwendet, welches wir nicht generisch implementieren können. |
BMS schaltet bei mir zuverlässig ab. Ich habe 2,8V undervoltage statt 2,5V eingestellt. Mehrmals getestet, alles top. Vermeiden würde ich es trotzdem lieber. SDM72 hat den selben Protokoll wie der großer SDM630 Bruder (wird oft bei großen WRs eingesetzt). SDM230 wäre einphasige version. Diese sind alle sehr verbreitet. Es gibt nur eine Sache wo ich noch unsicher bin: |
Nicht dass ich viel Erfahrung mit Software Serial hab, aber wahrscheinlich ist es kein großes Problem wenn man nicht gleichzeitig Senden und Empfangen will und keine große Übertragungsrate braucht. Kann mir nicht vorstellen dass das Probleme macht beim Auslesen von BMS-Daten. |
Na wenn schon SDM-Library auf SW Serial als option setzt, sollte es auch bei BMS gehen :) na gut. Ich wollte halt damit sagen, dass wenn man schon BMS einbinden möchte, dann bitte möglichst generisch ;) |
Werden Tasmota Geräte für die Leistungsermittlung zukünftig berücksichtigt? Im Schwester Project gibt es hierzu ein Issue: Viele Leseköpfe kann man einfach per json abfragen, damit wäre eine Nulleinspeisung ohne MQTT möglich. |
@Ollipop030 schau mal hier ein analoger Feature Request für OpenDTU #567 |
Meine ADUM1201 sind angekommen und ich habe nun meinen SmartSolar 100/20 über einen ADUM1201 mit dem USB Serial Adapter verbunden. Und es funktioniert. Jetzt ist die Verbindung wie empfohlen isoliert und potentialfrei. |
@cbscpe2 wenn ich mich recht erinnere haben die UART-TTL USB Adapter mit CH340G einen Jumper, um zwischen 5V und 3.3V zu wechseln. Hast du 5V gesteckt und auch 5V am ADUM1201 angelegt? Oder ist bei dir 3.3V eingestellt und du machst einen echten Level Shift? |
Beide Seiten werden mit etwa 5V betrieben, vom Smartsolar kommen etwa 4.8V vom USB Adapter 5.1V. Die beiden Seiten des ADUM1201 sind vollständig voneinander unabhängig was die Spannungsversorgung anbelangt und darf zwischen 2.7V und 5.5V betragen. Die beiden Seiten sind elektrisch voneinander getrennt. D.h. der ADUM1201 macht automatisch ein Level Shift. D.h. das funktioniert auch wenn auf der User Seite 3.3V anliegt. In meinem Fall habe ich noch einen zweiten ADUM1201 im Einsatz der am UART eines AVR Microcontrollers hängt der mit 3.3V betrieben wird und auf der anderen Seite hängt ein 5V USB-UART Interface Adapter zum PC. Das klappt bestens. |
Leistungsbegrenzung OpenDTU mit Python. Hier mal ein Snippet: url = ('http://192.168.179.160/api/limit/config') x = requests.post(url, headers=headers, data = data, auth=('admin','XXXXX(')) Aus IoBroker jetzt noch über die API die aktuellen Leistungswerte des Zählers auslesen und ein bisschen Mathe dazu. |
Hier geht es prinzipiell u.a. auch um die technische Machbarkeit einer "Null-Einspeisung"/"Zero-Export" Lösung. Davon unabhängig gibt es in OpenDTU-OnBattery die beiden Optionen Power Meter und Dynamic Power Limiter. @tbnobody m.E. wäre es langfristig hilfreich die beiden o.g. Optionen aus dem OpenDTU-OnBattery Project in den mainstream OpenDTU Kernel aufzunehmen. Auch die Hoymiles DTU Pro bietet ja eine Zero Export Control mit Hilfe z.B. eines SDM Smart Meter via Modbus TCP / Modbus RTU (RS485) wie im Aufbau von @cbscpe2 beschrieben an. Ich habe bei mir ein Shelly Pro3EM wie folgt für eine max. -300 Watt Export Control in OpenDTU-OnBattery konfiguriert: Settings > PowermeterPower Meter Configuration HTTP(S) + Json - General configuration HTTP(S) + Json configuration - Phase 1 Alternativ könnte man auch alle drei Phasen einzeln abfragen, dazu die folgenden Werte anpassen: HTTP(S) + Json - General configuration HTTP(S) + Json configuration - Phase 1 HTTP(S) + Json configuration - Phase 2 HTTP(S) + Json configuration - Phase 3 Dynamic Power Limiter SettingsConfiguration Notes General Inverter |
Is your feature request related to a problem? Please describe.
Wäre es möglich anhand eines Datenpunktes per MQTT den aktuellen Verbrauch an Open DTU zu geben und anhand dessen das Leistungslimit des Inverterst durch den ESC regeln zu lassen?
Describe the solution you'd like
Der ESP entscheidet anhand eines Datenpunktes die Leistung des Wechselrichters um eine Nulleinspeisung zu erreichen.
Describe alternatives you've considered
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: