Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
2077551
Create __init__.py
seaspotter Dec 29, 2025
00022fb
Delete packages/modules/devices/sungrow/sungrow_ihm/__init__.py
seaspotter Dec 29, 2025
0922a7e
Add SungrowIHMCounter
seaspotter Dec 29, 2025
a26de1c
Add device.py for Sungrow SG
seaspotter Jan 19, 2026
4e9f377
Add files via upload
seaspotter Jan 19, 2026
fe809ef
Add config.py
seaspotter Jan 19, 2026
d6d4cd0
Add counter.py
seaspotter Jan 19, 2026
42e3c27
Add inverter.py
seaspotter Jan 19, 2026
c3dff64
Delete packages/modules/devices/sungrow/sungrow/modbus.md
seaspotter Jan 19, 2026
a6c0ba3
Move to SungrowSH bat.py
seaspotter Jan 19, 2026
973af4f
Add files via upload
seaspotter Jan 19, 2026
2c18f98
Move to SungrowSH version.py
seaspotter Jan 19, 2026
280dc85
Move to SungrowSH registers.py
seaspotter Jan 19, 2026
896ac36
Move to SungrowSH inverter.py
seaspotter Jan 19, 2026
9a2a2eb
Move to SungrowSH counter.py
seaspotter Jan 19, 2026
80a858a
Move to SungrowSH config.py
seaspotter Jan 19, 2026
e8b18db
Move to SungrowSH device.py
seaspotter Jan 19, 2026
bc603ed
Delete packages/modules/devices/sungrow/sungrow/__init__.py
seaspotter Jan 19, 2026
45a072a
Remove unused parameter
seaspotter Jan 19, 2026
5b83bd8
Remove unused parameter
seaspotter Jan 19, 2026
7dea719
Refactor SungrowIHM counter.py
seaspotter Jan 19, 2026
b983fb5
Add files via upload
seaspotter Jan 19, 2026
76b2b4a
Add Sungrow IHM config.py
seaspotter Jan 19, 2026
22fce20
Update configuration types in Sungrow classes
seaspotter Jan 19, 2026
5fcfc0e
Add Sungrow IHM device.py
seaspotter Jan 19, 2026
bf89fc4
Add Sungrow IHM inverter.py
seaspotter Jan 19, 2026
23217f6
Add Sungrow IHM bat.py
seaspotter Jan 19, 2026
4a4475e
Add charging for SH bat.py
seaspotter Jan 19, 2026
1899a11
Implement Sungrow Micro Inverter
seaspotter Jan 19, 2026
ca53d61
Add files via upload
seaspotter Jan 19, 2026
e8a7705
Implement Sungrow Micro device configuration
seaspotter Jan 19, 2026
0b5529e
Add SungrowMicro and configuration classes
seaspotter Jan 19, 2026
58e7a34
Update inverter.py
seaspotter Jan 19, 2026
47fa7d6
Remove version import from inverter.py
seaspotter Jan 19, 2026
9d95a9a
Reorder import statements in counter.py
seaspotter Jan 29, 2026
4f9d00e
Reorder import statements in counter.py
seaspotter Jan 29, 2026
b418460
Reorder import statements in counter.py
seaspotter Jan 29, 2026
fbebc26
Update config.py
seaspotter Jan 29, 2026
617864c
Flake8
seaspotter Jan 29, 2026
cc8a13a
Flake8
seaspotter Jan 29, 2026
f6d04b2
Flake8
seaspotter Jan 29, 2026
0b2fd7b
Flake8
seaspotter Jan 29, 2026
e906b7a
Flake8
seaspotter Jan 29, 2026
7054eb2
Flake8
seaspotter Jan 29, 2026
cc1fb65
Flake8
seaspotter Jan 29, 2026
175e372
Flake8
seaspotter Jan 29, 2026
6cf24b8
Flake8
seaspotter Jan 29, 2026
93a16c8
Flake8
seaspotter Jan 29, 2026
f5bd378
Flake8
seaspotter Jan 29, 2026
dd5dc39
Flake8
seaspotter Jan 29, 2026
f02a5e9
Flake8
seaspotter Jan 29, 2026
6ef9825
Flake8
seaspotter Jan 29, 2026
185345f
Flake8
seaspotter Jan 29, 2026
19635cb
Flake8
seaspotter Jan 29, 2026
87f2b38
Flake8
seaspotter Jan 29, 2026
92fc3e2
Flake8
seaspotter Jan 29, 2026
50a1f89
Update update_config.py
seaspotter Jan 29, 2026
fd1ab5f
Upgrade datastore version to 108 and add migration for Sungrow
seaspotter Jan 30, 2026
1002955
Refactor write_registers to write_register calls
seaspotter Feb 5, 2026
0a6db8a
Refactor write_registers calls to write_register
seaspotter Feb 5, 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
81 changes: 79 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 Ocpp
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 = 107
DATASTORE_VERSION = 108

valid_topic = [
"^openWB/bat/config/bat_control_permitted$",
Expand Down Expand Up @@ -2701,3 +2701,80 @@ def upgrade(topic: str, payload) -> None:
return {topic: provider}
self._loop_all_received_topics(upgrade)
self._append_datastore_version(107)

def upgrade_datastore_108(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]+$", topic) is not None:
device = decode_payload(payload)
if device.get("type") == "sungrow":
old_version = device.get("configuration", {}).get("version")
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(108)
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