Skip to content

Commit 76dbc61

Browse files
authored
check endianness (#3105)
1 parent 45ef9f5 commit 76dbc61

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

  • packages/modules/devices/kostal/kostal_plenticore

packages/modules/devices/kostal/kostal_plenticore/bat.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,21 @@ def set_power_limit(self, power_limit: Optional[int]) -> None:
7070
# wiederholt auf Stop setzen damit sich Register nicht zurücksetzt
7171
log.debug("Aktive Batteriesteuerung. Batterie wird auf Stop gesetzt und nicht entladen")
7272
packed = struct.pack('>f', 0.0)
73-
registers = [int.from_bytes(packed[0:2], 'big'), int.from_bytes(packed[2:4], 'big')]
73+
if self.endianess == Endian.Little:
74+
registers = [int.from_bytes(packed[2:4], 'little'), int.from_bytes(packed[0:2], 'little')]
75+
else:
76+
registers = [int.from_bytes(packed[0:2], 'big'), int.from_bytes(packed[2:4], 'big')]
7477
self.client.write_registers(1034, registers, data_type=ModbusDataType.FLOAT_32, unit=unit)
7578
elif power_limit < 0:
7679
log.debug(f"Aktive Batteriesteuerung. Batterie wird mit {power_limit} W entladen für den Hausverbrauch")
7780
# Die maximale Entladeleistung begrenzen auf 7000W
7881
power_value = float(min(abs(power_limit), 7000)) * -1
7982
log.debug(f"Aktive Batteriesteuerung. Batterie wird mit {power_value} W entladen für den Hausverbrauch")
8083
packed = struct.pack('>f', power_value)
81-
registers = [int.from_bytes(packed[0:2], 'big'), int.from_bytes(packed[2:4], 'big')]
84+
if self.endianess == Endian.Little:
85+
registers = [int.from_bytes(packed[2:4], 'little'), int.from_bytes(packed[0:2], 'little')]
86+
else:
87+
registers = [int.from_bytes(packed[0:2], 'big'), int.from_bytes(packed[2:4], 'big')]
8288
self.client.write_registers(1034, registers, data_type=ModbusDataType.FLOAT_32, unit=unit)
8389

8490
def power_limit_controllable(self) -> bool:

0 commit comments

Comments
 (0)