Sungrow SDongle: adjust frequency#3378
Open
ndrsnhs wants to merge 2 commits into
Open
Conversation
Contributor
There was a problem hiding this comment.
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
/10frequency correction only forVersion.SH_winet_donglewhen 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. |
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)