Skip to content

Commit 6f91a29

Browse files
authored
add second battery and update config (#2527)
1 parent 40fafab commit 6f91a29

2 files changed

Lines changed: 37 additions & 8 deletions

File tree

packages/helpermodules/update_config.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
class UpdateConfig:
5858

59-
DATASTORE_VERSION = 85
59+
DATASTORE_VERSION = 86
6060

6161
valid_topic = [
6262
"^openWB/bat/config/configured$",
@@ -2307,3 +2307,22 @@ def cp_upgrade(topic: str, payload) -> Optional[dict]:
23072307
self._loop_all_received_topics(upgrade)
23082308
self._loop_all_received_topics(cp_upgrade)
23092309
self.__update_topic("openWB/system/datastore_version", 85)
2310+
2311+
def upgrade_datastore_85(self) -> None:
2312+
def upgrade(topic: str, payload) -> None:
2313+
if re.search("openWB/system/device/[0-9]+", topic) is not None:
2314+
payload = decode_payload(payload)
2315+
index = get_index(topic)
2316+
if payload.get("type") == "good_we":
2317+
for component_topic, component_payload in self.all_received_topics.items():
2318+
if re.search(f"openWB/system/device/{index}/component/[0-9]+/config",
2319+
component_topic) is not None:
2320+
config_payload = decode_payload(component_payload)
2321+
if (config_payload["type"] == "bat" and
2322+
config_payload["configuration"].get("battery_index") is None):
2323+
config_payload["configuration"].update({
2324+
"battery_index": 1,
2325+
})
2326+
return {component_topic: config_payload}
2327+
self._loop_all_received_topics(upgrade)
2328+
self.__update_topic("openWB/system/datastore_version", 86)

packages/modules/devices/good_we/good_we/bat.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from modules.common.component_type import ComponentDescriptor
88
from modules.common.modbus import ModbusDataType
99
from modules.common.fault_state import ComponentInfo, FaultState
10+
from modules.common.simcount import SimCounter
1011
from modules.common.store import get_bat_value_store
1112
from modules.devices.good_we.good_we.config import GoodWeBatSetup
1213
from modules.devices.good_we.good_we.version import GoodWeVersion
@@ -29,20 +30,29 @@ def initialize(self) -> None:
2930
self.version: GoodWeVersion = self.kwargs['version']
3031
self.firmware: int = self.kwargs['firmware']
3132
self.__tcp_client: modbus.ModbusTcpClient_ = self.kwargs['client']
33+
self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="speicher")
3234
self.store = get_bat_value_store(self.component_config.id)
3335
self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
3436

3537
def update(self) -> None:
38+
battery_index = getattr(self.component_config.configuration, "battery_index", 1)
3639
with self.__tcp_client:
37-
if self.version == GoodWeVersion.V_1_7:
38-
power = self.__tcp_client.read_holding_registers(35183, ModbusDataType.INT_16, unit=self.__modbus_id)*-1
40+
if battery_index == 1:
41+
if self.version == GoodWeVersion.V_1_7:
42+
power = self.__tcp_client.read_holding_registers(
43+
35183, ModbusDataType.INT_16, unit=self.__modbus_id)*-1
44+
else:
45+
power = self.__tcp_client.read_holding_registers(
46+
35182, ModbusDataType.INT_32, unit=self.__modbus_id)*-1
47+
soc = self.__tcp_client.read_holding_registers(37007, ModbusDataType.UINT_16, unit=self.__modbus_id)
48+
imported = self.__tcp_client.read_holding_registers(
49+
35206, ModbusDataType.UINT_32, unit=self.__modbus_id) * 100
50+
exported = self.__tcp_client.read_holding_registers(
51+
35209, ModbusDataType.UINT_32, unit=self.__modbus_id) * 100
3952
else:
4053
power = self.__tcp_client.read_holding_registers(35182, ModbusDataType.INT_32, unit=self.__modbus_id)*-1
41-
soc = self.__tcp_client.read_holding_registers(37007, ModbusDataType.UINT_16, unit=self.__modbus_id)
42-
imported = self.__tcp_client.read_holding_registers(
43-
35206, ModbusDataType.UINT_32, unit=self.__modbus_id) * 100
44-
exported = self.__tcp_client.read_holding_registers(
45-
35209, ModbusDataType.UINT_32, unit=self.__modbus_id) * 100
54+
soc = self.__tcp_client.read_holding_registers(37007, ModbusDataType.UINT_16, unit=self.__modbus_id)
55+
imported, exported = self.sim_counter.sim_count(power)
4656

4757
bat_state = BatState(
4858
power=power,

0 commit comments

Comments
 (0)