mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 17:57:11 +00:00
Add async_update_data to emoncms coordinator (#122416)
* Add async_update_data to coordinator * Add const module
This commit is contained in:
parent
a1cdd91d23
commit
489457c47b
11
homeassistant/components/emoncms/const.py
Normal file
11
homeassistant/components/emoncms/const.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
"""Constants for the emoncms integration."""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
CONF_EXCLUDE_FEEDID = "exclude_feed_id"
|
||||||
|
CONF_ONLY_INCLUDE_FEEDID = "include_only_feed_id"
|
||||||
|
CONF_MESSAGE = "message"
|
||||||
|
CONF_SUCCESS = "success"
|
||||||
|
|
||||||
|
|
||||||
|
LOGGER = logging.getLogger(__package__)
|
@ -1,15 +1,14 @@
|
|||||||
"""DataUpdateCoordinator for the emoncms integration."""
|
"""DataUpdateCoordinator for the emoncms integration."""
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import logging
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from pyemoncms import EmoncmsClient
|
from pyemoncms import EmoncmsClient
|
||||||
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
from .const import CONF_MESSAGE, CONF_SUCCESS, LOGGER
|
||||||
|
|
||||||
|
|
||||||
class EmoncmsCoordinator(DataUpdateCoordinator[list[dict[str, Any]] | None]):
|
class EmoncmsCoordinator(DataUpdateCoordinator[list[dict[str, Any]] | None]):
|
||||||
@ -24,8 +23,15 @@ class EmoncmsCoordinator(DataUpdateCoordinator[list[dict[str, Any]] | None]):
|
|||||||
"""Initialize the emoncms data coordinator."""
|
"""Initialize the emoncms data coordinator."""
|
||||||
super().__init__(
|
super().__init__(
|
||||||
hass,
|
hass,
|
||||||
_LOGGER,
|
LOGGER,
|
||||||
name="emoncms_coordinator",
|
name="emoncms_coordinator",
|
||||||
update_method=emoncms_client.async_list_feeds,
|
|
||||||
update_interval=scan_interval,
|
update_interval=scan_interval,
|
||||||
)
|
)
|
||||||
|
self.emoncms_client = emoncms_client
|
||||||
|
|
||||||
|
async def _async_update_data(self) -> list[dict[str, Any]]:
|
||||||
|
"""Fetch data from API endpoint."""
|
||||||
|
data = await self.emoncms_client.async_request("/feed/list.json")
|
||||||
|
if not data[CONF_SUCCESS]:
|
||||||
|
raise UpdateFailed
|
||||||
|
return data[CONF_MESSAGE]
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import logging
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from pyemoncms import EmoncmsClient
|
from pyemoncms import EmoncmsClient
|
||||||
@ -33,10 +32,9 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
|
from .const import CONF_EXCLUDE_FEEDID, CONF_ONLY_INCLUDE_FEEDID
|
||||||
from .coordinator import EmoncmsCoordinator
|
from .coordinator import EmoncmsCoordinator
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
ATTR_FEEDID = "FeedId"
|
ATTR_FEEDID = "FeedId"
|
||||||
ATTR_FEEDNAME = "FeedName"
|
ATTR_FEEDNAME = "FeedName"
|
||||||
ATTR_LASTUPDATETIME = "LastUpdated"
|
ATTR_LASTUPDATETIME = "LastUpdated"
|
||||||
@ -45,8 +43,6 @@ ATTR_SIZE = "Size"
|
|||||||
ATTR_TAG = "Tag"
|
ATTR_TAG = "Tag"
|
||||||
ATTR_USERID = "UserId"
|
ATTR_USERID = "UserId"
|
||||||
|
|
||||||
CONF_EXCLUDE_FEEDID = "exclude_feed_id"
|
|
||||||
CONF_ONLY_INCLUDE_FEEDID = "include_only_feed_id"
|
|
||||||
CONF_SENSOR_NAMES = "sensor_names"
|
CONF_SENSOR_NAMES = "sensor_names"
|
||||||
|
|
||||||
DECIMALS = 2
|
DECIMALS = 2
|
||||||
@ -98,7 +94,7 @@ async def async_setup_platform(
|
|||||||
coordinator = EmoncmsCoordinator(hass, emoncms_client, scan_interval)
|
coordinator = EmoncmsCoordinator(hass, emoncms_client, scan_interval)
|
||||||
await coordinator.async_refresh()
|
await coordinator.async_refresh()
|
||||||
elems = coordinator.data
|
elems = coordinator.data
|
||||||
if elems is None:
|
if not elems:
|
||||||
return
|
return
|
||||||
|
|
||||||
sensors: list[EmonCmsSensor] = []
|
sensors: list[EmonCmsSensor] = []
|
||||||
@ -208,7 +204,7 @@ class EmonCmsSensor(CoordinatorEntity[EmoncmsCoordinator], SensorEntity):
|
|||||||
self._attr_native_value = None
|
self._attr_native_value = None
|
||||||
if self._value_template is not None:
|
if self._value_template is not None:
|
||||||
self._attr_native_value = (
|
self._attr_native_value = (
|
||||||
self._value_template.render_with_possible_json_value(
|
self._value_template.async_render_with_possible_json_value(
|
||||||
elem["value"], STATE_UNKNOWN
|
elem["value"], STATE_UNKNOWN
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user