Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
e45bddc
Create __init__.py
seaspotter Dec 29, 2025
5bfdd0c
Delete packages/modules/devices/sungrow/sungrow_ihm/__init__.py
seaspotter Dec 29, 2025
5c0a9c7
Add SungrowIHMCounter
seaspotter Dec 29, 2025
688dfc0
Add device.py for Sungrow SG
seaspotter Jan 19, 2026
75948dc
Add files via upload
seaspotter Jan 19, 2026
421f4bb
Add config.py
seaspotter Jan 19, 2026
2db2cff
Add counter.py
seaspotter Jan 19, 2026
ee78075
Add inverter.py
seaspotter Jan 19, 2026
e87d4c1
Delete packages/modules/devices/sungrow/sungrow/modbus.md
seaspotter Jan 19, 2026
2099823
Move to SungrowSH bat.py
seaspotter Jan 19, 2026
d75845d
Add files via upload
seaspotter Jan 19, 2026
bcf39ba
Move to SungrowSH version.py
seaspotter Jan 19, 2026
069ec63
Move to SungrowSH registers.py
seaspotter Jan 19, 2026
4c7de06
Move to SungrowSH inverter.py
seaspotter Jan 19, 2026
1dae765
Move to SungrowSH counter.py
seaspotter Jan 19, 2026
500e395
Move to SungrowSH config.py
seaspotter Jan 19, 2026
2675be3
Move to SungrowSH device.py
seaspotter Jan 19, 2026
0e89080
Delete packages/modules/devices/sungrow/sungrow/__init__.py
seaspotter Jan 19, 2026
0402fda
Remove unused parameter
seaspotter Jan 19, 2026
1490c5d
Remove unused parameter
seaspotter Jan 19, 2026
db30060
Refactor SungrowIHM counter.py
seaspotter Jan 19, 2026
003fe17
Add files via upload
seaspotter Jan 19, 2026
8365273
Add Sungrow IHM config.py
seaspotter Jan 19, 2026
ecb4b82
Update configuration types in Sungrow classes
seaspotter Jan 19, 2026
310ef52
Add Sungrow IHM device.py
seaspotter Jan 19, 2026
38b6172
Add Sungrow IHM inverter.py
seaspotter Jan 19, 2026
4dc387c
Add Sungrow IHM bat.py
seaspotter Jan 19, 2026
1ad4526
Add charging for SH bat.py
seaspotter Jan 19, 2026
8e56e1a
Implement Sungrow Micro Inverter
seaspotter Jan 19, 2026
e804390
Add files via upload
seaspotter Jan 19, 2026
53fb7fa
Implement Sungrow Micro device configuration
seaspotter Jan 19, 2026
8c285b5
Add SungrowMicro and configuration classes
seaspotter Jan 19, 2026
177f44a
Update inverter.py
seaspotter Jan 19, 2026
8dbbcee
Remove version import from inverter.py
seaspotter Jan 19, 2026
7f2a98a
Reorder import statements in counter.py
seaspotter Jan 29, 2026
f1979ce
Reorder import statements in counter.py
seaspotter Jan 29, 2026
6f38066
Reorder import statements in counter.py
seaspotter Jan 29, 2026
1f5d336
Update config.py
seaspotter Jan 29, 2026
c174951
Flake8
seaspotter Jan 29, 2026
00c8481
Flake8
seaspotter Jan 29, 2026
27b17bf
Flake8
seaspotter Jan 29, 2026
2b86f03
Flake8
seaspotter Jan 29, 2026
6a348ae
Flake8
seaspotter Jan 29, 2026
4e897ac
Flake8
seaspotter Jan 29, 2026
c62f0cc
Flake8
seaspotter Jan 29, 2026
2c5b9fb
Flake8
seaspotter Jan 29, 2026
bbb923e
Flake8
seaspotter Jan 29, 2026
1566ec1
Flake8
seaspotter Jan 29, 2026
15d5628
Flake8
seaspotter Jan 29, 2026
8295743
Flake8
seaspotter Jan 29, 2026
344a01b
Flake8
seaspotter Jan 29, 2026
588da8c
Flake8
seaspotter Jan 29, 2026
cbe2355
Flake8
seaspotter Jan 29, 2026
3672106
Flake8
seaspotter Jan 29, 2026
8be3764
Flake8
seaspotter Jan 29, 2026
2dd18ef
Flake8
seaspotter Jan 29, 2026
c9a8af0
Update update_config.py
seaspotter Jan 29, 2026
ed1f161
Refactor write_registers to write_register calls
seaspotter Feb 5, 2026
358f628
Refactor write_registers calls to write_register
seaspotter Feb 5, 2026
650792e
Flake8
seaspotter Feb 9, 2026
8b6cb0d
Flake8
seaspotter Feb 24, 2026
afffe3d
flake8
seaspotter Feb 24, 2026
41a967f
Change upgrade_datastore version to 110
seaspotter Feb 24, 2026
ca79b7b
Update datastore version from 108 to 110
seaspotter Feb 24, 2026
7017ad9
Update update_config.py
seaspotter Mar 5, 2026
90d7127
Update update_config.py
seaspotter Mar 5, 2026
0f03ab8
Update update_config.py
seaspotter Mar 5, 2026
b800baf
Update update_config.py
seaspotter Mar 9, 2026
31dc515
Update packages/helpermodules/update_config.py
seaspotter Mar 13, 2026
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
104 changes: 102 additions & 2 deletions packages/helpermodules/update_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
from control.optional_data import OcppConfig
from modules.common.abstract_vehicle import GeneralVehicleConfig
from modules.common.component_type import ComponentType
from modules.devices.sungrow.sungrow.version import Version
from modules.devices.sungrow.sungrow_sh.version import Version
from modules.display_themes.cards.config import CardsDisplayTheme
from modules.io_actions.controllable_consumers.ripple_control_receiver.config import RippleControlReceiverSetup
from modules.web_themes.koala.config import KoalaWebTheme
Expand All @@ -57,7 +57,7 @@

class UpdateConfig:

DATASTORE_VERSION = 112
DATASTORE_VERSION = 113

valid_topic = [
"^openWB/bat/config/bat_control_permitted$",
Expand Down Expand Up @@ -2859,3 +2859,103 @@ def upgrade(topic: str, payload) -> Optional[dict]:
run_command(['pip', 'uninstall', 'bimmer_connected', '-y'], process_exception=True)
self._loop_all_received_topics(upgrade)
self._append_datastore_version(112)

def upgrade_datastore_113(self) -> None:
"""
Migrate old single 'sungrow' devices into new modules:
- 'sungrow_sg' for SG family (no version field)
- 'sungrow_sh' for SH family (keeps numeric version 0 or 1)

Old version mapping:
* 0 -> sungrow_sh, version 0
* 1 -> sungrow_sg (remove version)
* 2 -> sungrow_sg (remove version)
* 3 -> sungrow_sh, version 1
Default for missing/unknown old version: sungrow_sg (no version).
"""
def upgrade(topic: str, payload) -> None:
if re.search(r"^openWB/system/device/[0-9]+/config$", topic) is not None:
device = decode_payload(payload)
if device.get("type") == "sungrow":
# inline normalization: handle Version enum, ints, numeric strings
old_raw = device.get("configuration", {}).get("version")
old_version = None
if old_raw is None:
old_version = None
else:
try:
# Version enum -> int
if isinstance(old_raw, Version):
old_version = int(old_raw)
else:
# numeric-like: int or numeric string
old_version = int(old_raw)
except Exception:
old_version = None

new_type = "sungrow_sg"
new_version = None

if old_version == 0:
new_type = "sungrow_sh"
new_version = 0
elif old_version in (1, 2):
new_type = "sungrow_sg"
new_version = None
elif old_version == 3:
new_type = "sungrow_sh"
new_version = 1
else:
new_type = "sungrow_sg"
new_version = None

changed = False

if device.get("type") != new_type:
device["type"] = new_type
changed = True

if "configuration" not in device or device["configuration"] is None:
device["configuration"] = {}

if new_version is None:
if "version" in device["configuration"]:
device["configuration"].pop("version", None)
changed = True
else:
if device["configuration"].get("version") != new_version:
device["configuration"]["version"] = new_version
changed = True

if changed:
device_name = device.get("name")
device_id = device.get("id")
log.info(
f"Upgrading sungrow device {device_name!r} (id={device_id}) -> "
f"type='{new_type}'"
+ (f", version={new_version}" if new_version is not None else ", no version")
)
Pub().pub(topic, device)

if new_version is not None:
try:
version_name = Version(new_version).name
except Exception:
version_name = str(new_version)
pub_system_message(
device,
(f"Die Konfiguration von '{device_name}' wurde aktualisiert. "
f"Bitte in den Geräteeinstellungen sicherstellen, dass Version "
f"'{version_name}' korrekt ist"),
MessageType.INFO,
)
else:
pub_system_message(
device,
(f"Die Sungrow-Geräte-Konfiguration wurde aktualisiert: Gerät "
f"'{device_name}' auf Typ '{new_type}'."),
MessageType.INFO,
)

self._loop_all_received_topics(upgrade)
self._append_datastore_version(113)
72 changes: 0 additions & 72 deletions packages/modules/devices/sungrow/sungrow/config.py

This file was deleted.

61 changes: 0 additions & 61 deletions packages/modules/devices/sungrow/sungrow/device.py

This file was deleted.

66 changes: 0 additions & 66 deletions packages/modules/devices/sungrow/sungrow/inverter.py

This file was deleted.

44 changes: 0 additions & 44 deletions packages/modules/devices/sungrow/sungrow/modbus.md

This file was deleted.

Loading
Loading