Skip to content

Fix Solis#1990

Merged
LKuemmel merged 4 commits intoopenWB:masterfrom
the2masters:patch-1
Nov 7, 2024
Merged

Fix Solis#1990
LKuemmel merged 4 commits intoopenWB:masterfrom
the2masters:patch-1

Conversation

@the2masters
Copy link
Copy Markdown
Contributor

@the2masters the2masters commented Nov 1, 2024

Ich habe das Solis-Modul solange verändert, bis es mit meinem Hybrid-Wechselrichter läuft. Siehe Fehlerreport: https://forum.openwb.de/viewtopic.php?p=118743#p118743

Wahrscheinlich brauchen wir auch #1989

The Solis support was created based on Fox ESS. It looks like the
creator missed to adjust the modbus address for SOC, it's 33139 based
on a register map I got from solis support.

Total discharge energy is also in kWh, not 1/10kWh units.
Every modbus query fails, as all registers need to be read as input
registers (code 0x04), instead of holding register.
right now I get the following error:
UnboundLocalError: local variable 'power' referenced before assignment

Fix it by moving some code around.
@the2masters the2masters mentioned this pull request Nov 1, 2024
Comment on lines +25 to +34
powerreg = 33057
exportedreg = 33029

if self.version == SolisVersion.inverter:
power = client.read_holding_registers(3004, ModbusDataType.UINT_32, unit=unit) * -1
# Unit 1kWh
exported = client.read_holding_registers(3008, ModbusDataType.UINT_32, unit=unit) * 1000
elif self.version == SolisVersion.hybrid:
power = client.read_holding_registers(33057, ModbusDataType.UINT_32, unit=unit) * -1
# Unit 1kWh
exported = client.read_holding_registers(33029, ModbusDataType.UINT_32, unit=unit) * 1000
powerreg = 3004
exportedreg = 3008

power = client.read_input_registers(powerreg, ModbusDataType.UINT_32, unit=unit) * -1
# Unit 1kWh
exported = client.read_input_registers(exportedreg, ModbusDataType.UINT_32, unit=unit) * 1000
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Macht das gleiche ist aber konsistent zu anderen Modulen

if self.version == SolisVersion.inverter:
    power = client.read_input_registers(3004, ModbusDataType.UINT_32, unit=unit) * -1
    exported = client.read_input_registers(3008, ModbusDataType.UINT_32, unit=unit) * 1000
elif self.version == SolisVersion.hybrid:
    power = client.read_input_registers(33057, ModbusDataType.UINT_32, unit=unit) * -1
    exported = client.read_input_registers(33029, ModbusDataType.UINT_32, unit=unit) * 1000

@LKuemmel LKuemmel merged commit ec23648 into openWB:master Nov 7, 2024
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.

3 participants