Skip to content

Commit

Permalink
fix: Separate stopping demand sensor from updating if total consumpti…
Browse files Browse the repository at this point in the history
…on is not available from Home Pro (30 minutes dev time)
  • Loading branch information
BottlecapDave committed Jun 29, 2024
1 parent 27c39af commit a03cfab
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ async def async_get_home_pro_consumption(
try:
data = await client.async_get_consumption(is_electricity)
if data is not None:
if len(data) < 1 or data[0]["total_consumption"] is None or data[0]["total_consumption"] <= 0:
raise ApiException('total_consumption invalid')
_LOGGER.debug(f'Retrieved current consumption data from home pro for {"electricity" if is_electricity else "gas"}')
return CurrentConsumptionCoordinatorResult(current_date, 1, REFRESH_RATE_IN_MINUTES_HOME_PRO_CONSUMPTION, data)
except Exception as e:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,17 +101,18 @@ def _handle_coordinator_update(self) -> None:
if (consumption_data is not None and len(consumption_data) > 0):
_LOGGER.debug(f"Calculated total electricity consumption for '{self._mpan}/{self._serial_number}'...")

self._state = consumption_data[-1]["total_consumption"]
self._last_reset = current

self._attributes = {
"mpan": self._mpan,
"serial_number": self._serial_number,
"is_export": self._is_export,
"is_smart_meter": self._is_smart_meter,
"last_evaluated": current,
"data_last_retrieved": consumption_result.last_retrieved if consumption_result is not None else None
}
if consumption_data[-1]["total_consumption"] is not None:
self._state = consumption_data[-1]["total_consumption"]
self._last_reset = current

self._attributes = {
"mpan": self._mpan,
"serial_number": self._serial_number,
"is_export": self._is_export,
"is_smart_meter": self._is_smart_meter,
"last_evaluated": current,
"data_last_retrieved": consumption_result.last_retrieved if consumption_result is not None else None
}

self._attributes = dict_to_typed_dict(self._attributes)
super()._handle_coordinator_update()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,18 +98,19 @@ def _handle_coordinator_update(self) -> None:
if (consumption_data is not None and len(consumption_data) > 0):
_LOGGER.debug(f"Calculated total gas consumption for '{self._mprn}/{self._serial_number}'...")

if "is_kwh" not in consumption_data[-1] or consumption_data[-1]["is_kwh"] == True:
self._state = convert_kwh_to_m3(consumption_data[-1]["total_consumption"], self._calorific_value) if consumption_data[-1]["total_consumption"] is not None else None
else:
self._state = consumption_data[-1]["total_consumption"]

self._attributes = {
"mprn": self._mprn,
"serial_number": self._serial_number,
"is_smart_meter": self._is_smart_meter,
"last_evaluated": current,
"data_last_retrieved": consumption_result.last_retrieved if consumption_result is not None else None
}
if consumption_data[-1]["total_consumption"] is not None:
if "is_kwh" not in consumption_data[-1] or consumption_data[-1]["is_kwh"] == True:
self._state = convert_kwh_to_m3(consumption_data[-1]["total_consumption"], self._calorific_value) if consumption_data[-1]["total_consumption"] is not None else None
else:
self._state = consumption_data[-1]["total_consumption"]

self._attributes = {
"mprn": self._mprn,
"serial_number": self._serial_number,
"is_smart_meter": self._is_smart_meter,
"last_evaluated": current,
"data_last_retrieved": consumption_result.last_retrieved if consumption_result is not None else None
}

self._attributes = dict_to_typed_dict(self._attributes)
super()._handle_coordinator_update()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,20 +98,19 @@ def _handle_coordinator_update(self) -> None:
if (consumption_data is not None and len(consumption_data) > 0):
_LOGGER.debug(f"Calculated total gas consumption for '{self._mprn}/{self._serial_number}'...")

self._state = consumption_data[-1]["total_consumption"]

if "is_kwh" not in consumption_data[-1] or consumption_data[-1]["is_kwh"] == True:
self._state = consumption_data[-1]["total_consumption"]
else:
self._state = convert_m3_to_kwh(consumption_data[-1]["total_consumption"], self._calorific_value) if consumption_data[-1]["total_consumption"] is not None else None

self._attributes = {
"mprn": self._mprn,
"serial_number": self._serial_number,
"is_smart_meter": self._is_smart_meter,
"last_evaluated": current,
"data_last_retrieved": consumption_result.last_retrieved if consumption_result is not None else None
}
if consumption_data[-1]["total_consumption"] is not None:
if "is_kwh" not in consumption_data[-1] or consumption_data[-1]["is_kwh"] == True:
self._state = consumption_data[-1]["total_consumption"]
else:
self._state = convert_m3_to_kwh(consumption_data[-1]["total_consumption"], self._calorific_value) if consumption_data[-1]["total_consumption"] is not None else None

self._attributes = {
"mprn": self._mprn,
"serial_number": self._serial_number,
"is_smart_meter": self._is_smart_meter,
"last_evaluated": current,
"data_last_retrieved": consumption_result.last_retrieved if consumption_result is not None else None
}

self._attributes = dict_to_typed_dict(self._attributes)
super()._handle_coordinator_update()
Expand Down

0 comments on commit a03cfab

Please sign in to comment.