diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index 6d1609d069..f631d09901 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -1025,7 +1025,7 @@ def process_system_topic(self, msg: mqtt.MQTTMessage):
elif "openWB/set/system/time" in msg.topic:
self._validate_value(msg, float)
elif "openWB/set/system/datastore_version" in msg.topic:
- self._validate_value(msg, int, [(0, UpdateConfig.DATASTORE_VERSION)])
+ self._validate_value(msg, int, [(0, UpdateConfig.DATASTORE_VERSION)], collection=list)
elif "openWB/set/system/GetRemoteSupport" in msg.topic:
# Server-Topic enthält kein json-Payload.
payload = msg.payload.decode("utf-8")
diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 35546cc50b..1e79a285aa 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -57,7 +57,7 @@
class UpdateConfig:
- DATASTORE_VERSION = 102
+ DATASTORE_VERSION = 101
valid_topic = [
"^openWB/bat/config/bat_control_permitted$",
@@ -593,7 +593,7 @@ class UpdateConfig:
("openWB/system/current_commit", None),
("openWB/system/installAssistantDone", False),
("openWB/system/dataprotection_acknowledged", False),
- ("openWB/system/datastore_version", DATASTORE_VERSION),
+ ("openWB/system/datastore_version", list(range(DATASTORE_VERSION))),
("openWB/system/usage_terms_acknowledged", False),
("openWB/system/debug_level", 30),
("openWB/system/device/module_update_completed", True),
@@ -707,16 +707,20 @@ def __update_version(self):
self.__update_topic("openWB/system/version", version)
def __solve_breaking_changes(self) -> None:
- """ solve breaking changes in the datastore
- """
- datastore_version = (decode_payload(self.all_received_topics.get("openWB/system/datastore_version")) or
- self.DATASTORE_VERSION)
- log.debug(f"current datastore version: {datastore_version}")
+ """ datastore_version ist eine Liste mit allen durchgeführten datastore-Upgrades, damit bei Patch-Versionen
+ einzelne Upgrades übersprungen werden können und bei einem anschließenden Major-Upgrade alle fehlenden Upgrades
+ durchgeführt werden."""
+ datastore_versions = decode_payload(self.all_received_topics.get("openWB/system/datastore_version"))
+ if datastore_versions is None or isinstance(datastore_versions, int):
+ datastore_versions = list(range(datastore_versions or self.DATASTORE_VERSION+1))
+ self.__update_topic("openWB/system/datastore_version", datastore_versions)
+ log.debug(f"current datastore version: {datastore_versions}")
log.debug(f"target datastore version: {self.DATASTORE_VERSION}")
- for version in range(datastore_version, self.DATASTORE_VERSION):
+ for version in list(range(self.DATASTORE_VERSION+1)):
try:
- log.debug(f"upgrading datastore from version '{version}' to '{version + 1}'")
- getattr(self, f"upgrade_datastore_{version}")()
+ if version not in datastore_versions:
+ log.debug(f"upgrading datastore version '{version}'")
+ getattr(self, f"upgrade_datastore_{version}")()
except AttributeError:
log.error(f"missing upgrade function! '{version}'")
except Exception:
@@ -736,6 +740,12 @@ def _loop_all_received_topics(self, callback) -> None:
for topic, payload in modified_topics.items():
self.__update_topic(topic, payload)
+ def _append_datastore_version(self, version: int) -> None:
+ datastore_versions = decode_payload(self.all_received_topics.get("openWB/system/datastore_version"))
+ if version not in datastore_versions:
+ datastore_versions.append(version)
+ self.__update_topic("openWB/system/datastore_version", datastore_versions)
+
def upgrade_datastore_0(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
modified_topics = {}
@@ -833,7 +843,7 @@ def upgrade_logs() -> None:
self._loop_all_received_topics(upgrade)
upgrade_logs()
- self.__update_topic("openWB/system/datastore_version", 1)
+ self._append_datastore_version(0)
def upgrade_datastore_1(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -860,7 +870,7 @@ def get_decoded_value(name: str) -> float:
modified_topics[f"{simulation_topic}/present_exported"] = ""
return modified_topics
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 2)
+ self._append_datastore_version(1)
def upgrade_datastore_2(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -875,7 +885,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload["limit"].pop("soc")
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 3)
+ self._append_datastore_version(2)
def upgrade_datastore_3(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -888,14 +898,14 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload["limit"] = {"selected": "soc", "amount": 1000, "soc": 70}
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 4)
+ self._append_datastore_version(3)
def upgrade_datastore_4(self) -> None:
moved_file = False
for path in Path("/etc/mosquitto/conf.d").glob('99-bridge-openwb-*.conf'):
run_command(["sudo", "mv", str(path), str(path).replace("conf.d", "conf_local.d")], process_exception=True)
moved_file = True
- self.__update_topic("openWB/system/datastore_version", 5)
+ self._append_datastore_version(4)
if moved_file:
time.sleep(1)
run_command([str(self.base_path / "runs" / "reboot.sh")], process_exception=True)
@@ -910,7 +920,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload["max_current_multi_phases"] = 32
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 6)
+ self._append_datastore_version(5)
def upgrade_datastore_6(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -920,7 +930,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload["autolock"].pop("plans")
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 7)
+ self._append_datastore_version(6)
def upgrade_datastore_7(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -930,7 +940,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload["keep_charge_active_duration"] = EvTemplateData().keep_charge_active_duration
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 8)
+ self._append_datastore_version(7)
def upgrade_datastore_8(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -946,7 +956,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload.pop("power_module")
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 9)
+ self._append_datastore_version(8)
def upgrade_datastore_9(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -957,7 +967,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
log.debug("cloud bridge configuration upgraded")
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 10)
+ self._append_datastore_version(9)
def upgrade_datastore_10(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -968,7 +978,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload["average_consump"] = payload["average_consump"] * 1000
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 11)
+ self._append_datastore_version(10)
def upgrade_datastore_11(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -979,7 +989,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload["configuration"].update({"duo_num": 0})
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 12)
+ self._append_datastore_version(11)
def upgrade_datastore_12(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -989,7 +999,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
return {f"openWB/set/vehicle/{index}/soc_module/interval_config":
dataclass_utils.asdict(GeneralVehicleConfig())}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 13)
+ self._append_datastore_version(12)
def upgrade_datastore_13(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1000,7 +1010,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload["configuration"]["duo_num"] = payload["configuration"]["duo_num"] - 1
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 14)
+ self._append_datastore_version(13)
def upgrade_datastore_14(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1011,7 +1021,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload["configuration"].pop("ip_adress")
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 15)
+ self._append_datastore_version(14)
def upgrade_datastore_15(self) -> None:
files = glob.glob(str(self.base_path / "data" / "daily_log") + "/*")
@@ -1042,7 +1052,7 @@ def upgrade_datastore_15(self) -> None:
log.debug(f"Format der Logdatei '{file}' aktualisiert.")
except Exception:
log.exception(f"Logdatei '{file}' konnte nicht konvertiert werden.")
- self.__update_topic("openWB/system/datastore_version", 16)
+ self._append_datastore_version(15)
def upgrade_datastore_16(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1063,7 +1073,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
modified_topics[topic_component] = payload_component
return modified_topics
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 17)
+ self._append_datastore_version(16)
def upgrade_datastore_17(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1084,7 +1094,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
modified_topics[topic_component] = payload_inverter
return modified_topics
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 18)
+ self._append_datastore_version(17)
def upgrade_datastore_18(self) -> None:
def convert_file(file):
@@ -1107,7 +1117,7 @@ def convert_file(file):
log.exception(f"Logdatei '{file}' konnte nicht konvertiert werden.")
convert_file(f"{str(self.base_path / 'data' / 'daily_log')}/{timecheck.create_timestamp_YYYYMMDD()}.json")
convert_file(f"{str(self.base_path / 'data' / 'monthly_log')}/{timecheck.create_timestamp_YYYYMM()}.json")
- self.__update_topic("openWB/system/datastore_version", 19)
+ self._append_datastore_version(18)
def upgrade_datastore_19(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1122,7 +1132,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
else:
return {topic: None}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 20)
+ self._append_datastore_version(19)
def upgrade_datastore_20(self) -> None:
max_c_socket = get_hardware_configuration_setting("max_c_socket")
@@ -1130,7 +1140,7 @@ def upgrade_datastore_20(self) -> None:
update_hardware_configuration({"max_c_socket": int(max_c_socket)})
elif max_c_socket is None:
update_hardware_configuration({"max_c_socket": 32})
- self.__update_topic("openWB/system/datastore_version", 21)
+ self._append_datastore_version(20)
def upgrade_datastore_21(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1155,7 +1165,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
topic: config_payload
}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 22)
+ self._append_datastore_version(21)
def upgrade_datastore_22(self) -> None:
files = glob.glob(str(self.base_path / "data" / "charge_log") + "/*")
@@ -1176,7 +1186,7 @@ def upgrade_datastore_22(self) -> None:
log.debug(f"Format des Ladeprotokolls '{file}' aktualisiert.")
except Exception:
log.exception(f"Ladeprotokoll '{file}' konnte nicht aktualisiert werden.")
- self.__update_topic("openWB/system/datastore_version", 23)
+ self._append_datastore_version(22)
def upgrade_datastore_23(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1190,7 +1200,7 @@ def upgrade(topic: str, payload) -> None:
f"'{bridge_configuration['name']}' ({index})")
pub_system_message(payload, result, MessageType.SUCCESS)
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 24)
+ self._append_datastore_version(23)
def upgrade_datastore_24(self) -> None:
# Wenn mehrere EV eine Fahrzeug-Vorlage nutzen, wird die Effizienz des letzten für alle in der Vorlage gesetzt.
@@ -1214,7 +1224,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
modified_topics[ev_template_topic] = ev_template
return modified_topics
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 25)
+ self._append_datastore_version(24)
def upgrade_datastore_25(self) -> None:
files = glob.glob(str(self.base_path / "data" / "charge_log") + "/*")
@@ -1233,7 +1243,7 @@ def upgrade_datastore_25(self) -> None:
log.debug(f"Format des Ladeprotokolls '{file}' aktualisiert.")
except Exception:
log.exception(f"Ladeprotokoll '{file}' konnte nicht aktualisiert werden.")
- self.__update_topic("openWB/system/datastore_version", 26)
+ self._append_datastore_version(25)
def upgrade_datastore_26(self) -> None:
# module kostal_pico_old: rename "ip_address" in configuration to "url" as we need a complete url
@@ -1250,7 +1260,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
f"http://{configuration_payload['configuration']['url']}")
return {topic: configuration_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 27)
+ self._append_datastore_version(26)
def upgrade_datastore_27(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1267,7 +1277,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
configuration_payload.update({"official": True})
return {topic: configuration_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 28)
+ self._append_datastore_version(27)
def upgrade_datastore_28(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1277,12 +1287,12 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload.pop("request_start_soc")
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 29)
+ self._append_datastore_version(28)
def upgrade_datastore_29(self) -> None:
""" moved to upgrade_datastore_32
"""
- self.__update_topic("openWB/system/datastore_version", 30)
+ self._append_datastore_version(29)
def upgrade_datastore_30(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1293,7 +1303,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload["request_interval_not_charging"] = payload["request_interval_not_charging"]*60
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 31)
+ self._append_datastore_version(30)
def upgrade_datastore_31(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1303,7 +1313,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload = datetime.datetime.strptime(payload, "%m/%d/%Y, %H:%M:%S").timestamp()
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 32)
+ self._append_datastore_version(31)
def upgrade_datastore_32(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1321,7 +1331,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
"openWB/set/general/prices/pv": price
}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 33)
+ self._append_datastore_version(32)
def upgrade_datastore_33(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1334,7 +1344,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload = payload/1000 # €/kWh -> €/Wh
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 34)
+ self._append_datastore_version(33)
def upgrade_datastore_34(self) -> None:
def convert_file(file):
@@ -1368,7 +1378,7 @@ def convert_file(file):
convert_file(file)
# next upgrade only fixes a bug introduced in an earlier version of this method
# so we can skip upgrade_datastore_35() if this fixed version has run
- self.__update_topic("openWB/system/datastore_version", 36)
+ self._append_datastore_version(35)
def upgrade_datastore_35(self) -> None:
def convert_file(file):
@@ -1394,13 +1404,13 @@ def convert_file(file):
files.sort()
for file in files:
convert_file(file)
- self.__update_topic("openWB/system/datastore_version", 36)
+ self._append_datastore_version(35)
# def upgrade_datastore_36(self) -> None:
# if hardware_configuration.get_hardware_configuration_setting("ripple_control_receiver_configured", False):
# Pub().pub("openWB/set/general/ripple_control_receiver/module", dataclass_utils.asdict(GpioRcr()))
# hardware_configuration.remove_setting_hardware_configuration("ripple_control_receiver_configured")
- # self.__update_topic("openWB/system/datastore_version", 37)
+ # self._append_datastore_version(36)
def upgrade_datastore_37(self) -> None:
def collect_names(topic: str, payload) -> None:
@@ -1445,7 +1455,7 @@ def convert_file(file):
files.sort()
for file in files:
convert_file(file)
- self.__update_topic("openWB/system/datastore_version", 38)
+ self._append_datastore_version(37)
def upgrade_datastore_38(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1458,7 +1468,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload.update({"timestamp_start_charging": converted_timestamp})
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 39)
+ self._append_datastore_version(38)
def upgrade_datastore_39(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1549,7 +1559,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
elif "openWB/general/chargemode_config/pv_charging/charging_power_reserve" == topic:
return {"openWB/general/chargemode_config/pv_charging/bat_power_reserve": decode_payload(payload)}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 42)
+ self._append_datastore_version(41)
def upgrade_datastore_42(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1560,7 +1570,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
return {"openWB/general/chargemode_config/pv_charging/bat_power_reserve_active": decode_payload(
payload) > 0}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 43)
+ self._append_datastore_version(42)
def upgrade_datastore_43(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1652,7 +1662,7 @@ def upgrade_datastore_44(self) -> None:
log.exception(f"Logdatei '{filepath}' konnte nicht konvertiert werden.")
except Exception:
log.exception("Fehler beim Konvertieren der Logdateien")
- self.__update_topic("openWB/system/datastore_version", 45)
+ self._append_datastore_version(44)
def upgrade_datastore_45(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1662,7 +1672,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
"openWB/general/chargemode_config/phase_switch_delay": delay,
}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 46)
+ self._append_datastore_version(45)
def upgrade_datastore_46(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1680,7 +1690,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload.pop("rfid_enabling")
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 47)
+ self._append_datastore_version(46)
def upgrade_datastore_47(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1691,7 +1701,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload.update({"disable_after_unplug": False})
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 48)
+ self._append_datastore_version(47)
def upgrade_datastore_48(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1703,7 +1713,7 @@ def upgrade(topic: str, payload) -> None:
payload["configuration"].update({"version": GoodWeVersion.V_1_7})
Pub().pub(topic, payload)
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 49)
+ self._append_datastore_version(48)
def upgrade_datastore_49(self) -> None:
Pub().pub("openWB/system/installAssistantDone", True)
@@ -1722,7 +1732,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
else:
return {topic: ""}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 51)
+ self._append_datastore_version(50)
def upgrade_datastore_51(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1733,11 +1743,11 @@ def upgrade(topic: str, payload) -> None:
payload["configuration"].pop("device_type")
Pub().pub(topic, payload)
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 52)
+ self._append_datastore_version(51)
def upgrade_datastore_52(self) -> None:
# PR reverted
- self.__update_topic("openWB/system/datastore_version", 53)
+ self._append_datastore_version(52)
def upgrade_datastore_53(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1758,7 +1768,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
})
return {topic: configuration_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 54)
+ self._append_datastore_version(53)
def upgrade_datastore_54(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1766,7 +1776,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload = decode_payload(payload)
return {"openWB/counter/config/consider_less_charging": payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 55)
+ self._append_datastore_version(54)
def upgrade_datastore_55(self) -> None:
if hardware_configuration.exists_hardware_configuration_setting("dc_charging") is False:
@@ -1780,7 +1790,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
updated_payload["charging_type"] = ChargingType.AC.value
return {topic: updated_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 56)
+ self._append_datastore_version(55)
def upgrade_datastore_56(self) -> None:
# es gibt noch Topics von Komponenten gelöschter Geräte
@@ -1804,7 +1814,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
log.debug(f"Entferne Topic von gelöschter Komponente {topic}")
return {topic: ""}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 57)
+ self._append_datastore_version(56)
def upgrade_datastore_57(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1816,7 +1826,7 @@ def upgrade(topic: str, payload) -> None:
payload["configuration"].update({"factor": 1})
Pub().pub(topic, payload)
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 58)
+ self._append_datastore_version(57)
def upgrade_datastore_58(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1832,7 +1842,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
config_payload.update({"info": {"manufacturer": None, "model": None}})
return {topic: config_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 59)
+ self._append_datastore_version(58)
def upgrade_datastore_59(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1871,7 +1881,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
log.debug(f"Device configuration: {device_config}")
return {topic: device_config}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 60)
+ self._append_datastore_version(59)
def upgrade_datastore_60(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1885,7 +1895,7 @@ def upgrade(topic: str, payload) -> None:
payload["configuration"].update({"factor": -1})
Pub().pub(topic, payload)
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 61)
+ self._append_datastore_version(60)
def upgrade_datastore_61(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1895,14 +1905,14 @@ def upgrade(topic: str, payload) -> Optional[dict]:
max_power_errorcase = get_counter_default_config()["max_power_errorcase"]
return {f"openWB/counter/{index}/config/max_power_errorcase": max_power_errorcase}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 62)
+ self._append_datastore_version(61)
def upgrade_datastore_62(self) -> None:
pub_system_message(
{}, "Bei einem Zählerausfall werden nun 7kW für diesen Zähler freigegeben. Bisher wurde im "
"Fehlerfall die Ladung gestoppt. Du kannst die maximale Leistung im Fehlerfall für jeden Zähler"
" unter Einstellungen -> Konfiguration -> Lastmanagement anpassen.", MessageType.WARNING)
- self.__update_topic("openWB/system/datastore_version", 63)
+ self._append_datastore_version(62)
def upgrade_datastore_63(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1911,18 +1921,18 @@ def upgrade(topic: str, payload) -> Optional[dict]:
if f"openWB/bat/{index}/get/power_limit_controllable" not in self.all_received_topics.keys():
return {f"openWB/bat/{index}/get/power_limit_controllable": False}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 64)
+ self._append_datastore_version(63)
def upgrade_datastore_64(self) -> None:
pub_system_message(
{}, 'Garantieverlängerung für die openWB verfügbar -> '
'https://wb-solution.de/shop/',
MessageType.INFO)
- self.__update_topic("openWB/system/datastore_version", 65)
+ self._append_datastore_version(64)
def upgrade_datastore_65(self) -> None:
# sungrow version fixed in upgrade_datastore_71
- self.__update_topic("openWB/system/datastore_version", 66)
+ self._append_datastore_version(65)
def upgrade_datastore_66(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1933,7 +1943,7 @@ def upgrade(topic: str, payload) -> None:
payload["configuration"].update({"type": "s_dongle"})
Pub().pub(topic, payload)
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 67)
+ self._append_datastore_version(66)
def upgrade_datastore_67(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1941,7 +1951,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
if decode_payload(payload) < 5:
return {"openWB/general/chargemode_config/phase_switch_delay": 5}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 68)
+ self._append_datastore_version(67)
def upgrade_datastore_68(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1957,7 +1967,7 @@ def upgrade(topic: str, payload) -> None:
config_payload.update({"info": {"manufacturer": None, "model": None}})
return {component_topic: config_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 69)
+ self._append_datastore_version(68)
def upgrade_datastore_69(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -1969,7 +1979,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload["id"] = int(get_second_index(topic))
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 70)
+ self._append_datastore_version(69)
def upgrade_datastore_70(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1980,7 +1990,7 @@ def upgrade(topic: str, payload) -> None:
payload = NO_MODULE
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 71)
+ self._append_datastore_version(70)
def upgrade_datastore_71(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -1996,7 +2006,7 @@ def upgrade(topic: str, payload) -> None:
payload["configuration"]["firmware"] = "v2"
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 72)
+ self._append_datastore_version(71)
def upgrade_datastore_72(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -2007,7 +2017,7 @@ def upgrade(topic: str, payload) -> None:
payload = NO_MODULE
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 73)
+ self._append_datastore_version(72)
def upgrade_datastore_73(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2018,7 +2028,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
config_payload.update({"info": {"manufacturer": None, "model": None}})
return {topic: config_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 74)
+ self._append_datastore_version(73)
def upgrade_datastore_74(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -2030,7 +2040,7 @@ def upgrade(topic: str, payload) -> None:
payload["configuration"].update({"version": "g3"})
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 75)
+ self._append_datastore_version(74)
def upgrade_datastore_75(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2073,14 +2083,14 @@ def upgrade(topic: str, payload) -> Optional[dict]:
return {'openWB/system/io/0/config': dataclass_utils.asdict(io_device),
'openWB/io/action/0/config': dataclass_utils.asdict(action)}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 76)
+ self._append_datastore_version(75)
def upgrade_datastore_76(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
if re.search("openWB/chargepoint/[0-9]+/control_parameter/limit", topic) is not None:
return {topic: dataclass_utils.asdict(LoadmanagementLimit(None, None))}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 77)
+ self._append_datastore_version(76)
def upgrade_datastore_77(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2111,7 +2121,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
configuration_payload.update({"official": True})
return {topic: configuration_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 78)
+ self._append_datastore_version(77)
def upgrade_datastore_78(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2126,7 +2136,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
# Nachricht nur einmal senden
break
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 79)
+ self._append_datastore_version(78)
def upgrade_datastore_79(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2143,7 +2153,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
return {(f"openWB/system/device/{device_config['id']}/component/"
f"{component_config['id']}/simulation"): ""}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 80)
+ self._append_datastore_version(79)
# moved and corrected to 87
@@ -2163,7 +2173,7 @@ def upgrade(topic: str, payload) -> None:
decode_payload(template_payload)})
return topics
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 82)
+ self._append_datastore_version(81)
def upgrade_datastore_82(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -2237,7 +2247,7 @@ def get_new_phases_to_use(topic) -> int:
charge_template.pop("et")
return topics
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 83)
+ self._append_datastore_version(82)
def upgrade_datastore_83(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -2256,7 +2266,7 @@ def upgrade(topic: str, payload) -> None:
})
return {component_topic: config_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 84)
+ self._append_datastore_version(83)
def upgrade_datastore_84(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2311,7 +2321,7 @@ def cp_upgrade(topic: str, payload) -> Optional[dict]:
return {f'openWB/chargepoint/{index}/set/charge_template': charge_template}
self._loop_all_received_topics(upgrade)
self._loop_all_received_topics(cp_upgrade)
- self.__update_topic("openWB/system/datastore_version", 85)
+ self._append_datastore_version(84)
def upgrade_datastore_85(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -2330,7 +2340,7 @@ def upgrade(topic: str, payload) -> None:
})
return {component_topic: config_payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 86)
+ self._append_datastore_version(85)
def upgrade_datastore_86(self) -> None:
if "openWB/bat/get/power_limit_controllable" not in self.all_received_topics:
@@ -2342,7 +2352,7 @@ def upgrade_datastore_86(self) -> None:
"rechtlichen Hinweise "
"für die Speichersteuerung. Die Speichersteuerung war bisher bereits verfügbar, ist"
" jedoch bis zum Akzeptieren standardmäßig deaktiviert.", MessageType.WARNING)
- self.__update_topic("openWB/system/datastore_version", 87)
+ self._append_datastore_version(86)
def upgrade_datastore_87(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -2353,12 +2363,12 @@ def upgrade(topic: str, payload) -> None:
payload.update({"id": index})
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 88)
+ self._append_datastore_version(87)
def upgrade_datastore_88(self) -> None:
pub_system_message({}, "Es gibt ein neues Theme: das Koala-Theme! Smarthpone-optimiert und mit "
"Energiefluss-Diagramm & Karten-Ansicht der Ladepunkte", MessageType.INFO)
- self.__update_topic("openWB/system/datastore_version", 89)
+ self._append_datastore_version(88)
def upgrade_datastore_89(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2380,7 +2390,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
log.debug(f"Updated IO action configuration: {topic}: {payload}")
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 90)
+ self._append_datastore_version(89)
def upgrade_datastore_90(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -2405,7 +2415,7 @@ def upgrade(topic: str, payload) -> None:
no_json=True)
time.sleep(2)
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 91)
+ self._append_datastore_version(90)
def upgrade_datastore_91(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2421,7 +2431,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
plan.update({"bidi": False, "bidi_power": 10000})
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 92)
+ self._append_datastore_version(91)
def upgrade_datastore_92(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2434,7 +2444,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
plan.update({"bidi_charging_enabled": bidi_charging_enabled})
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 93)
+ self._append_datastore_version(92)
def upgrade_datastore_93(self) -> None:
# Pläne die keinen plans Key haben, id=None
@@ -2521,7 +2531,7 @@ def upgrade_datastore_93(self) -> None:
modified_topics[f"openWB/chargepoint/template/{get_index(topic)}"] = payload
for topic, payload in modified_topics.items():
self.__update_topic(topic, payload)
- self.__update_topic("openWB/system/datastore_version", 94)
+ self._append_datastore_version(93)
def upgrade_datastore_94(self):
def upgrade(topic, payload):
@@ -2544,7 +2554,7 @@ def upgrade(topic, payload):
plan["id"] = max_id
return {topic: payload, "openWB/command/max_id/charge_template_scheduled_plan": max_id}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 95)
+ self._append_datastore_version(94)
def upgrade_datastore_95(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2562,7 +2572,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
payload["id"] = topic_index
return {topic: payload}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 96)
+ self._append_datastore_version(95)
def upgrade_datastore_98(self) -> None:
version_str = decode_payload(
@@ -2580,7 +2590,7 @@ def upgrade_datastore_98(self) -> None:
" -> Darstellung & Bedienung angewendet werden.",
MessageType.INFO,
)
- self.__update_topic("openWB/system/datastore_version", 99)
+ self._append_datastore_version(98)
def upgrade_datastore_99(self) -> None:
# bei Aktualisierung den max_bat_soc auf min_bat_soc setzen
@@ -2590,7 +2600,7 @@ def upgrade_datastore_99(self) -> None:
"openWB/general/chargemode_config/pv_charging/min_bat_soc"])
self.__update_topic("openWB/general/chargemode_config/pv_charging/max_bat_soc", min_bat_soc)
- self.__update_topic("openWB/system/datastore_version", 100)
+ self._append_datastore_version(99)
def upgrade_datastore_100(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
@@ -2601,7 +2611,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
return {"openWB/general/chargemode_config/pv_charging/phase_switch_delay":
decode_payload(payload)}
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 101)
+ self._append_datastore_version(100)
def upgrade_datastore_101(self) -> None:
def upgrade(topic: str, payload) -> None:
@@ -2612,4 +2622,4 @@ def upgrade(topic: str, payload) -> None:
payload["configuration"].update({"phase": 1})
Pub().pub(topic, payload)
self._loop_all_received_topics(upgrade)
- self.__update_topic("openWB/system/datastore_version", 102)
+ self._append_datastore_version(101)
diff --git a/packages/helpermodules/update_config_test.py b/packages/helpermodules/update_config_test.py
index 3b2addd873..7101720081 100644
--- a/packages/helpermodules/update_config_test.py
+++ b/packages/helpermodules/update_config_test.py
@@ -45,6 +45,7 @@ def test_upgrade_datastore_94(index_test_template, expected_index):
with open(Path(__file__).resolve().parents[0]/"upgrade_datastore_94.json", "r") as f:
test_data = f.read()
update_con.all_received_topics.update(json.loads(test_data)[index_test_template])
+ update_con.all_received_topics["openWB/system/datastore_version"] = list(range(93))
update_con.upgrade_datastore_94()