core/homeassistant/components/plaato/binary_sensor.py

57 lines
1.8 KiB
Python

"""Support for Plaato Airlock sensors."""
from __future__ import annotations
from pyplaato.plaato import PlaatoKeg
from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass,
BinarySensorEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import CONF_USE_WEBHOOK, COORDINATOR, DOMAIN
from .entity import PlaatoEntity
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up Plaato from a config entry."""
if config_entry.data[CONF_USE_WEBHOOK]:
return
coordinator = hass.data[DOMAIN][config_entry.entry_id][COORDINATOR]
async_add_entities(
PlaatoBinarySensor(
hass.data[DOMAIN][config_entry.entry_id],
sensor_type,
coordinator,
)
for sensor_type in coordinator.data.binary_sensors
)
class PlaatoBinarySensor(PlaatoEntity, BinarySensorEntity):
"""Representation of a Binary Sensor."""
def __init__(self, data, sensor_type, coordinator=None) -> None:
"""Initialize plaato binary sensor."""
super().__init__(data, sensor_type, coordinator)
if sensor_type is PlaatoKeg.Pins.LEAK_DETECTION:
self._attr_device_class = BinarySensorDeviceClass.PROBLEM
elif sensor_type is PlaatoKeg.Pins.POURING:
self._attr_device_class = BinarySensorDeviceClass.OPENING
@property
def is_on(self):
"""Return true if the binary sensor is on."""
if self._coordinator is not None:
return self._coordinator.data.binary_sensors.get(self._sensor_type)
return False