Files

52 lines
1.3 KiB
Python

"""Support for Velbus switches."""
from typing import Any, override
from velbusaio.channels import Relay as VelbusRelay
from homeassistant.components.switch import SwitchEntity
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import VelbusConfigEntry
from .entity import VelbusEntity, api_call
PARALLEL_UPDATES = 0
async def async_setup_entry(
hass: HomeAssistant,
entry: VelbusConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up Velbus switch based on config_entry."""
await entry.runtime_data.scan_task
async_add_entities(
VelbusSwitch(channel)
for channel in entry.runtime_data.controller.get_all_switch()
)
class VelbusSwitch(VelbusEntity, SwitchEntity):
"""Representation of a switch."""
_channel: VelbusRelay
@property
@override
def is_on(self) -> bool:
"""Return true if the switch is on."""
return self._channel.is_on()
@api_call
@override
async def async_turn_on(self, **kwargs: Any) -> None:
"""Instruct the switch to turn on."""
await self._channel.turn_on()
@api_call
@override
async def async_turn_off(self, **kwargs: Any) -> None:
"""Instruct the switch to turn off."""
await self._channel.turn_off()