62 lines
1.9 KiB
Python
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
|