Files
ha_config/custom_components/gardena_smart_system/binary_sensor.py
T
2025-11-20 20:09:50 +01:00

62 lines
1.9 KiB
Python

"""Support for Gardena Smart System websocket connection status."""
from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass,
BinarySensorEntity,
)
from custom_components.gardena_smart_system import GARDENA_SYSTEM
from .const import DOMAIN
async def async_setup_entry(hass, config_entry, async_add_entities):
"""Perform the setup for Gardena websocket connection status."""
async_add_entities(
[SmartSystemWebsocketStatus(hass.data[DOMAIN][GARDENA_SYSTEM].smart_system)],
True,
)
class SmartSystemWebsocketStatus(BinarySensorEntity):
"""Representation of Gardena Smart System websocket connection status."""
def __init__(self, smart_system) -> None:
"""Initialize the binary sensor."""
super().__init__()
self._unique_id = "smart_gardena_websocket_status"
self._name = "Gardena Smart System connection"
self._smart_system = smart_system
async def async_added_to_hass(self):
"""Subscribe to events."""
self._smart_system.add_ws_status_callback(self.update_callback)
@property
def name(self):
"""Return the name of the device."""
return self._name
@property
def unique_id(self) -> str:
"""Return a unique ID."""
return self._unique_id
@property
def is_on(self) -> bool:
"""Return the status of the sensor."""
return self._smart_system.is_ws_connected
@property
def should_poll(self) -> bool:
"""No polling needed for a sensor."""
return False
def update_callback(self, status):
"""Call update for Home Assistant when the device is updated."""
self.schedule_update_ha_state(True)
@property
def device_class(self):
"""Return the class of this device, from component DEVICE_CLASSES."""
return BinarySensorDeviceClass.CONNECTIVITY