1 """Update coordinator for Goodwe."""
3 from __future__
import annotations
8 from goodwe
import Inverter, InverterError, RequestFailedException
14 from .const
import SCAN_INTERVAL
16 _LOGGER = logging.getLogger(__name__)
20 """Gather data for the energy device."""
28 """Initialize update coordinator."""
33 update_interval=SCAN_INTERVAL,
35 self.inverter: Inverter = inverter
39 """Fetch data from the inverter."""
42 return await self.inverter.read_runtime_data()
43 except RequestFailedException
as ex:
49 if ex.consecutive_failures_count < 3:
51 "No response received (streak of %d)", ex.consecutive_failures_count
57 "Inverter not responding (streak of %d)", ex.consecutive_failures_count
60 except InverterError
as ex:
64 """Answer current (or last known) value of the sensor."""
66 return val
if val
is not None else self.
_last_data_last_data.
get(sensor)
69 """Answer current value of the 'total' (never 0) sensor."""
74 """Reset sensor value to 0.
76 Intended for "daily" cumulative sensors (e.g. PV energy produced today),
77 which should be explicitly reset to 0 at midnight if inverter is suspended.
80 self.
datadata[sensor] = 0
None reset_sensor(self, str sensor)
None __init__(self, HomeAssistant hass, ConfigEntry entry, Inverter inverter)
Any total_sensor_value(self, str sensor)
dict[str, Any] _async_update_data(self)
Any sensor_value(self, str sensor)
web.Response get(self, web.Request request, str config_key)