1 """Support for monitoring the state of Digital Ocean droplets."""
3 from __future__
import annotations
7 import voluptuous
as vol
10 PLATFORM_SCHEMA
as BINARY_SENSOR_PLATFORM_SCHEMA,
11 BinarySensorDeviceClass,
34 _LOGGER = logging.getLogger(__name__)
36 DEFAULT_NAME =
"Droplet"
37 PLATFORM_SCHEMA = BINARY_SENSOR_PLATFORM_SCHEMA.extend(
38 {vol.Required(CONF_DROPLETS): vol.All(cv.ensure_list, [cv.string])}
45 add_entities: AddEntitiesCallback,
46 discovery_info: DiscoveryInfoType |
None =
None,
48 """Set up the Digital Ocean droplet sensor."""
49 if not (digital := hass.data.get(DATA_DIGITAL_OCEAN)):
52 droplets = config[CONF_DROPLETS]
55 for droplet
in droplets:
56 if (droplet_id := digital.get_droplet_id(droplet))
is None:
57 _LOGGER.error(
"Droplet %s is not available", droplet)
65 """Representation of a Digital Ocean droplet sensor."""
67 _attr_attribution = ATTRIBUTION
70 """Initialize a new Digital Ocean sensor."""
78 """Return the name of the sensor."""
79 return self.
datadata.name
83 """Return true if the binary sensor is on."""
84 return self.
datadata.status ==
"active"
88 """Return the class of this sensor."""
89 return BinarySensorDeviceClass.MOVING
93 """Return the state attributes of the Digital Ocean droplet."""
95 ATTR_CREATED_AT: self.
datadata.created_at,
96 ATTR_DROPLET_ID: self.
datadata.id,
97 ATTR_DROPLET_NAME: self.
datadata.name,
98 ATTR_FEATURES: self.
datadata.features,
99 ATTR_IPV4_ADDRESS: self.
datadata.ip_address,
100 ATTR_IPV6_ADDRESS: self.
datadata.ip_v6_address,
101 ATTR_MEMORY: self.
datadata.memory,
102 ATTR_REGION: self.
datadata.region[
"name"],
103 ATTR_VCPUS: self.
datadata.vcpus,
107 """Update state of sensor."""
112 self.
datadata = droplet
def __init__(self, do, droplet_id)
def extra_state_attributes(self)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)