Allow atome reauthentication on error (#59452)
* allow reauthentification on error * Allow reauthentification on error * allow reauthentification on error * allow reauthentification on error * Set one fonction for day/month/week/year and allow retry on error * allow retry and manage return status * local variable in retrieve_period_usage_with_retry * Use If statement rather than exception * remove blank * code format * Reduce variable * remove useless variable * get method return false and pylint no else-return * remove blank * trailing white space
This commit is contained in:
parent
c4128f853d
commit
e4931e242a
1 changed files with 63 additions and 39 deletions
|
@ -111,11 +111,13 @@ class AtomeData:
|
|||
"""Return latest active power value."""
|
||||
return self._is_connected
|
||||
|
||||
@Throttle(LIVE_SCAN_INTERVAL)
|
||||
def update_live_usage(self):
|
||||
"""Return current power value."""
|
||||
try:
|
||||
values = self.atome_client.get_live()
|
||||
def _retrieve_live(self):
|
||||
values = self.atome_client.get_live()
|
||||
if (
|
||||
values.get("last")
|
||||
and values.get("subscribed")
|
||||
and (values.get("isConnected") is not None)
|
||||
):
|
||||
self._live_power = values["last"]
|
||||
self._subscribed_power = values["subscribed"]
|
||||
self._is_connected = values["isConnected"]
|
||||
|
@ -125,9 +127,47 @@ class AtomeData:
|
|||
self._is_connected,
|
||||
self._subscribed_power,
|
||||
)
|
||||
return True
|
||||
|
||||
except KeyError as error:
|
||||
_LOGGER.error("Missing last value in values: %s: %s", values, error)
|
||||
_LOGGER.error("Live Data : Missing last value in values: %s", values)
|
||||
return False
|
||||
|
||||
@Throttle(LIVE_SCAN_INTERVAL)
|
||||
def update_live_usage(self):
|
||||
"""Return current power value."""
|
||||
if not self._retrieve_live():
|
||||
_LOGGER.debug("Perform Reconnect during live request")
|
||||
self.atome_client.login()
|
||||
self._retrieve_live()
|
||||
|
||||
def _retrieve_period_usage(self, period_type):
|
||||
"""Return current daily/weekly/monthly/yearly power usage."""
|
||||
values = self.atome_client.get_consumption(period_type)
|
||||
if values.get("total") and values.get("price"):
|
||||
period_usage = values["total"] / 1000
|
||||
period_price = values["price"]
|
||||
_LOGGER.debug("Updating Atome %s data. Got: %d", period_type, period_usage)
|
||||
return True, period_usage, period_price
|
||||
|
||||
_LOGGER.error("%s : Missing last value in values: %s", period_type, values)
|
||||
return False, None, None
|
||||
|
||||
def _retrieve_period_usage_with_retry(self, period_type):
|
||||
"""Return current daily/weekly/monthly/yearly power usage with one retry."""
|
||||
(
|
||||
retrieve_success,
|
||||
period_usage,
|
||||
period_price,
|
||||
) = self._retrieve_period_usage(period_type)
|
||||
if not retrieve_success:
|
||||
_LOGGER.debug("Perform Reconnect during %s", period_type)
|
||||
self.atome_client.login()
|
||||
(
|
||||
retrieve_success,
|
||||
period_usage,
|
||||
period_price,
|
||||
) = self._retrieve_period_usage(period_type)
|
||||
return (period_usage, period_price)
|
||||
|
||||
@property
|
||||
def day_usage(self):
|
||||
|
@ -142,14 +182,10 @@ class AtomeData:
|
|||
@Throttle(DAILY_SCAN_INTERVAL)
|
||||
def update_day_usage(self):
|
||||
"""Return current daily power usage."""
|
||||
try:
|
||||
values = self.atome_client.get_consumption(DAILY_TYPE)
|
||||
self._day_usage = values["total"] / 1000
|
||||
self._day_price = values["price"]
|
||||
_LOGGER.debug("Updating Atome daily data. Got: %d", self._day_usage)
|
||||
|
||||
except KeyError as error:
|
||||
_LOGGER.error("Missing last value in values: %s: %s", values, error)
|
||||
(
|
||||
self._day_usage,
|
||||
self._day_price,
|
||||
) = self._retrieve_period_usage_with_retry(DAILY_TYPE)
|
||||
|
||||
@property
|
||||
def week_usage(self):
|
||||
|
@ -164,14 +200,10 @@ class AtomeData:
|
|||
@Throttle(WEEKLY_SCAN_INTERVAL)
|
||||
def update_week_usage(self):
|
||||
"""Return current weekly power usage."""
|
||||
try:
|
||||
values = self.atome_client.get_consumption(WEEKLY_TYPE)
|
||||
self._week_usage = values["total"] / 1000
|
||||
self._week_price = values["price"]
|
||||
_LOGGER.debug("Updating Atome weekly data. Got: %d", self._week_usage)
|
||||
|
||||
except KeyError as error:
|
||||
_LOGGER.error("Missing last value in values: %s: %s", values, error)
|
||||
(
|
||||
self._week_usage,
|
||||
self._week_price,
|
||||
) = self._retrieve_period_usage_with_retry(WEEKLY_TYPE)
|
||||
|
||||
@property
|
||||
def month_usage(self):
|
||||
|
@ -186,14 +218,10 @@ class AtomeData:
|
|||
@Throttle(MONTHLY_SCAN_INTERVAL)
|
||||
def update_month_usage(self):
|
||||
"""Return current monthly power usage."""
|
||||
try:
|
||||
values = self.atome_client.get_consumption(MONTHLY_TYPE)
|
||||
self._month_usage = values["total"] / 1000
|
||||
self._month_price = values["price"]
|
||||
_LOGGER.debug("Updating Atome monthly data. Got: %d", self._month_usage)
|
||||
|
||||
except KeyError as error:
|
||||
_LOGGER.error("Missing last value in values: %s: %s", values, error)
|
||||
(
|
||||
self._month_usage,
|
||||
self._month_price,
|
||||
) = self._retrieve_period_usage_with_retry(MONTHLY_TYPE)
|
||||
|
||||
@property
|
||||
def year_usage(self):
|
||||
|
@ -208,14 +236,10 @@ class AtomeData:
|
|||
@Throttle(YEARLY_SCAN_INTERVAL)
|
||||
def update_year_usage(self):
|
||||
"""Return current yearly power usage."""
|
||||
try:
|
||||
values = self.atome_client.get_consumption(YEARLY_TYPE)
|
||||
self._year_usage = values["total"] / 1000
|
||||
self._year_price = values["price"]
|
||||
_LOGGER.debug("Updating Atome yearly data. Got: %d", self._year_usage)
|
||||
|
||||
except KeyError as error:
|
||||
_LOGGER.error("Missing last value in values: %s: %s", values, error)
|
||||
(
|
||||
self._year_usage,
|
||||
self._year_price,
|
||||
) = self._retrieve_period_usage_with_retry(YEARLY_TYPE)
|
||||
|
||||
|
||||
class AtomeSensor(SensorEntity):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue