Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for Blockchain.com sensors."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 import logging
7 
8 from pyblockchain import get_balance, validate_address
9 import voluptuous as vol
10 
12  PLATFORM_SCHEMA as SENSOR_PLATFORM_SCHEMA,
13  SensorEntity,
14 )
15 from homeassistant.const import CONF_NAME
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 CONF_ADDRESSES = "addresses"
24 
25 DEFAULT_NAME = "Bitcoin Balance"
26 
27 SCAN_INTERVAL = timedelta(minutes=5)
28 
29 PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
30  {
31  vol.Required(CONF_ADDRESSES): [cv.string],
32  vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
33  }
34 )
35 
36 
38  hass: HomeAssistant,
39  config: ConfigType,
40  add_entities: AddEntitiesCallback,
41  discovery_info: DiscoveryInfoType | None = None,
42 ) -> None:
43  """Set up the Blockchain.com sensors."""
44 
45  addresses: list[str] = config[CONF_ADDRESSES]
46  name: str = config[CONF_NAME]
47 
48  for address in addresses:
49  if not validate_address(address):
50  _LOGGER.error("Bitcoin address is not valid: %s", address)
51  return
52 
53  add_entities([BlockchainSensor(name, addresses)], True)
54 
55 
57  """Representation of a Blockchain.com sensor."""
58 
59  _attr_attribution = "Data provided by blockchain.com"
60  _attr_icon = "mdi:currency-btc"
61  _attr_native_unit_of_measurement = "BTC"
62 
63  def __init__(self, name: str, addresses: list[str]) -> None:
64  """Initialize the sensor."""
65  self._attr_name_attr_name = name
66  self.addressesaddresses = addresses
67 
68  def update(self) -> None:
69  """Get the latest state of the sensor."""
70  self._attr_native_value_attr_native_value = get_balance(self.addressesaddresses)
None __init__(self, str name, list[str] addresses)
Definition: sensor.py:63
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: sensor.py:42
def add_entities(account, async_add_entities, tracked)
Definition: sensor.py:40