Skip to content

Commit

Permalink
Properly read Eco Mode Power suring start
Browse files Browse the repository at this point in the history
  • Loading branch information
mletenay committed Feb 5, 2023
1 parent 72d446d commit abe4915
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 7 deletions.
2 changes: 1 addition & 1 deletion custom_components/goodwe/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
name=entry.title,
manufacturer="GoodWe",
model=inverter.model_name,
sw_version=f"{inverter.software_version} ({inverter.arm_version})",
sw_version=f"{inverter.firmware} / {inverter.arm_firmware}",
)

async def async_update_data():
Expand Down
2 changes: 1 addition & 1 deletion custom_components/goodwe/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"@starkillerOG",
"@fizcris"
],
"requirements": ["goodwe==0.2.23"],
"requirements": ["goodwe==0.2.24"],
"config_flow": true,
"iot_class": "local_polling",
"loggers": ["goodwe"],
Expand Down
11 changes: 8 additions & 3 deletions custom_components/goodwe/number.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
class GoodweNumberEntityDescriptionBase:
"""Required values when describing Goodwe number entities."""

getter: Callable[[Inverter], Awaitable[int]]
getter: Callable[[Inverter], Awaitable[any]]
mapper: Callable[[any], int]
setter: Callable[[Inverter, int], Awaitable[None]]
filter: Callable[[Inverter], bool]

Expand All @@ -52,6 +53,7 @@ class GoodweNumberEntityDescription(
native_min_value=0,
native_max_value=10000,
getter=lambda inv: inv.get_grid_export_limit(),
mapper=lambda v: v,
setter=lambda inv, val: inv.set_grid_export_limit(val),
filter=lambda inv: type(inv).__name__ != "DT",
),
Expand All @@ -66,6 +68,7 @@ class GoodweNumberEntityDescription(
native_min_value=0,
native_max_value=100,
getter=lambda inv: inv.get_grid_export_limit(),
mapper=lambda v: v,
setter=lambda inv, val: inv.set_grid_export_limit(val),
filter=lambda inv: type(inv).__name__ == "DT",
),
Expand All @@ -79,6 +82,7 @@ class GoodweNumberEntityDescription(
native_min_value=0,
native_max_value=99,
getter=lambda inv: inv.get_ongrid_battery_dod(),
mapper=lambda v: v,
setter=lambda inv, val: inv.set_ongrid_battery_dod(val),
filter=lambda inv: True,
),
Expand All @@ -91,7 +95,8 @@ class GoodweNumberEntityDescription(
native_step=1,
native_min_value=0,
native_max_value=100,
getter=lambda inv: inv.get_operation_mode(),
getter=lambda inv: inv.read_setting("eco_mode_1"),
mapper=lambda v: v.power,
setter=None,
filter=lambda inv: True,
),
Expand All @@ -111,7 +116,7 @@ async def async_setup_entry(

for description in filter(lambda dsc: dsc.filter(inverter), NUMBERS):
try:
current_value = await description.getter(inverter)
current_value = description.mapper(await description.getter(inverter))
except (InverterError, ValueError):
# Inverter model does not support this setting
_LOGGER.debug("Could not read inverter setting %s", description.key)
Expand Down
12 changes: 11 additions & 1 deletion custom_components/goodwe/select.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,20 @@ async def async_setup_entry(
# Inverter model does not support this setting
_LOGGER.debug("Could not read inverter operation mode")
else:
active_power = None
try:
if active_mode:
active_power = (await inverter.read_setting("eco_mode_1")).power
except (InverterError, ValueError):
_LOGGER.debug("Could not read inverter eco mode")
active_power = 0

entity = InverterOperationModeEntity(
device_info,
OPERATION_MODE,
inverter,
_OPERATION_MODES[active_mode],
active_power,
)
async_add_entities([entity])

Expand Down Expand Up @@ -92,14 +101,15 @@ def __init__(
description: SelectEntityDescription,
inverter: Inverter,
current_mode: str,
current_power: int,
) -> None:
"""Initialize the inverter operation mode setting entity."""
self.entity_description = description
self._attr_unique_id = f"{DOMAIN}-{description.key}-{inverter.serial_number}"
self._attr_device_info = device_info
self._attr_current_option = current_mode
self._inverter: Inverter = inverter
self._eco_mode_power = 0
self._eco_mode_power = current_power

async def async_select_option(self, option: str) -> None:
"""Change the selected option."""
Expand Down
2 changes: 1 addition & 1 deletion hacs.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"name": "GoodWe Inverter (experimental)",
"country": "SK",
"domains": ["button", "number", "select", "sensor"],
"homeassistant": "2022.12.0"
"homeassistant": "2023.2.0"
}

0 comments on commit abe4915

Please sign in to comment.