Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion packages/helpermodules/update_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@

class UpdateConfig:

DATASTORE_VERSION = 140
DATASTORE_VERSION = 141

valid_topic = [
"^openWB/bat/config/bat_control_activated$",
Expand Down Expand Up @@ -3554,3 +3554,31 @@ def upgrade(topic: str, payload) -> Optional[dict]:
return None
self._loop_all_received_topics(upgrade)
self._append_datastore_version(140)

def upgrade_datastore_141(self) -> None:
"""Fronius-Modul aufgeräumt: in fronius_http_api umbenannt, sekundären Wechselrichter in den
Wechselrichter und S0-/SmartMeter-Zähler in einen gemeinsamen Zähler-Typ zusammengeführt."""
def upgrade(topic: str, payload) -> Optional[dict]:
if re.search("^openWB/system/device/[0-9]+/config$", topic) is not None:
payload_device = decode_payload(payload)
if payload_device.get("type") == "fronius":
payload_device["type"] = "fronius_http_api"
return {topic: payload_device}
elif re.search("^openWB/system/device/[0-9]+/component/[0-9]+/config$", topic) is not None:
payload_component = decode_payload(payload)
comp_type = payload_component.get("type")
if comp_type == "inverter_secondary":
secondary_id = payload_component.get("configuration", {}).get("id", 1)
payload_component["type"] = "inverter"
payload_component["configuration"] = {"secondary_id": secondary_id}
return {topic: payload_component}
elif comp_type == "counter_s0":
# 3 == COUNTER_VARIANT_S0 in modules.devices.fronius.fronius_http_api.config
payload_component["type"] = "counter"
payload_component["configuration"] = {"variant": 3, "meter_id": 0}
return {topic: payload_component}
elif comp_type == "counter_sm":
payload_component["type"] = "counter"
return {topic: payload_component}
self._loop_all_received_topics(upgrade)
self._append_datastore_version(141)
65 changes: 65 additions & 0 deletions packages/helpermodules/update_config_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,71 @@ def test_upgrade_datastore_124_adds_missing_odometer_pattern_for_json_soc_module
assert "odometer_pattern" not in ha_config


def test_upgrade_datastore_141_cleans_up_fronius_module():
update_con = UpdateConfig()
update_con.all_received_topics = {
"openWB/system/datastore_version": list(range(141)),
"openWB/system/device/0/config": {
"name": "Fronius",
"type": "fronius",
"id": 0,
"vendor": "fronius",
"configuration": {"ip_address": "192.168.1.10"}
},
"openWB/system/device/1/config": {
"name": "Some other device",
"type": "sma_sunny_boy",
"id": 1,
"vendor": "sma",
"configuration": {}
},
"openWB/system/device/0/component/1/config": {
"name": "Sekundärer Wechselrichter",
"type": "inverter_secondary",
"id": 1,
"configuration": {"id": 2}
},
"openWB/system/device/0/component/2/config": {
"name": "Fronius Speicher",
"type": "bat",
"id": 2,
"configuration": {"meter_id": 0}
},
"openWB/system/device/0/component/3/config": {
"name": "Fronius S0 Zähler",
"type": "counter_s0",
"id": 3,
"configuration": {}
},
"openWB/system/device/1/component/1/config": {
"name": "Fronius SM Zähler",
"type": "counter_sm",
"id": 1,
"configuration": {"meter_id": 1, "variant": 2}
}
}

update_con.upgrade_datastore_141()

assert update_con.all_received_topics["openWB/system/device/0/config"]["type"] == "fronius_http_api"
assert update_con.all_received_topics["openWB/system/device/1/config"]["type"] == "sma_sunny_boy"

migrated_inverter = update_con.all_received_topics["openWB/system/device/0/component/1/config"]
assert migrated_inverter["type"] == "inverter"
assert migrated_inverter["configuration"] == {"secondary_id": 2}

unaffected_bat = update_con.all_received_topics["openWB/system/device/0/component/2/config"]
assert unaffected_bat["type"] == "bat"

s0_migrated = update_con.all_received_topics["openWB/system/device/0/component/3/config"]
assert s0_migrated["type"] == "counter"
assert s0_migrated["configuration"] == {"variant": 3, "meter_id": 0}

sm_migrated = update_con.all_received_topics["openWB/system/device/1/component/1/config"]
assert sm_migrated["type"] == "counter"
assert sm_migrated["configuration"] == {"meter_id": 1, "variant": 2}


@pytest.mark.parametrize("name", [
"happy_path",
"missing_prices_dict",
Expand Down
69 changes: 0 additions & 69 deletions packages/modules/devices/fronius/fronius/bat.py

This file was deleted.

82 changes: 0 additions & 82 deletions packages/modules/devices/fronius/fronius/bat_test.py

This file was deleted.

53 changes: 0 additions & 53 deletions packages/modules/devices/fronius/fronius/counter_s0.py

This file was deleted.

Loading