Skip to content

Commit 77cd4d0

Browse files
MBungalskiLKuemmel
andauthored
Fix SMA Data-Manager/Cluster-Controller/Core2 (#2857)
* Fix SMA Data-Manager/Cluster-Controller/Core2 - The "currents" array is set on the Data Manager/Cluster Controller. Since there is no Modbus register, the values ​​are calculated based on the power. - The "currents" array is read and set on the Core2 inverter. * Update packages/modules/devices/sma/sma_sunny_boy/inverter.py Co-authored-by: LKuemmel <76958050+LKuemmel@users.noreply.github.com> * Update packages/modules/devices/sma/sma_sunny_boy/inverter.py Co-authored-by: LKuemmel <76958050+LKuemmel@users.noreply.github.com> * Probleme mit Einrückung korrigiert --------- Co-authored-by: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
1 parent 4ed8e66 commit 77cd4d0

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

‎packages/modules/devices/sma/sma_sunny_boy/inverter.py‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,13 @@ def read(self) -> InverterState:
6868
power_total = self.tcp_client.read_holding_registers(40084, ModbusDataType.INT_16, unit=unit) * 10
6969
# Gesamtertrag (Wh) [E-Total] SF=2!
7070
energy = self.tcp_client.read_holding_registers(40094, ModbusDataType.UINT_32, unit=unit) * 100
71+
# Power
7172
dc_power = self.tcp_client.read_holding_registers(40101, ModbusDataType.UINT_32, unit=unit) * 100
73+
# Phasenstöme
74+
current_L1 = self.tcp_client.read_holding_registers(30977, ModbusDataType.INT_32, unit=unit) * -1
75+
current_L2 = self.tcp_client.read_holding_registers(30979, ModbusDataType.INT_32, unit=unit) * -1
76+
current_L3 = self.tcp_client.read_holding_registers(30981, ModbusDataType.INT_32, unit=unit) * -1
77+
currents = [current_L1 / 1000, current_L2 / 1000, current_L3 / 1000]
7278
elif self.component_config.configuration.version == SmaInverterVersion.datamanager:
7379
# AC Wirkleistung über alle Phasen (W) [Pac]
7480
power_total = self.tcp_client.read_holding_registers(30775, ModbusDataType.INT_32, unit=unit)
@@ -78,6 +84,9 @@ def read(self) -> InverterState:
7884
# daher ist wie bei SmaInverterVersion.default keine Prüfung auf DC-Leistung notwendig.
7985
# Aus kompatibilitätsgründen wird dc_power auf den Wert der AC-Wirkleistung gesetzt.
8086
dc_power = power_total
87+
# Der Data-Manager/Cluster-Controller bietet keine Modbus-Register mit Phasenströmen an.
88+
# Daher die Phasenströme berechnen (es wird davon ausgegangen, dass eine symmetrische Erzeugung erfolgt)
89+
currents = [(power_total / 3 / 230) * -1] * 3
8190
else:
8291
raise ValueError("Unbekannte Version "+str(self.component_config.configuration.version))
8392
if power_total == self.SMA_INT32_NAN or power_total == self.SMA_NAN:

0 commit comments

Comments
 (0)