Skip to content

Sungrow SDongle: adjust frequency#3378

Open
ndrsnhs wants to merge 2 commits into
openWB:masterfrom
ndrsnhs:sungrow-sdongle-frequency
Open

Sungrow SDongle: adjust frequency#3378
ndrsnhs wants to merge 2 commits into
openWB:masterfrom
ndrsnhs:sungrow-sdongle-frequency

Conversation

@ndrsnhs
Copy link
Copy Markdown
Contributor

@ndrsnhs ndrsnhs commented May 20, 2026

Ticket #66002369
Ab und zu gibt es Tickets bei denen der SDongle die Frequenz um den Faktor 10 zu niedrig ausgibt. Betroffen ist hier der WiNet-S. Ob das Verhalten beim S2 ebenfalls auftritt ist nicht geklärt.
Ansatz ist den Frequenzwert nur durch den Faktor 10 zu teilen wenn es wirklich "nötig" ist.

Wenn man sehr großzügig annimmt, dass sich die Frequenz im Bereich 40-60Hz bewegen kann erfolgt die Anpassung durch Faktor bei Frequenzen über 400Hz (Wert 10 mal höher als er sein sollte)

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts frequency scaling for Sungrow SH counters using the WiNet-S (SDongle) to avoid erroneous 10× under-reporting when firmware already provides correctly scaled values.

Changes:

  • Apply an additional /10 frequency correction only for Version.SH_winet_dongle when the scaled frequency indicates a likely 10× value (>400 Hz after initial scaling).
  • Expand inline comments to document the heuristic and expected frequency range.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +50 to +54
if self.device_config.configuration.version == Version.SH_winet_dongle and frequency > 400:
# On WiNet-S, the frequency accuracy is sometimes higher by one place
# For some SDongle Firmware Versions it is not. Frequency should roughly
# range between 40 and 60. Therefore, if the value is above 400, we assume
# it is actually 10 times higher than it should be and adjust it accordingly.
# On WiNet-S, the frequency accuracy is sometimes higher by one place
# For some SDongle Firmware Versions it is not. Frequency should roughly
# range between 40 and 60. Therefore, if the value is above 400, we assume
# it is actually 10 times higher than it should be and adjust it accordingly.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment on lines 49 to 55
frequency = self.__tcp_client.read_input_registers(5035, ModbusDataType.UINT_16, unit=unit) / 10
if self.device_config.configuration.version == Version.SH_winet_dongle:
# On WiNet-S, the frequency accuracy is higher by one place
if self.device_config.configuration.version == Version.SH_winet_dongle and frequency >= 400:
# On WiNet-S, the frequency accuracy is sometimes higher by one place
# For some SDongle Firmware Versions it is not. Frequency should roughly
# range between 40 and 60. Therefore, if the value is above 400, we assume
# it is actually 10 times higher than it should be and adjust it accordingly.
frequency /= 10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants