From ab8cd82f35eed854af40da85f03a8660128185bd Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Mon, 17 Mar 2025 09:08:17 +0100 Subject: [PATCH 1/3] feature-official-modules --- packages/helpermodules/update_config.py | 31 +++++++++++++++++++ .../modules/backup_clouds/nextcloud/config.py | 2 ++ packages/modules/backup_clouds/nfs/config.py | 2 ++ .../modules/backup_clouds/onedrive/config.py | 2 ++ .../modules/backup_clouds/samba/config.py | 2 ++ .../electricity_tariffs/awattar/config.py | 2 ++ .../energycharts/config.py | 2 ++ .../electricity_tariffs/rabot/config.py | 2 ++ .../electricity_tariffs/tibber/config.py | 2 ++ .../electricity_tariffs/voltego/config.py | 2 ++ packages/modules/monitoring/zabbix/config.py | 2 ++ packages/modules/vehicles/aiways/config.py | 2 ++ packages/modules/vehicles/bmwbc/config.py | 2 ++ packages/modules/vehicles/evcc/config.py | 2 ++ packages/modules/vehicles/evnotify/config.py | 2 ++ packages/modules/vehicles/http/config.py | 2 ++ packages/modules/vehicles/json/config.py | 2 ++ packages/modules/vehicles/kia/config.py | 2 ++ packages/modules/vehicles/manual/config.py | 2 ++ packages/modules/vehicles/mqtt/config.py | 2 ++ packages/modules/vehicles/ovms/config.py | 2 ++ packages/modules/vehicles/polestar/config.py | 2 ++ packages/modules/vehicles/psa/config.py | 2 ++ packages/modules/vehicles/psacc/config.py | 3 +- packages/modules/vehicles/renault/config.py | 2 ++ .../vehicles/skodaconnect/config-disabled.py | 4 ++- .../modules/vehicles/smarthello/config.py | 2 ++ packages/modules/vehicles/tesla/config.py | 2 ++ packages/modules/vehicles/tronity/config.py | 2 ++ packages/modules/vehicles/vwid/config.py | 2 ++ 30 files changed, 90 insertions(+), 2 deletions(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 62b9eb0287..7b67a08c91 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -2016,3 +2016,34 @@ def upgrade(topic: str, payload) -> Optional[dict]: return {topic: dataclass_utils.asdict(LoadmanagementLimit(None, None))} self._loop_all_received_topics(upgrade) self.__update_topic("openWB/system/datastore_version", 77) + + def upgrade_datastore_77(self) -> None: + def upgrade(topic: str, payload) -> Optional[dict]: + # add "official" flag to selected backup cloud + if re.search("openWB/system/backup_cloud/config", topic) is not None: + configuration_payload = decode_payload(payload) + if configuration_payload.get("type") == "nextcloud": + configuration_payload.update({"official": True}) + return {topic: configuration_payload} + # add "official" flag to selected electricity tariff provider + if re.search("openWB/optional/et/provider", topic) is not None: + configuration_payload = decode_payload(payload) + official_providers = ["awattar", "energycharts", "rabot", "tibber", "voltego"] + if configuration_payload.get("type") in official_providers: + configuration_payload.update({"official": True}) + return {topic: configuration_payload} + # add "official" flag to selected monitoring module + if re.search("openWB/optional/monitoring/config", topic) is not None: + configuration_payload = decode_payload(payload) + if configuration_payload.get("type") == "zabbix": + configuration_payload.update({"official": True}) + return {topic: configuration_payload} + # add "official" flag to selected vehicle modules + if re.search("openWB/vehicle/[0-9]+/soc_module/config", topic) is not None: + configuration_payload = decode_payload(payload) + official_vehicle_modules = ["http", "json", "manual", "mqtt", "tronity"] + if configuration_payload.get("type") in official_vehicle_modules: + configuration_payload.update({"official": True}) + return {topic: configuration_payload} + self._loop_all_received_topics(upgrade) + self.__update_topic("openWB/system/datastore_version", 78) diff --git a/packages/modules/backup_clouds/nextcloud/config.py b/packages/modules/backup_clouds/nextcloud/config.py index c4ec33173f..6f19a8bd13 100644 --- a/packages/modules/backup_clouds/nextcloud/config.py +++ b/packages/modules/backup_clouds/nextcloud/config.py @@ -12,7 +12,9 @@ class NextcloudBackupCloud: def __init__(self, name: str = "NextCloud", type: str = "nextcloud", + official: bool = True, configuration: NextcloudBackupCloudConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or NextcloudBackupCloudConfiguration() diff --git a/packages/modules/backup_clouds/nfs/config.py b/packages/modules/backup_clouds/nfs/config.py index d69703ba0b..47eef80c27 100644 --- a/packages/modules/backup_clouds/nfs/config.py +++ b/packages/modules/backup_clouds/nfs/config.py @@ -10,7 +10,9 @@ class NfsBackupCloud: def __init__(self, name: str = "Nfs", type: str = "nfs", + official: bool = False, configuration: NfsBackupCloudConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or NfsBackupCloudConfiguration() diff --git a/packages/modules/backup_clouds/onedrive/config.py b/packages/modules/backup_clouds/onedrive/config.py index c221cafe34..c456b6946b 100644 --- a/packages/modules/backup_clouds/onedrive/config.py +++ b/packages/modules/backup_clouds/onedrive/config.py @@ -24,7 +24,9 @@ class OneDriveBackupCloud: def __init__(self, name: str = "OneDrive", type: str = "onedrive", + official: bool = False, configuration: OneDriveBackupCloudConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or OneDriveBackupCloudConfiguration() diff --git a/packages/modules/backup_clouds/samba/config.py b/packages/modules/backup_clouds/samba/config.py index 41b7c1f98b..f8f5e483fc 100644 --- a/packages/modules/backup_clouds/samba/config.py +++ b/packages/modules/backup_clouds/samba/config.py @@ -19,7 +19,9 @@ class SambaBackupCloud: def __init__(self, name: str = "Samba", type: str = "samba", + official: bool = False, configuration: SambaBackupCloudConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or SambaBackupCloudConfiguration() diff --git a/packages/modules/electricity_tariffs/awattar/config.py b/packages/modules/electricity_tariffs/awattar/config.py index 14812adef6..53becd62c8 100644 --- a/packages/modules/electricity_tariffs/awattar/config.py +++ b/packages/modules/electricity_tariffs/awattar/config.py @@ -7,7 +7,9 @@ class AwattarTariff: def __init__(self, name: str = "aWATTar Hourly", type: str = "awattar", + official: bool = True, configuration: AwattarTariffConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or AwattarTariffConfiguration() diff --git a/packages/modules/electricity_tariffs/energycharts/config.py b/packages/modules/electricity_tariffs/energycharts/config.py index 3d8c1442a2..789a4f2ffc 100644 --- a/packages/modules/electricity_tariffs/energycharts/config.py +++ b/packages/modules/electricity_tariffs/energycharts/config.py @@ -8,7 +8,9 @@ class EnergyChartsTariff: def __init__(self, name: str = "Energy-Charts", type: str = "energycharts", + official: bool = True, configuration: EnergyChartsTariffConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or EnergyChartsTariffConfiguration() diff --git a/packages/modules/electricity_tariffs/rabot/config.py b/packages/modules/electricity_tariffs/rabot/config.py index 33fa47a03d..b3a29b8e01 100644 --- a/packages/modules/electricity_tariffs/rabot/config.py +++ b/packages/modules/electricity_tariffs/rabot/config.py @@ -25,7 +25,9 @@ class RabotTariff: def __init__(self, name: str = "Rabot", type: str = "rabot", + official: bool = True, configuration: RabotTariffConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or RabotTariffConfiguration() diff --git a/packages/modules/electricity_tariffs/tibber/config.py b/packages/modules/electricity_tariffs/tibber/config.py index c9cb5b24d2..7117ac98e9 100644 --- a/packages/modules/electricity_tariffs/tibber/config.py +++ b/packages/modules/electricity_tariffs/tibber/config.py @@ -11,7 +11,9 @@ class TibberTariff: def __init__(self, name: str = "Tibber", type: str = "tibber", + official: bool = True, configuration: TibberTariffConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or TibberTariffConfiguration() diff --git a/packages/modules/electricity_tariffs/voltego/config.py b/packages/modules/electricity_tariffs/voltego/config.py index c37b3cdedd..b6d3b48cab 100644 --- a/packages/modules/electricity_tariffs/voltego/config.py +++ b/packages/modules/electricity_tariffs/voltego/config.py @@ -25,7 +25,9 @@ class VoltegoTariff: def __init__(self, name: str = "Voltego", type: str = "voltego", + official: bool = True, configuration: VoltegoTariffConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or VoltegoTariffConfiguration() diff --git a/packages/modules/monitoring/zabbix/config.py b/packages/modules/monitoring/zabbix/config.py index ddc4723222..f38c1d2cbc 100644 --- a/packages/modules/monitoring/zabbix/config.py +++ b/packages/modules/monitoring/zabbix/config.py @@ -17,7 +17,9 @@ class Zabbix: def __init__(self, name: str = "openWB (Zabbix)", type: str = "zabbix", + official: bool = True, configuration: ZabbixConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or ZabbixConfiguration() diff --git a/packages/modules/vehicles/aiways/config.py b/packages/modules/vehicles/aiways/config.py index 7dea04ebf1..b7539d6965 100644 --- a/packages/modules/vehicles/aiways/config.py +++ b/packages/modules/vehicles/aiways/config.py @@ -22,7 +22,9 @@ class AiwaysVehicleSoc: def __init__(self, name: str = "Aiways", type: str = "aiways", + official: bool = False, configuration: AiwaysVehicleSocConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or AiwaysVehicleSocConfiguration() diff --git a/packages/modules/vehicles/bmwbc/config.py b/packages/modules/vehicles/bmwbc/config.py index 0862772f64..db8c4cf5e3 100755 --- a/packages/modules/vehicles/bmwbc/config.py +++ b/packages/modules/vehicles/bmwbc/config.py @@ -19,7 +19,9 @@ class BMWbc: def __init__(self, name: str = "BMW & Mini ", type: str = "bmwbc", + official: bool = False, configuration: BMWbcConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or BMWbcConfiguration() diff --git a/packages/modules/vehicles/evcc/config.py b/packages/modules/vehicles/evcc/config.py index 61d7131e1b..e9309c751c 100644 --- a/packages/modules/vehicles/evcc/config.py +++ b/packages/modules/vehicles/evcc/config.py @@ -23,7 +23,9 @@ class EVCCVehicleSoc: def __init__(self, name: str = "EVCC", type: str = "evcc", + official: bool = False, configuration: EVCCVehicleSocConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or EVCCVehicleSocConfiguration() diff --git a/packages/modules/vehicles/evnotify/config.py b/packages/modules/vehicles/evnotify/config.py index 182c15026d..67c8a79a95 100644 --- a/packages/modules/vehicles/evnotify/config.py +++ b/packages/modules/vehicles/evnotify/config.py @@ -12,7 +12,9 @@ class EVNotify: def __init__(self, name: str = "EVNotify", type: str = "evnotify", + official: bool = False, configuration: EVNotifyConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or EVNotifyConfiguration() diff --git a/packages/modules/vehicles/http/config.py b/packages/modules/vehicles/http/config.py index a750f36049..8a78c77450 100644 --- a/packages/modules/vehicles/http/config.py +++ b/packages/modules/vehicles/http/config.py @@ -13,7 +13,9 @@ class HttpSocSetup(): def __init__(self, name: str = "HTTP SOC Module", type: str = "http", + official: bool = True, configuration: HttpSocConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or HttpSocConfiguration() diff --git a/packages/modules/vehicles/json/config.py b/packages/modules/vehicles/json/config.py index 1032f93993..29b75e2f61 100644 --- a/packages/modules/vehicles/json/config.py +++ b/packages/modules/vehicles/json/config.py @@ -26,7 +26,9 @@ class JsonSocSetup(): def __init__(self, name: str = "JSON", type: str = "json", + official: bool = True, configuration: JsonSocConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or JsonSocConfiguration() diff --git a/packages/modules/vehicles/kia/config.py b/packages/modules/vehicles/kia/config.py index 8277209c3e..82ee01dbea 100644 --- a/packages/modules/vehicles/kia/config.py +++ b/packages/modules/vehicles/kia/config.py @@ -15,7 +15,9 @@ class KIA: def __init__(self, name: str = "KIA / Hyundai (experimental)", type: str = "kia", + official: bool = False, configuration: KIAConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or KIAConfiguration() diff --git a/packages/modules/vehicles/manual/config.py b/packages/modules/vehicles/manual/config.py index 9b9098b422..fd154b2e95 100644 --- a/packages/modules/vehicles/manual/config.py +++ b/packages/modules/vehicles/manual/config.py @@ -7,7 +7,9 @@ class ManualSoc: def __init__(self, name: str = "Manueller SoC", type: str = "manual", + official: bool = True, configuration: ManualSocConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or ManualSocConfiguration() diff --git a/packages/modules/vehicles/mqtt/config.py b/packages/modules/vehicles/mqtt/config.py index 57468121a9..8e9da39351 100644 --- a/packages/modules/vehicles/mqtt/config.py +++ b/packages/modules/vehicles/mqtt/config.py @@ -7,7 +7,9 @@ class MqttSocSetup: def __init__(self, name: str = "MQTT", type: str = "mqtt", + official: bool = True, configuration: MqttSocConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or MqttSocConfiguration() diff --git a/packages/modules/vehicles/ovms/config.py b/packages/modules/vehicles/ovms/config.py index 1a477bec2b..9c6f7d7500 100755 --- a/packages/modules/vehicles/ovms/config.py +++ b/packages/modules/vehicles/ovms/config.py @@ -20,7 +20,9 @@ class OVMS: def __init__(self, name: str = "OVMS", type: str = "ovms", + official: bool = False, configuration: OVMSConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or OVMSConfiguration() diff --git a/packages/modules/vehicles/polestar/config.py b/packages/modules/vehicles/polestar/config.py index 02abebce79..216a6057a1 100755 --- a/packages/modules/vehicles/polestar/config.py +++ b/packages/modules/vehicles/polestar/config.py @@ -12,7 +12,9 @@ class Polestar2: def __init__(self, name: str = "Polestar2", type: str = "polestar", + official: bool = False, configuration: Polestar2Configuration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or Polestar2Configuration() diff --git a/packages/modules/vehicles/psa/config.py b/packages/modules/vehicles/psa/config.py index 25a368a6e4..57b00cad96 100644 --- a/packages/modules/vehicles/psa/config.py +++ b/packages/modules/vehicles/psa/config.py @@ -23,7 +23,9 @@ class PSA: def __init__(self, name: str = "PSA (nicht mehr verwenden)", type: str = "psa", + official: bool = False, configuration: PSAConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or PSAConfiguration() diff --git a/packages/modules/vehicles/psacc/config.py b/packages/modules/vehicles/psacc/config.py index 66dcb495ef..bb096546b6 100644 --- a/packages/modules/vehicles/psacc/config.py +++ b/packages/modules/vehicles/psacc/config.py @@ -33,6 +33,7 @@ class PSACCVehicleSoc(JsonSocSetup): def __init__(self, name: str = "PSA Car Controller", type: str = "psacc", + official: bool = False, configuration: PSACCVehicleSocConfiguration = None) -> None: - super().__init__(name=name, type=type, + super().__init__(name=name, type=type, official=official, configuration=configuration or PSACCVehicleSocConfiguration()) diff --git a/packages/modules/vehicles/renault/config.py b/packages/modules/vehicles/renault/config.py index e718fddfa1..d54c491df9 100755 --- a/packages/modules/vehicles/renault/config.py +++ b/packages/modules/vehicles/renault/config.py @@ -17,7 +17,9 @@ class Renault: def __init__(self, name: str = "Renault", type: str = "renault", + official: bool = False, configuration: RenaultConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or RenaultConfiguration() diff --git a/packages/modules/vehicles/skodaconnect/config-disabled.py b/packages/modules/vehicles/skodaconnect/config-disabled.py index 811ae0233c..fae080e27a 100755 --- a/packages/modules/vehicles/skodaconnect/config-disabled.py +++ b/packages/modules/vehicles/skodaconnect/config-disabled.py @@ -6,7 +6,7 @@ def __init__(self, user_id: Optional[str] = None, # show in UI password: Optional[str] = None, # show in UI vin: Optional[str] = None, # show in UI - refresh_token: Optional[dict] = None # DON'T show in UI! + refresh_token: Optional[dict] = None # DON'T show in UI! ): self.user_id = user_id self.password = password @@ -18,7 +18,9 @@ class SkodaConnect: def __init__(self, name: str = "SkodaConnect", type: str = "skodaconnect", + official: bool = False, configuration: SkodaConnectConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or SkodaConnectConfiguration() diff --git a/packages/modules/vehicles/smarthello/config.py b/packages/modules/vehicles/smarthello/config.py index fe5997e2dc..5a083569b0 100644 --- a/packages/modules/vehicles/smarthello/config.py +++ b/packages/modules/vehicles/smarthello/config.py @@ -17,7 +17,9 @@ class SmartHello: def __init__(self, name: str = "Smart Hello (#1, #3)", type: str = "smarthello", + official: bool = False, configuration: SmartHelloConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or SmartHelloConfiguration() diff --git a/packages/modules/vehicles/tesla/config.py b/packages/modules/vehicles/tesla/config.py index b92e6b580f..29f09a5eb7 100644 --- a/packages/modules/vehicles/tesla/config.py +++ b/packages/modules/vehicles/tesla/config.py @@ -23,7 +23,9 @@ class TeslaSoc: def __init__(self, name: str = "Tesla", type: str = "tesla", + official: bool = False, configuration: TeslaSocConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or TeslaSocConfiguration() diff --git a/packages/modules/vehicles/tronity/config.py b/packages/modules/vehicles/tronity/config.py index 9ac5ef9543..c81c09f347 100644 --- a/packages/modules/vehicles/tronity/config.py +++ b/packages/modules/vehicles/tronity/config.py @@ -19,7 +19,9 @@ class TronityVehicleSoc: def __init__(self, name: str = "Tronity", type: str = "tronity", + official: bool = True, configuration: TronityVehicleSocConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or TronityVehicleSocConfiguration() diff --git a/packages/modules/vehicles/vwid/config.py b/packages/modules/vehicles/vwid/config.py index 2460ac1f98..f251c7992b 100755 --- a/packages/modules/vehicles/vwid/config.py +++ b/packages/modules/vehicles/vwid/config.py @@ -20,7 +20,9 @@ class VWId: def __init__(self, name: str = "VWId", type: str = "vwid", + official: bool = False, configuration: VWIdConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or VWIdConfiguration() From 3a72ebf8809f07ff9cf3e326fedb3979703e9927 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Mon, 17 Mar 2025 09:09:32 +0100 Subject: [PATCH 2/3] modify pip3 call --- runs/atreboot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runs/atreboot.sh b/runs/atreboot.sh index 0d33db394b..0bb1879669 100755 --- a/runs/atreboot.sh +++ b/runs/atreboot.sh @@ -374,7 +374,7 @@ chmod 666 "$LOGFILE" # check for python dependencies if ((hasInet == 1)); then echo "install required python packages with 'pip3'..." - if pip3 install -r "${OPENWBBASEDIR}/requirements.txt"; then + if pip3 install --upgrade --only-binary :all: -r "${OPENWBBASEDIR}/requirements.txt"; then echo "done" else echo "failed!" From 00d3e8fa9a4dc814d56c6f041298d328bc7213ed Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 8 Apr 2025 08:50:20 +0200 Subject: [PATCH 3/3] added electricity tariff modules after rebase --- packages/modules/electricity_tariffs/fixed_hours/config.py | 2 ++ packages/modules/electricity_tariffs/octopusenergy/config.py | 2 ++ packages/modules/electricity_tariffs/ostrom/config.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/packages/modules/electricity_tariffs/fixed_hours/config.py b/packages/modules/electricity_tariffs/fixed_hours/config.py index e9c15419b6..7ae614f3ba 100644 --- a/packages/modules/electricity_tariffs/fixed_hours/config.py +++ b/packages/modules/electricity_tariffs/fixed_hours/config.py @@ -32,7 +32,9 @@ class FixedHoursTariff: def __init__(self, name: str = "Feste Tarifstunden (z.b. ยง14a EnWG Modul3)", type: str = "fixed_hours", + official: bool = False, configuration: FixedHoursTariffConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or FixedHoursTariffConfiguration() diff --git a/packages/modules/electricity_tariffs/octopusenergy/config.py b/packages/modules/electricity_tariffs/octopusenergy/config.py index 00d75619b8..d255d41f1e 100644 --- a/packages/modules/electricity_tariffs/octopusenergy/config.py +++ b/packages/modules/electricity_tariffs/octopusenergy/config.py @@ -15,7 +15,9 @@ class OctopusEnergyTariff: def __init__(self, name: str = "Octopus Energy Deutschland", type: str = "octopusenergy", + official: bool = False, configuration: OctopusEnergyTariffConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or OctopusEnergyTariffConfiguration() diff --git a/packages/modules/electricity_tariffs/ostrom/config.py b/packages/modules/electricity_tariffs/ostrom/config.py index 26fd3ef1d8..2140feedf8 100644 --- a/packages/modules/electricity_tariffs/ostrom/config.py +++ b/packages/modules/electricity_tariffs/ostrom/config.py @@ -15,7 +15,9 @@ class OstromTariff: def __init__(self, name: str = "ostrom", type: str = "ostrom", + official: bool = False, configuration: OstromTariffConfiguration = None) -> None: self.name = name self.type = type + self.official = official self.configuration = configuration or OstromTariffConfiguration()