-
-
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
Leistungsreduzierung HM300 #35
Comments
Ohh das klingt ja sehr vielversprechend. Hast du herausbekommen was der Response vom WR zur DTU ist wenn das erfolgreich angewendet wurde? Grüße |
Hallo Thomas,
DanielR92 hat mir viele Hinweise gegeben. VG |
Hm 2 Fragen wären mir spontan noch eingefallen. Überlebt eine Limitierung die Nacht? Also befindet sich diese persistent im WR? Oder muss diese jeden Tag neu gesetzt werden? Also ich denke nur daran, wenn man z.B. 2 MQTT Topics haben möchte, zum setzen der Limitierung und zum auslesen des aktuellen Wertes. |
@tbnobody die Antwort der Hoymiles 2G und 3G Protokolle ist in der Regel
|
Moin Moin, VG |
Guten Morgen, zum letzten Kommentar kann ich bestätigen. Ich habe mein WR am Labornetzteil hängen. Wenn ich diesen vom DC trenne (warte...) und wieder Einschalte bleibt die limitierung erhalten. |
Hallo, ich kann bestätigen, das die Limitierung auch bei einem HM400 geht. Er trifft zwar nicht genau die Werte, aber immerhin. Ich habe es mit 30 W (was dann 24 W AC ergibt) und 50W (was dann 40W AC ergibt). Kann aber ggf. daran liegen, das ich derzeit noch immer mein StepUp Wandler davor dran habe.
Vielen Dank für die Arbeit von allen. Ich bau das jetzt in mein esphome plugin ein und dann kann ich endlich automatisieren. Marcel P.s.: Ein und Ausschalten wäre noch ein Feature das ganz nett wäre, da derzeit mein Yield Day nicht stimmt, weil der HM 24h durchläuft. Ich glaube auch das die 24h Laufzeit dazu führt, das der HM so aller 36h mal kurz aussetzt. Also ein und ausschalten wäre eine super Lösung. |
Es fällt auf, dass die realen Werte bisher immer ziemlich exakt 80% des Sollwerts sind. Vielleicht ein Puffer, für die Fälle wo das mit dem Limit rechtlich wichtig ist? |
@a-marcel Ein-/Ausschalten habe ich in lumapu/ahoy#31 bzw. im Forum dokumentiert. |
@stefan123t : Ich habe beide Commands (Turn On / Turn Off) ausprobiert, sie gehen, aber nach dem Einschalten bleibt die voreingestellte Limitierung bestehen. Auch die Tageswerte bleiben bestehen. Interessant ist aber auch, das selbst wenn der HM aus ist (Turn Off) dieser dennoch auf alle Anfragen brav antwortet. Da in EspHome eine Wattgenaue Limitierung für den Benutzer schwer zu senden ist, sollte doch auch die Prozentuale Limitierung gehen. Ich habe mit den Werten mal rumgespielt aber nichts klappte: Limitierung auf 1000 (dachte an 100%) Hatte ich im Forum so gelesen, das wohl die nachfolgenden Bytes (<?desc?-fix 0x01 0x00) die Prozentualen Werte sind. Ich hatte auch probiert die Limit werte so zu setzen, das sie der Wattzahl meines Wechselrichters entsprechen und dann die nachfolgenden Bytes auf den Prozentualen Wert, aber dann speist er mit voller Power ein. also 400 Watt und dann 30 %
Marcel |
Entstehen durch das Schalten oder Setzen der Limits eigentlich Einträge im Eventlog? Ich bin immer noch am durchkämmen des Sourcecodes ob es möglich ist den Status auszulesen.. Das Ein/Aus hätte ich mir noch vorstellen können das es im Run_Status steht. aber der kommt eben über Eventlog Einträge |
Hallo zusammen, so wie ich es der usart_nrf.c / usart_nrf3.c und usart_nrf.h ... entnehme, ist der Wert von .Desc abhängig von zwei Entscheidungen. usart_nrf.h :
usart_nrf.c :
NetProtocol.c :
usart_nrf3.c :
Dtu3Detail.Property.DRM_Limit_Switch oder Dtu3Detail.Property.SunSpec_Switch dann Dtu3Detail.Property.Zero_Export_Switch oder Dtu3Detail.Property.Phase_Balance_Switch dann andere Vorkommnisse von .Desc konnte ich bisher nicht finden. Danach wird UsartNrf3_Send_PackDevControl() gerufen
Auffällig ist hier z.B. das Schieben des SubCmd in das "linke" Byte von uint16_t -> 0x0b00 Die Signatur von UsartNrf3_Send_PackDevControl()
Hier wird es jetzt ein wenig "unübersichtlich" abhängig von
nub = 0x81 + ((Index_Para + 4) / 16) TotalIndex_Para = 4 Ohne Debugger kann ich hier nur noch schwer folgen. Also wären
meine Interpretationen. Die endianess des µC der DTU bzw des WR könnten hier auch eine Rolle spielen. Viele Grüße |
@klahus1 Desc / Asc könnte hier tatsächlich die richtige Übersetzung sein. |
Die Frage ist halt, |
DRM/SunSpec ist eine externe Limitierung. DRM ist australischer Standart wie bei uns die Kontrolloption durch den Netzbetreiber. SunSpec ist eine externe Kontrolle durch ein lokales Steuerungssystem wie z.B. Victron, was die WR einzeln ansteuern kann. |
@De-Ichirou schön, kurz und knapp erklärt! |
Hallo @a-marcel, Die Limitierung bei den HM-Wechselrichtern mit MainCmd
Laut dem Source Code kann PowerPFDev.Desc aber auch |
Wird dieser Power-Wert im EEPROM persistiert? Das wäre ziemlich blöd, denn wenn wir den ein paar hundert mal pro Tag setzen ist das EEPROM nach relativ kurzer Zeit im Eimer. |
In diesem Fall gehört der Wert in den RAM. Der EEPROM sollte nur einen default-Wert vorhalten, den man dann sicherheitshalber entsprechend (niedrig) wählt. |
Ist es geplant die Leistungsreduzierung auch per MQTT zu steuern? |
Geplant ist das auf jeden Fall. Habe auch schon viele Vorbereitungen im Code getroffen. Aber mühsam ernährt sich das Eichhörnchen :) |
Danke für die Top Arbeit! |
Bei Ahoy hat das @aschiffler sehr schön gemacht: (1) in der Web UI Page: Das Power Limit persistent setzen Die Lösung find ich sehr gut; durch (1) startet der WR immer in einem definierten Zustand. Durch (2) wird dafür gesorgt, dass das EEPROM vom WR nicht vorzeitig gekillt wird weil pro Tag ein paar hundert mal die Leistung an den Verbrauch angepasst wird (-> Nulleinspeisung). Nur leider läuft Ahoy bei mir absolut unstabil, kein Vergleich zu OpenDTU (das läuft seit 14 Tagen absolut stabil!) Ich würde mir wünschen, dass die Leistungsreduzierung (von der Logik her) bei OpenDTU ähnlich umgesetzt wird wie bei Ahoy. |
Hallo Zusammen, ich schaue hier recht regelmäßig vorbei, um von etwaige Neuerungen hins. des Leistungsbegrenzungsfeatures zu erfahren. Im Verlauf des Mikrocontroller-Forums scheinen ja etliche das Feature bereits intensiv zu nutzen, nur werde ich nicht schlau "wie", daher Frage in die Runde:
VG und Danke im Voraus und sorry für die Rückfragen... |
Tausend Dank für die Infos, @aschiffler! |
@klahus1 @tbnobody typedef enum { // ToDo: to be verified by field tests
AbsolutNonPersistent = 0x0000, // 0
RelativNonPersistent = 0x0001, // 1
AbsolutPersistent = 0x0100, // 256
RelativPersistent = 0x0101 // 257
} PowerLimitControlType; EDIT: Habe gerade gesehen, dass ich im "anderen" Repository geschrieben habe. Daher wenn ich implementiert schreibe meine ich im Projekt "Ahoy". |
@wib100 das habe ich ja getan. Egal wer es published, alle anderen sehen es, nur den inverter interessiert es nicht. Oder reden wir aneinander vorbei? |
|
Da steht mqtt.0.* |
zeige einmal deinen kompletten Objektbaum von mqtt.0 |
Bei mir klappt es jetzt. Habe es aber nur einmal probieren können, da die Sonne weg ist. |
Ja bei ahoy läuft mein blockly. |
So, heute ist alles grau in grau, nur wenige Watt kommen von der Sonne. Was gestern los war...keine Ahnung. Ich weiß nur, es lag nicht an meinem MQTT usw. |
Merkwürdig. |
Wenn ihr die Serielle Konsole anzeigt solltet ihr beim setzen folgende Ausgaben sehen: Nach dem Abschicken eines neuen Wertes an die MQTT Topic geht im Webinterface der "Current Set Status" auf "Pending". Wenn der Befehl erfolgreich verschickt und vom Wechselrichter bestätigt wurde geht dies zurück auf "Ok". Dies kann aber auch sehr schnell gehen (<4Sek) |
Ja, das geht. Falls es wieder nicht mehr gehen sollte, werde ich mal die serielle Konsole bemühen müssen. |
Habe eigentlich ales genau gleich. Auch der mqtt-Explorer zeigt die Werte im richtigen Topic an, nur OpenDTU ignoriert das. |
@hubsi5 Ich glaube dass der ioBroker-Objektbaum nicht immer sauber funktioniert. Nun läuft ein weiteres Skript, das auf Änderung von OpenDTU/Hoymiles/x/status/limit_absolute reagiert. Hier sehe ich an den Logausgaben, dass dies funktioniert. Mir wird der neue Wert ausgegeben. Soweit auch wie erwartet. Nun kommts aber: Schaue ich im ioBroker->Objekte->mqtt unter OpenDTU/Hoymiles/x/status/limit_absolute steht noch der alte Wert drin. Zeitstempel letzte Änderung mehrere Stunden her. Einerseits scheint der das nicht mitgekriegt zu haben, aber wie kann ein Skript auf eine Änderung reagieren, die es lt. dieser Ansicht gar nicht gibt??? |
Im Objektbaum geht es bei mri gar nicht. Auch nicht mit ahoy. |
@ntfrnd ich glaub ich hab die Lösung |
@hubsi5 Interessant, d.h. die Objekte in der Broker-Instanz verwendest Du lesend im Skript oder für die Visu. |
Im Prinzip kannst du alles von der Client Instanz verwenden. |
Hallo @tbnobody , zur Bestimmung der Leistung der WR hab ich noch etwas beizutragen. HM300 (70%) HM300 (100%) Gibt es noch mehr Leute, bei denen eine Drosselung auf 70% o.ä besteht? |
Ich hab's wie von Dir beschrieben getestet....läuft seit guten 3 Wochen fehlerfrei. Danke für den Tipp! |
Stimmt bei mir auch. |
@klahus1 Danke für die eingehende Analyse der Leistungslimitierung durch Dich! |
Ich mache das Issue hier mal zu, da die Limitierung ja generell erledigt ist. |
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new discussion or issue for related concerns. |
Hallo tbnobody,
hier das Protokoll zur Leistungsreduzierung HM300:
Erste Version quick and dirty mit dem openDTU implementiert und getestet:
limit = zwei Byte, eine Dezimalstelle. Z.B: 30.0W = 300dez = 0x01 0x2c
Siehe auch :
Viele Grüße
Klaus
The text was updated successfully, but these errors were encountered: