HoymilesZeroExport
HoymilesZeroExport copied to clipboard
Eure Config Parameter?
Wie sind eure Erfahrungen mit dem Script? Ich stehe auf das Jump to Max Limit, damit ich möglichst sofort reagiere wenn ein Verbraucher dazukommt. Mit Ahoy V0.6.0 konnte ich die Timings im Vergleich zu den Default-Values ganz schön redizieren und bekomme wirklich Top-Ergebnisse:
[COMMON]
INVERTER_COUNT = 1
SLOW_APPROX_LIMIT_IN_PERCENT = 25
SLOW_APPROX_FACTOR_IN_PERCENT = 20
LOOP_INTERVAL_IN_SECONDS = 10
SET_LIMIT_DELAY_IN_SECONDS = 3
SET_LIMIT_DELAY_IN_SECONDS_MULTIPLE_INVERTER = 2
POLL_INTERVAL_IN_SECONDS = 1
JUMP_TO_MAX_LIMIT_ON_GRID_USAGE = true
MAX_DIFFERENCE_BETWEEN_LIMIT_AND_OUTPUTPOWER = 15
ENABLE_LOG_TO_FILE = false
LOG_BACKUP_COUNT = 30
SET_LIMIT_RETRY = -1
[CONTROL]
POWERMETER_TARGET_POINT = -75
POWERMETER_TOLERANCE = 5
POWERMETER_MAX_POINT = 0
Also ich hab dein Skript derzeit mit folgenden Einstellungen laufen und muss sagen es funktionierte heute echt gut (Gestern war gabs hier kein Sonne)
Muss aber sagen so 100% verstanden was welche Option macht habe ich noch nicht, daher sind die Einstellungen so auf "Gut Glück" gewählt 😄
[COMMON]
INVERTER_COUNT = 1
SLOW_APPROX_LIMIT_IN_PERCENT = 10
SLOW_APPROX_FACTOR_IN_PERCENT = 20
LOOP_INTERVAL_IN_SECONDS = 20
SET_LIMIT_DELAY_IN_SECONDS = 5
SET_LIMIT_DELAY_IN_SECONDS_MULTIPLE_INVERTER = 2
POLL_INTERVAL_IN_SECONDS = 1
JUMP_TO_MAX_LIMIT_ON_GRID_USAGE = False
MAX_DIFFERENCE_BETWEEN_LIMIT_AND_OUTPUTPOWER = 100
ENABLE_LOG_TO_FILE = true
LOG_BACKUP_COUNT = 5
SET_LIMIT_RETRY = 3
[CONTROL]
POWERMETER_TARGET_POINT = 0
POWERMETER_TOLERANCE = 15
POWERMETER_MAX_POINT = 550
Ja, einfach Fragen, ist ziemlich viel ich weiß.
SLOW_APPROX_LIMIT_IN_PERCENT = 10: das ist etwas wenig wenn du ein 1500W Inverter betreibst, dann wird ab > 150W (10%) Limitänderung das ganze dann langsamer nach unten geregelt. Wenn du z.B. 200W überproduzierst: Dann greift der SLOW_APPROX_FACTOR_IN_PERCENT: anstelle der 200W wird dann 160W geregelt. Und im nächsten Schritt (Loop Interval in Seconds) die restlichen 40W. Das flacht die Regelung etwas ab bei großen Änderungen am Limit.
Mit Ahoy kannst du locker LOOP_INTERVAL_IN_SECONDS = 10s und SET_LIMIT_DELAY_IN_SECONDS = 3 einstellen, das beschleunigt enorm.
Wenn du ohne Jump eingestellt hast, würde ich MAX_DIFFERENCE_BETWEEN_LIMIT_AND_OUTPUTPOWER aktivieren (so 10%-15%), das begrenzt das Erhöhen des Limits obwohl nicht mehr produziert werden kann (zu wenig Sonne). Sonst läuft das Limit dauerhaft in Richtung 1500W, aber der Inverter dümpelt bei 300W herum.
Das sind meine Werte:
[COMMON]
INVERTER_COUNT = 2
SLOW_APPROX_LIMIT_IN_PERCENT = 20
SLOW_APPROX_FACTOR_IN_PERCENT = 20
LOOP_INTERVAL_IN_SECONDS = 11
SET_LIMIT_DELAY_IN_SECONDS = 1
SET_LIMIT_DELAY_IN_SECONDS_MULTIPLE_INVERTER = 1
POLL_INTERVAL_IN_SECONDS = 1
JUMP_TO_MAX_LIMIT_ON_GRID_USAGE = false
MAX_DIFFERENCE_BETWEEN_LIMIT_AND_OUTPUTPOWER = 10
ENABLE_LOG_TO_FILE = true
LOG_BACKUP_COUNT = 7
SET_LIMIT_RETRY = 10
POWERMETER_TARGET_POINT = -60
POWERMETER_TOLERANCE = 35
POWERMETER_MAX_POINT = 0
Alles funktioniert wunderbar. Auch hält die DTU das aus. Bei mir das Problem: Der Zähler gibt mir immer nur alle 10 Sekunden einen Wert. Das stört aber grundsätzlich die Funktion nicht. Wo es ein wenig stört: Bei 3D Druck oder wenn die Waschmaschine läuft. In dem Moment, in dem ein Motor anläuft werden ganz kurz mal knapp 300 Watt gezogen. Wenn genau dann vom Zähler wieder ein Wert kommt wird für 11 Sekunden das Limit demensprechend erhöht.
So sah der Mittag gestern aus (es war aber auch sehr bewölkt):
Rot=Netzbezug Grün=Einspeisung
Bis kurz nach 12 lief der Geschirrspüler, man kann gut sehen wann der Heizstab anspringt. Um ca. halb 1 wurde gekocht, da heizt das Ceranfeld. Hier sieht man dann auch kurz die zu hohe Einspeisung. Aber ansonsten dümpelt der Einspeisewert hier bei 60-80 Watt rum.
@reserve85 Hast du Lust meinen Zähler (emlog) offiziell mit aufzunehmen? Dann brauche ich nicht bei jedem Update die Domain und Prefixes ändern.
Ja, einfach Fragen, ist ziemlich viel ich weiß.
SLOW_APPROX_LIMIT_IN_PERCENT = 10: das ist etwas wenig wenn du ein 1500W Inverter betreibst, dann wird ab > 150W (10%) Limitänderung das ganze dann langsamer nach unten geregelt. Wenn du z.B. 200W überproduzierst: Dann greift der SLOW_APPROX_FACTOR_IN_PERCENT: anstelle der 200W wird dann 160W geregelt. Und im nächsten Schritt (Loop Interval in Seconds) die restlichen 40W. Das flacht die Regelung etwas ab bei großen Änderungen am Limit.
Mit Ahoy kannst du locker LOOP_INTERVAL_IN_SECONDS = 10s und SET_LIMIT_DELAY_IN_SECONDS = 3 einstellen, das beschleunigt enorm.
Wenn du ohne Jump eingestellt hast, würde ich MAX_DIFFERENCE_BETWEEN_LIMIT_AND_OUTPUTPOWER aktivieren (so 10%-15%), das begrenzt das Erhöhen des Limits obwohl nicht mehr produziert werden kann (zu wenig Sonne). Sonst läuft das Limit dauerhaft in Richtung 1500W, aber der Inverter dümpelt bei 300W herum.
Also ich hab nen 600W WR. Schau mir die Einstellungen nachher nochmal an.
@reserve85 Hast du Lust meinen Zähler (emlog) offiziell mit aufzunehmen? Dann brauche ich nicht bei jedem Update die Domain und Prefixes ändern.
ja sehr gerne, mach einfach ein neues Issue auf und lass mir die Werte darin zukommen die ich da brauche, bzw. deine Implementierung.
Ich hab meine Werte jetzt nochmal etwas angepasst und da ist mir aufgefallen das da wohl iwas noch nicht so ganz passt. Die Funktion die ich in dem issue #26 angesprochen hatte hast du ja schon drin gehabt, kam nur bei mir wohl nie zum tragen. Aber wenn jetzt der Fall eintritt das mein Limit höher ist als die Produktion schreibt er folgendes raus:
2023-03-31 14:21:37,503 INFO Cut limit to 302 Watt, limit was higher than 15 percent of live-production
2023-03-31 14:21:37,503 INFO Not enough energy producing: increasing limit
2023-03-31 14:21:37,503 INFO setting new limit to 353 Watt
2023-03-31 14:21:37,503 INFO Inverter 0: setting new limit from 352 Watt to 353 Watt
2023-03-31 14:21:24,085 INFO Inverter 0 power producing: 212 Watt
2023-03-31 14:21:24,085 INFO Cut limit to 302 Watt, limit was higher than 15 percent of live-production
2023-03-31 14:21:24,088 INFO Not enough energy producing: increasing limit
2023-03-31 14:21:24,088 INFO setting new limit to 352 Watt
2023-03-31 14:21:24,089 INFO Inverter 0: setting new limit from 356 Watt to 352 Watt
2023-03-31 14:21:10,571 INFO Cut limit to 310 Watt, limit was higher than 15 percent of live-production
2023-03-31 14:21:10,572 INFO Not enough energy producing: increasing limit
2023-03-31 14:21:10,572 INFO setting new limit to 356 Watt
2023-03-31 14:21:10,572 INFO Inverter 0: setting new limit from 367 Watt to 356 Watt
Laut output gibt er an das Limit zu reduzieren, zb auf 302 Watt. Im nächsten Schritt kommt dann aber wieder das increasing limit und mischt sich ein. Dadurch wird das Limit zwar reduziert oder bleibt annähernd gleich aber es wird nicht auf das reduziert was er bei "Cut limit to XXX Watt" angibt.
Eingestellt habe ich die Config wie folgt:
[COMMON]
INVERTER_COUNT = 1
SLOW_APPROX_LIMIT_IN_PERCENT = 10
SLOW_APPROX_FACTOR_IN_PERCENT = 20
LOOP_INTERVAL_IN_SECONDS = 10
SET_LIMIT_DELAY_IN_SECONDS = 3
SET_LIMIT_DELAY_IN_SECONDS_MULTIPLE_INVERTER = 2
POLL_INTERVAL_IN_SECONDS = 1
JUMP_TO_MAX_LIMIT_ON_GRID_USAGE = False
MAX_DIFFERENCE_BETWEEN_LIMIT_AND_OUTPUTPOWER = 15
ENABLE_LOG_TO_FILE = true
LOG_BACKUP_COUNT = 5
SET_LIMIT_RETRY = 3
[CONTROL]
POWERMETER_TARGET_POINT = 0
POWERMETER_TOLERANCE = 15
POWERMETER_MAX_POINT = 550
Ist so gewollt. Das Limit wird vor der Regelschleife getrimmt und anschließend neu berechnet. Wenn dann die Sonne plötzlich zu 100% draufknallt hast du gleich annähernd den Sollwert. Ansonsten könntest du maximal 15% je Durchlauf erhöhen.
@Leviathan09 Du sollest die Toleranz nicht so eng einstellen, ruhig 30 Watt. Und der Targetpoint sollte auch weiter im Negativen liegen, versuch mal -50 Watt. Bei 15 Watt Einspeisung muss das Limit ja schon wieder verringert werden, bei 15 Netzbezug wieder erhöht. So kleine Sprünge wirst du aber wahrschlich gar nicht hinbekommen.
Ich habe es bei mir so laufen, damit er nicht ständig hin und her regelt somit ist die Toleranz größer
[COMMON]
INVERTER_COUNT = 1
SLOW_APPROX_LIMIT_IN_PERCENT = 20
LOOP_INTERVAL_IN_SECONDS = 20
SET_LIMIT_DELAY_IN_SECONDS = 5
SET_LIMIT_DELAY_IN_SECONDS_MULTIPLE_INVERTER = 2
POLL_INTERVAL_IN_SECONDS = 1
JUMP_TO_MAX_LIMIT_ON_GRID_USAGE = true
MAX_DIFFERENCE_BETWEEN_LIMIT_AND_OUTPUTPOWER = 100
ENABLE_LOG_TO_FILE = false
LOG_BACKUP_COUNT = 30
[CONTROL]
POWERMETER_TARGET_POINT = -100
POWERMETER_TOLERANCE = 50
JUMP_TO_MAX_LIMIT_ON_GRID_>
POWERMETER_MAX_POINT = 200
@Leviathan09 Du sollest die Toleranz nicht so eng einstellen, ruhig 30 Watt. Und der Targetpoint sollte auch weiter im Negativen liegen, versuch mal -50 Watt. Bei 15 Watt Einspeisung muss das Limit ja schon wieder verringert werden, bei 15 Netzbezug wieder erhöht. So kleine Sprünge wirst du aber wahrschlich gar nicht hinbekommen.
Werde die Toleranz mal anpassen. Aber die 0 Watt als Target-Point sind ja so gewollt, ich will bei um die 0 liegen. Nicht bei -50 oder so
Aber die 0 Watt als Target-Point sind ja so gewollt, ich will bei um die 0 liegen.
Dann wirst du aber mehr Netzbezug haben, denn die Toleranz lässt bei dir dann ja auch positive Werte zu, das Script wird in dem Fall gar nicht eingreifen.
Lieber ein bisschen einspeisen als Puffer für Schwankungen beim Verbrauch. Genau die 0 zu treffen und zu halten wird wohl nicht möglich sein. Es wird ja auch nur alle 10 Sekunden angepasst.
Soll nur ein Tipp sein.
Aber die 0 Watt als Target-Point sind ja so gewollt, ich will bei um die 0 liegen.
Dann wirst du aber mehr Netzbezug haben, denn die Toleranz lässt bei dir dann ja auch positive Werte zu, das Script wird in dem Fall gar nicht eingreifen.
Lieber ein bisschen einspeisen als Puffer für Schwankungen beim Verbrauch. Genau die 0 zu treffen und zu halten wird wohl nicht möglich sein. Es wird ja auch nur alle 10 Sekunden angepasst.
Soll nur ein Tipp sein.
Ich werde die Tage mal beobachten und sehen wie sich das ganze verhält und mal testen was mit unterschiedlichen Parametern passiert 👍
Gestern zumindest lief es ganz gut um den 0 Punkt, mal so -15 bis +15 war die übliche Schwankung. Heute wird aber nix mit testen, Maximum der Anlage heute waren 10W, hier ist es mega bewölkt, dunkel und nur am regnen.
Aber danke für die Tipps. Werde die Ergebnisse demnächst dann hier mal mitteilen
Hi! Erst einmal herzlichen Danke für das tolle Skript - auch als echter Amateur bin ich gut zurecht gekommen und habe es ans laufen bekommen. Ich habe allerdings eine Weile gebraucht, um das Format meines Hichi herauszubekommen. Für weitere Anfänger wie mich, die mit einem Tasmota-Leser arbeiten, schlage ich deshalb eine Ergänzung in der config.ini vor:
# the following three constants describes how to navigate through the Tasmota-JSON
# e.g. JSON_Result = {"StatusSNS":{"Time":"2023-02-28T12:49:49","SML":{"total_kwh":15011.575,"curr_w":-71}}}
Vorgeschlagene Ergänzung
# if you do not know the format of your Tasmota reader, open a browser and put in the following string replacing xxx with the IP address of your Tasmota device: http://xxx.xxx.xxx.xxx/cm?cmnd=status%2010
Herzlichen Dank noch einmal und viele Grüße
Hallo,
Ich habe das Script jetzt seit gestern mit mit ahoydtu und einem HM-1500 auf 48V Batterie am laufen. Die Funktion ist wirklich sehr ordentlich. Alles andere, das Ich vorher probiert habe war nicht so gut, oder hat überhaupt nicht funktioniert. Als absoluter Neuling auf diesem Gebiet, eine Frage an die Profis, wäre es möglich den vom Inverter für die Strings gemessen Spannungswert für ein Änderung des Limit bzw. die Abschaltung des Inverters zu verwenden? Zum Beispiel möchte Ich ab 48V am String das Powerlimit auf 300W setzen und dann vielleicht ab 47V den Inverter ausschalten. Könnte man so etwas integrieren? Und wenn ja, wie in etwa müsste Ich da vorgehen?
mfg Dirk
Was ist in Sachen Einspeisung reralistisch möglich? Ich finde meine Einspeisewerte ein wenig hoch:
So sind mir gestern etwa 7kW übrig geblieben und 1,85kW eingespeist. AM 28.04. habe ich rund 3kW und am 25.04. knapp 3,2kW erzeugt
Meine Config:
Lässt sich das noch optimieren?
Kannst du das visualisiert Darstellen? Das würde eine Menge bringen.
Prinzipiell kommt das auch immer auf deine Verbraucher drauf an. Wenn du z.B. einen Ofen anhast der alle 5 sekunden für 2 sekunden 2000W zieht, dann wird die Regelung nicht gut funktionieren.
Du hast -50W als Target eingestellt, sobald du halt eine 60W Birne einschaltest oder du im Energieverbrauch schwankungen von >50W hast, dann wird dein Powermeter positiv unds somit dein Inverter direkt auf 100% ausgeregelt weil du "jump_to_max_limit_on_grid_usage" auf TRUE hast. Diese Option verursacht zwar eine höhere Einspeisung, dafür reagiert dein Inverter sofort wenn du Strom kaufen müsstest. Das musst du halt abwägen was für dich wichtiger ist.
Mit der Option probiere mal 75 Watt oder sogar 100 Watt, dann wird der Inverter seltener auf 100% gepusht.
SlowApproxLimitInPercent könntest du auch etwas erhöhen, bei mir ist 25 eigentlich ziemlich gut.
Hoffe das Hilft dir, eine Grafik wäre super.
Visualisiert... würde ich gerne, wenn ich wüsste wie.
Kann ich irgendwie eine Datenbank einsetzen um alles aufzuzeichnen und dann auszugeben? Ich habe ein anderes Projekt gesehen da wird das u.a. mit Grafana gemacht. Aber wie mein Username schon sagt: Ich bin alles andere als ein Profi. Dieses Projekt sind meine allerersten Erfahrungen mit Linux. Ich bin wissbegierig und lernfähig, aber ich brauche echt Hilfe dabei! Wenn Du das machen kannst, bzw. möchtest(?).
Zur Config: Ich werde die Option mal auf 100 Watt anpassen und das SlowApproxLimitInPercent auf 25% (was 575 Watt wären - den Faktor auf 16 lassen?) einstellen und beobachten.
Danke bis hierher!
Naja, am einfachsten wäre es IoBroker oder HomeAssistant zu installieren. Damit kannst du deine Zähler ohne großen Aufwand hinzufügen und Ahoy/OpenDTU sowieso. Du musst dich dennoch reinarbeiten, da gibt es aber tausende Tutorials und Beispiele. Welchen Zähler hast du?
Reinarbeiten ist kein Ding. Hast Du ein gutes Tut? Ich habe einen Logarex lk13be803039.
Ist es möglich den "POWERMETER_TARGET_POINT" automatisiert zu bestimmten Tageszeiten anzupassen? Mir geht es dabei um eine Nachteinspeisung, da würde ich den Wert gerne automatisch deutlich reduzieren, da Nachts keine Spitzen zu erwarten sind, ich aber möglichst noch weniger als tagsüber einspeisen möchte.
Was den Wert tagsüber angeht, da habe ich mit -100 erste Erfolge erzielt. Soll heißen das ich nun schon weniger einspeise und mich nun an einen "idealen" Wert herantaste. Ich nehme an, dass dieser tatsächlich bei 75 Watt sein wird.
@keinprofi: bei Batteriebetrieb würde ich dir generell empfehlen: TargetPoint = 0 und JumpToMaxLimitOnGridUsage = false
Die Lösung für unterschiedliches Tages- und Nachtlimit müsstest du selbst realisieren, ggf. mit einem automatisierten CronJob der dir den Wert in der *.ini anpasst und das Script dann neustartet. In meinem Script würde ich das ungern implementieren.
Ja, bei Batteriebetrieb ist 0 definitiv das Ziel, aber tagsüber ist das keine brauchbare Option.
Na gut, dann muss ich mal sehen ob ich da was hinbekomme.........
Ja dann würde ich wirklich die Linie fahren für Tag- und Nachtmodus jeweils eine eigene ini zu hinterlegen (z.B. HoymilesZeroExport_Day.ini und HoymilesZeroExport_Night.ini) und über ein Script zu bestimmter Zeit die Datei in den neuen Dateinamen HoymilesZeroExport.ini zu kopieren (mit automatischen Überschreiben). Dann muss nur noch ./restart.sh ausgeführt werden.
Gute Idee. Ich werde mich da mal dran machen.
Danke!
Kann ich das so umsetzen?
Oder ist diese Konfig besser: rule1 = WHEN (time >= "07:00:00" AND time < "19:00:00") DO POWERMETER_TARGET_POINT = -75, JUMP_TO_MAX_LIMIT_ON_GRID_USAGE = true END rule2 = WHEN (time >= "19:00:00" OR time < "07:00:00") DO POWERMETER_TARGET_POINT = 0, JUMP_TO_MAX_LIMIT_ON_GRID_USAGE = false END
Würde es mit beiden funktionieren? Ist eine Variante besser als die andere?
Edit: Ich denke mal das die Zweite Variante die bessere wäre. Sollte der Raspi um 7 und/oder 19 Uhr mal ausgefallen sein ändert sich nichts bei der oberen Variante. Bei der Zweiten würden die Werte auch um 10.37 Uhr angepasst, falls der Raspi zuvor ausgefallen war.
Hi, ich würde noch einfacher vorgehen:
Erstelle Day_Config.ini + Night_Config.ini in deinem HoymilesZeroExport Verzeichnis.
Erstelle einen CronJob:
- um 05:55 Uhr die Datei /etc/HoymilesZeroExport/Day_Config.ini nach /etc/HoymilesZeroExport/HoymilesZeroExport_Config.ini kopieren und überschreiben
- um 06:00 Uhr führe Script "sudo /etc/HoymilesZeroExport/restart.sh" aus
- um 19:55 Uhr die Datei /etc/HoymilesZeroExport/Night_Config.ini nach /etc/HoymilesZeroExport/HoymilesZeroExport_Config.ini kopieren und überschreiben
- um 20:00 Uhr führe Script "sudo /etc/HoymilesZeroExport/restart.sh" aus
Dazu hab ich mal ChatGPT gefragt (Danke dafür 🥇):
Öffne ein Terminal und gib den folgenden Befehl ein, um die Crontab-Datei zu bearbeiten:
crontab -e
Füge die folgenden Zeilen am Ende der Datei hinzu, um die gewünschten CronJobs einzurichten:55 5 * * * cp -f /etc/HoymilesZeroExport/Day_Config.ini /etc/HoymilesZeroExport/HoymilesZeroExport_Config.ini 0 6 * * * sudo /etc/HoymilesZeroExport/restart.sh 55 19 * * * cp -f /etc/HoymilesZeroExport/Night_Config.ini /etc/HoymilesZeroExport/HoymilesZeroExport_Config.ini 0 20 * * * sudo /etc/HoymilesZeroExport/restart.sh
Damit sollte das so laufen wie du es vorhast. Die Zeiten und den Ordner musst du noch anpassen, so würde ich das jedenfalls lösen.
Gruß Tobias
Meine Ergebnisse stammen auch von ChatGPT... :-D
Also ob das so funktioniert kann ich dir nicht sagen, ich kenn das so nicht. Bin leider auch nicht zu Hause sonst würde ich es mal schnell eintippen. Jedenfalls: du musst das Script trotzdem neu starten, die Config wird nur ein mal geladen (beim Starten des Scripts).
Bin selbst erst spät zu Hause heute...
Hallo zusammen, hat von euch er Erfahrung mit einem HM an einem 24V Akku, der nur Nachts an ist. Nachts schwankt der Strombedarf nicht so stark, maximal schaltet der Kühlschrank oder die Gefriertruhe ein, die dann für 10/15 min laufen. Da mein Grundbedarf nachts zwischen 130 und 220W schwankt, habe ich das Skript auf 250W begrenzt.
Wie geht ihr mit diesen 2 Parameter um?
- max difference in percent between SetpointLimit change to approximate the power to new setpoint SLOW_APPROX_LIMIT_IN_PERCENT = 20
- if slow approximation: additional limit based on the limit-difference to "smoot the curve": newLimitSetpoint = newLimitSetpoint + (LimitDifference * SLOW_APPROX_FACTOR_IN_PERCENT / 100) SLOW_APPROX_FACTOR_IN_PERCENT = 20