Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for Pocket Casts."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 import logging
7 
8 from pycketcasts import pocketcasts
9 import voluptuous as vol
10 
12  PLATFORM_SCHEMA as SENSOR_PLATFORM_SCHEMA,
13  SensorEntity,
14 )
15 from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
16 from homeassistant.core import HomeAssistant
18 from homeassistant.helpers.entity_platform import AddEntitiesCallback
19 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
20 
21 _LOGGER = logging.getLogger(__name__)
22 
23 
24 SENSOR_NAME = "Pocketcasts unlistened episodes"
25 
26 SCAN_INTERVAL = timedelta(minutes=5)
27 
28 PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
29  {vol.Required(CONF_PASSWORD): cv.string, vol.Required(CONF_USERNAME): cv.string}
30 )
31 
32 
34  hass: HomeAssistant,
35  config: ConfigType,
36  add_entities: AddEntitiesCallback,
37  discovery_info: DiscoveryInfoType | None = None,
38 ) -> None:
39  """Set up the pocketcasts platform for sensors."""
40  username = config.get(CONF_USERNAME)
41  password = config.get(CONF_PASSWORD)
42 
43  try:
44  api = pocketcasts.PocketCast(email=username, password=password)
45  _LOGGER.debug("Found %d podcasts", len(api.subscriptions))
46  add_entities([PocketCastsSensor(api)], True)
47  except OSError as err:
48  _LOGGER.error("Connection to server failed: %s", err)
49 
50 
52  """Representation of a pocket casts sensor."""
53 
54  _attr_icon = "mdi:rss"
55 
56  def __init__(self, api):
57  """Initialize the sensor."""
58  self._api_api = api
59  self._state_state = None
60 
61  @property
62  def name(self):
63  """Return the name of the sensor."""
64  return SENSOR_NAME
65 
66  @property
67  def native_value(self):
68  """Return the sensor state."""
69  return self._state_state
70 
71  def update(self) -> None:
72  """Update sensor values."""
73  try:
74  self._state_state = len(self._api_api.new_releases)
75  _LOGGER.debug("Found %d new episodes", self._state_state)
76  except OSError as err:
77  _LOGGER.warning("Failed to contact server: %s", err)
def add_entities(account, async_add_entities, tracked)
Definition: sensor.py:40
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: sensor.py:38