Inhalt
Übersicht
Dieser Issue behandelt die Erkenntnisse zum abweichenden Verhalten der Hoymiles HMS-Wechselrichter mit 'Power Distribution Logic' / ab Firmware 1.1.12 bzw. 2.0.4 bezüglich des ActivePowerControl-Kommandos.
Die damit verbundene, abweichende SystemConfigPara-Antwort ('Typ' 0x0003) wird in einem separaten Issue behandelt.
Erkenntnisse:
- Die Umsetzung des
ActivePowerControl-Kommando wurde ursprünglich auf Basis der HM-Serie zurückentwickelt.
- Es funktionierte bis zur WR-Firmware 1.0.x auch bei der HMS-Serie identisch.
- Seit WR-Firmware 1.1.12 bzw. 2.0.4 gibt es damit aber Abweichungen im Verhalten der WR (keine persistenten Limits mehr möglich / abweichende
SystemConfigPara-Antwort).
- Die notwendige Modifikation des
ActivePowerControl-Kommando bzw. des damit gesendeten PowerLimitControlType zum Setzen eines relativen, persistenten Limits ist bekannt (0x0003 statt 0x0101). Die Werte für die anderen drei Kombinationen für nicht-persistente und absolute Limits nicht.
- Wichtig dabei ist:
- Dieses modifizierte
ActivePowerControl-Kommando wird von der Hoymiles DTU-S-Serie für HMS-Wechselrichter schon immer so gesendet (Trace von Februar 2023 vorhanden / Danke an Lukas) und funktioniert deshalb auch korrekt mit den WR-Firmware Versionen 1.0.x (siehe letzte Spalte in Analyse des Verhaltens)
- Es wurde bisher nur noch nie beachtet, da die für die HM-Serie verwendeten Kommandos bis jetzt auch für die HMS-Serie funktionierten.
- Das Problem ist also:
- Die Verwendung von eigentlich 'falschen'
ActivePowerControl-Kommandos für die HMS-Serie.
- Das geänderte Verhalten der WR, welches sich aber erst mit Hoymiles Firmware-Versionen ab 1.1.12 (bzw. 2.0.4) bemerkbar macht.
Analyse des Verhaltens WR-Firmware 1.0.27 vs. 2.0.4
relative Limits / Vergleich PowerLimitControlType 'HM' vs. 'HMS'
|
ActivePowerControl-Command (aka Limit) |
| Firmware |
rel. temp. 'HM' (0x0001) |
rel. pers. 'HM' (0x0101) |
rel. pers. 'HMS' (0x0003) |
| 1.0.27 |
✅ - Power output is adjusted to limit. - Limit is not persistent. - SystemConfigPara response contains the actual limit. |
✅ - Power output is adjusted to limit. - Limit is persistent after restart / power cycle. - SystemConfigPara response contains the actual limit. |
✅ - Power output is adjusted to limit. - Limit is persistent after restart / power cycle. - SystemConfigPara response contains the actual limit. |
| 2.0.4 |
✅ - Power output is adjusted to limit. - Limit is not persistent.
❌ - SystemConfigPara response does NOT contain the actual limit. |
✅ - Power output is adjusted to limit.
❌ - Limit is not persistent. - SystemConfigPara response does NOT contain the actual limit. |
✅ - Power output is adjusted to limit. - Limit is persistent after restart / power cycle. - SystemConfigPara response (type 0x0003) does contain the actual limit. |
Vergleich PowerLimitControlType 'HMS' vs. Firmware
|
ActivePowerControl-Command (aka Limit) |
| Firmware |
abs. temp. (0x00) |
rel. temp. (0x01) |
abs. pers. (0x02) |
rel. pers. (0x03) |
| 1.0.27 |
✅ Power output ✅ Limit temp. ✅ SystemConfigPara |
✅ Power output ✅ Limit temp. ✅ SystemConfigPara |
✅ Power output ✅ Limit pers. ✅ SystemConfigPara |
✅ Power output ✅ Limit pers. ✅ SystemConfigPara |
| 1.1.12 |
✅Power output ✅ Limit temp. ✅ SystemConfigPara |
✅Power output ✅ Limit temp. ✅ SystemConfigPara |
❓Power output ❓ Limit pers. ❓ SystemConfigPara |
✅Power output ✅ Limit pers. ✅ SystemConfigPara |
| 2.0.4 |
✅ Power output ✅ Limit temp. ❌ SystemConfigPara |
✅ Power output ✅ Limit temp. ❌ SystemConfigPara |
✅ Power output ✅ Limit pers. ✅ SystemConfigPara |
✅ Power output ✅ Limit pers. ✅ SystemConfigPara |
Lösung: Ideen / Vorschläge
Ermittlung der noch unbekannten ActivePowerControl-Kommandos für die nicht-persistenten und absoluten Limits.
Die Hoymiles-Cloud erlaubt nur das direkte Senden des relativen, persistenten Limits.
Für die Analyse der anderen Limits könnte die Hoymiles Zero-Export-Funktion geeignet sein. Zumindest die nicht-persistenten Limits sollten dort verwendet werden.
- Die Kommandos für die relativen Limits (0x01 und 0x03) der HMS-Serie konnten per Hoymiles DTU-Pro-S + Modbus ermittelt / bestätigt werden (für Details siehe diesen Kommentar).
- Die Kommandos für die absoluten Limits der HMS-Serie wurden 'geraten' und durch Tests verifiziert. Das Bit für die Persistenz ist im Gegensatz zur HM-Serie (dort niederwertigstes Bit im zweiten Byte) jetzt im zweiten Bit des ersten Byte zu finden.
typedef enum {
AbsolutNonPersistent = 0x0000,
RelativNonPersistent = 0x0001,
AbsolutPersistent = 0x0002, // 0b10 statt 0x0100
RelativPersistent = 0x0003 // 0b11 statt 0x0101
} PowerLimitControlType;
- Der einzige Unterschied im Verhalten der Hoymiles Firmware 1.0.27 vs. 2.0.4 zeigt sich jetzt noch darin, dass die temporären / nicht persistenten Limits nicht mehr in der
SystemParaConfig-Response 'gespiegelt' werden. Ob das ein Bug oder bewusstes Feature seitens Hoymiles ist, muss noch herausgefunden werden.
- Es muss beim Senden des
ActivePowerControl-Kommandos dann entsprechend der Wechselrichterserie (HM / HMS) unterschieden werden.
weiterführende Informationen / Sammlung von Links:
Woher stammen die Werte für den PowerLimitControlType, welche mit dem ActivePowerControl-Kommando gesendet werden?
-
Die Werte stammen aus dem Quellcode einer DTU-Pro (ohne S) und Reverse Engineering + Verifizierung mit Wechselrichtern der HM-Serie
-
Die Werte funktionierten nach wie vor auch bei HMS / HMT Wechselrichtern mit Firmware bis 1.0.x
- ab Firmware 1.1.12 wurde das persistente Limit nicht mehr übernommen (Link)
- darauf hin wurde ein Bugix erstellt (Link)
- bei diesem waren aber alle Limits persistent (Link)
- Das dieser Bugfix nicht wie erwartet funktioniert ist aus meiner Sicht erklärbar.
- Es wurden auf Basis eines Hoymiles DTU-Logs des relativen, persistenten Limits alle anderen Varianten des modifizierten
ActivePowerControl-Kommandos abgeleitet.
Liste der damaligen Hauptakteure (to be continued)
Inhalt
Übersicht
Dieser Issue behandelt die Erkenntnisse zum abweichenden Verhalten der Hoymiles HMS-Wechselrichter mit 'Power Distribution Logic' / ab Firmware 1.1.12 bzw. 2.0.4 bezüglich des
ActivePowerControl-Kommandos.Die damit verbundene, abweichende
SystemConfigPara-Antwort ('Typ' 0x0003) wird in einem separaten Issue behandelt.Erkenntnisse:
ActivePowerControl-Kommando wurde ursprünglich auf Basis der HM-Serie zurückentwickelt.SystemConfigPara-Antwort).ActivePowerControl-Kommando bzw. des damit gesendeten PowerLimitControlType zum Setzen eines relativen, persistenten Limits ist bekannt (0x0003 statt 0x0101). Die Werte für die anderen drei Kombinationen für nicht-persistente und absolute Limits nicht.ActivePowerControl-Kommando wird von der Hoymiles DTU-S-Serie für HMS-Wechselrichter schon immer so gesendet (Trace von Februar 2023 vorhanden / Danke an Lukas) und funktioniert deshalb auch korrekt mit den WR-Firmware Versionen 1.0.x (siehe letzte Spalte in Analyse des Verhaltens)ActivePowerControl-Kommandos für die HMS-Serie.Analyse des Verhaltens WR-Firmware 1.0.27 vs. 2.0.4
relative Limits / Vergleich PowerLimitControlType 'HM' vs. 'HMS'
- Power output is adjusted to limit.
- Limit is not persistent.
- SystemConfigPara response contains the actual limit.
- Power output is adjusted to limit.
- Limit is persistent after restart / power cycle.
- SystemConfigPara response contains the actual limit.
- Power output is adjusted to limit.
- Limit is persistent after restart / power cycle.
- SystemConfigPara response contains the actual limit.
- Power output is adjusted to limit.
- Limit is not persistent.
❌
- SystemConfigPara response does NOT contain the actual limit.
- Power output is adjusted to limit.
❌
- Limit is not persistent.
- SystemConfigPara response does NOT contain the actual limit.
- Power output is adjusted to limit.
- Limit is persistent after restart / power cycle.
- SystemConfigPara response (type 0x0003) does contain the actual limit.
Vergleich PowerLimitControlType 'HMS' vs. Firmware
✅ Limit temp.
✅ SystemConfigPara
✅ Limit temp.
✅ SystemConfigPara
✅ Limit pers.
✅ SystemConfigPara
✅ Limit pers.
✅ SystemConfigPara
✅ Limit temp.
✅ SystemConfigPara
✅ Limit temp.
✅ SystemConfigPara
❓ Limit pers.
❓ SystemConfigPara
✅ Limit pers.
✅ SystemConfigPara
✅ Limit temp.
❌ SystemConfigPara
✅ Limit temp.
❌ SystemConfigPara
✅ Limit pers.
✅ SystemConfigPara
✅ Limit pers.
✅ SystemConfigPara
Lösung: Ideen / Vorschläge
Ermittlung der noch unbekanntenActivePowerControl-Kommandos für die nicht-persistenten und absoluten Limits.Die Hoymiles-Cloud erlaubt nur das direkte Senden des relativen, persistenten Limits.Für die Analyse der anderen Limits könnte die Hoymiles Zero-Export-Funktion geeignet sein. Zumindest die nicht-persistenten Limits sollten dort verwendet werden.SystemParaConfig-Response 'gespiegelt' werden. Ob das ein Bug oder bewusstes Feature seitens Hoymiles ist, muss noch herausgefunden werden.ActivePowerControl-Kommandos dann entsprechend der Wechselrichterserie (HM / HMS) unterschieden werden.weiterführende Informationen / Sammlung von Links:
Woher stammen die Werte für den PowerLimitControlType, welche mit dem
ActivePowerControl-Kommando gesendet werden?Die Werte stammen aus dem Quellcode einer DTU-Pro (ohne S) und Reverse Engineering + Verifizierung mit Wechselrichtern der HM-Serie
Die Werte funktionierten nach wie vor auch bei HMS / HMT Wechselrichtern mit Firmware bis 1.0.x
ActivePowerControl-Kommandos abgeleitet.Liste der damaligen Hauptakteure (to be continued)