1 """Binary sensor to read Proxmox VE data."""
3 from __future__
import annotations
6 BinarySensorDeviceClass,
14 from .const
import COORDINATORS, DOMAIN, PROXMOX_CLIENTS
15 from .entity
import ProxmoxEntity
21 add_entities: AddEntitiesCallback,
22 discovery_info: DiscoveryInfoType |
None =
None,
24 """Set up binary sensors."""
25 if discovery_info
is None:
30 for host_config
in discovery_info[
"config"][DOMAIN]:
31 host_name = host_config[
"host"]
32 host_name_coordinators = hass.data[DOMAIN][COORDINATORS][host_name]
34 if hass.data[PROXMOX_CLIENTS][host_name]
is None:
37 for node_config
in host_config[
"nodes"]:
38 node_name = node_config[
"node"]
40 for dev_id
in node_config[
"vms"] + node_config[
"containers"]:
41 coordinator = host_name_coordinators[node_name][dev_id]
44 if (coordinator_data := coordinator.data)
is None:
47 name = coordinator_data[
"name"]
49 coordinator, host_name, node_name, dev_id, name
51 sensors.append(sensor)
62 ) -> ProxmoxBinarySensor:
63 """Create a binary sensor based on the given data."""
65 coordinator=coordinator,
66 unique_id=f
"proxmox_{node_name}_{vm_id}_running",
67 name=f
"{node_name}_{name}",
76 """A binary sensor for reading Proxmox VE data."""
78 _attr_device_class = BinarySensorDeviceClass.RUNNING
82 coordinator: DataUpdateCoordinator,
90 """Create the binary sensor for vms or containers."""
92 coordinator, unique_id, name, icon, host_name, node_name, vm_id
97 """Return the state of the binary sensor."""
98 if (data := self.
coordinatorcoordinator.data)
is None:
101 return data[
"status"] ==
"running"
105 """Return sensor availability."""
107 return super().available
and self.
coordinatorcoordinator.data
is not None
None __init__(self, DataUpdateCoordinator coordinator, str unique_id, str name, str icon, str host_name, str node_name, int vm_id)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
ProxmoxBinarySensor create_binary_sensor(coordinator, str host_name, str node_name, int vm_id, str name)
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)