mirror of
				https://github.com/home-assistant/core.git
				synced 2025-11-04 00:19:31 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Binary sensor platform for Acaia scales."""
 | 
						|
 | 
						|
from collections.abc import Callable
 | 
						|
from dataclasses import dataclass
 | 
						|
 | 
						|
from aioacaia.acaiascale import AcaiaScale
 | 
						|
 | 
						|
from homeassistant.components.binary_sensor import (
 | 
						|
    BinarySensorDeviceClass,
 | 
						|
    BinarySensorEntity,
 | 
						|
    BinarySensorEntityDescription,
 | 
						|
)
 | 
						|
from homeassistant.core import HomeAssistant
 | 
						|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
 | 
						|
 | 
						|
from .coordinator import AcaiaConfigEntry
 | 
						|
from .entity import AcaiaEntity
 | 
						|
 | 
						|
# Coordinator is used to centralize the data updates
 | 
						|
PARALLEL_UPDATES = 0
 | 
						|
 | 
						|
 | 
						|
@dataclass(kw_only=True, frozen=True)
 | 
						|
class AcaiaBinarySensorEntityDescription(BinarySensorEntityDescription):
 | 
						|
    """Description for Acaia binary sensor entities."""
 | 
						|
 | 
						|
    is_on_fn: Callable[[AcaiaScale], bool]
 | 
						|
 | 
						|
 | 
						|
BINARY_SENSORS: tuple[AcaiaBinarySensorEntityDescription, ...] = (
 | 
						|
    AcaiaBinarySensorEntityDescription(
 | 
						|
        key="timer_running",
 | 
						|
        translation_key="timer_running",
 | 
						|
        device_class=BinarySensorDeviceClass.RUNNING,
 | 
						|
        is_on_fn=lambda scale: scale.timer_running,
 | 
						|
    ),
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
async def async_setup_entry(
 | 
						|
    hass: HomeAssistant,
 | 
						|
    entry: AcaiaConfigEntry,
 | 
						|
    async_add_entities: AddConfigEntryEntitiesCallback,
 | 
						|
) -> None:
 | 
						|
    """Set up binary sensors."""
 | 
						|
 | 
						|
    coordinator = entry.runtime_data
 | 
						|
    async_add_entities(
 | 
						|
        AcaiaBinarySensor(coordinator, description) for description in BINARY_SENSORS
 | 
						|
    )
 | 
						|
 | 
						|
 | 
						|
class AcaiaBinarySensor(AcaiaEntity, BinarySensorEntity):
 | 
						|
    """Representation of an Acaia binary sensor."""
 | 
						|
 | 
						|
    entity_description: AcaiaBinarySensorEntityDescription
 | 
						|
 | 
						|
    @property
 | 
						|
    def is_on(self) -> bool:
 | 
						|
        """Return true if the binary sensor is on."""
 | 
						|
        return self.entity_description.is_on_fn(self._scale)
 |