1 """Support for monitoring the state of Linode Nodes."""
3 from __future__
import annotations
7 import voluptuous
as vol
10 PLATFORM_SCHEMA
as BINARY_SENSOR_PLATFORM_SCHEMA,
11 BinarySensorDeviceClass,
32 _LOGGER = logging.getLogger(__name__)
35 PLATFORM_SCHEMA = BINARY_SENSOR_PLATFORM_SCHEMA.extend(
36 {vol.Required(CONF_NODES): vol.All(cv.ensure_list, [cv.string])}
43 add_entities: AddEntitiesCallback,
44 discovery_info: DiscoveryInfoType |
None =
None,
46 """Set up the Linode droplet sensor."""
47 linode = hass.data[DATA_LINODE]
48 nodes = config[CONF_NODES]
52 if (node_id := linode.get_node_id(node))
is None:
53 _LOGGER.error(
"Node %s is not available", node)
61 """Representation of a Linode droplet sensor."""
63 _attr_device_class = BinarySensorDeviceClass.MOVING
66 """Initialize a new Linode sensor."""
73 """Update state of sensor."""
76 if self.
_linode_linode.data
is not None:
77 for node
in self.
_linode_linode.data:
84 ATTR_CREATED: data.created,
85 ATTR_NODE_ID: data.id,
86 ATTR_NODE_NAME: data.label,
87 ATTR_IPV4_ADDRESS: data.ipv4,
88 ATTR_IPV6_ADDRESS: data.ipv6,
89 ATTR_MEMORY: data.specs.memory,
90 ATTR_REGION: data.region.country,
91 ATTR_VCPUS: data.specs.vcpus,
def __init__(self, li, node_id)
_attr_extra_state_attributes
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)