75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
"""Representation of a switchBinary."""
 | 
						|
 | 
						|
import logging
 | 
						|
from typing import Any
 | 
						|
 | 
						|
from homeassistant.components.switch import (
 | 
						|
    SwitchDeviceClass,
 | 
						|
    SwitchEntity,
 | 
						|
    SwitchEntityDescription,
 | 
						|
)
 | 
						|
from homeassistant.config_entries import ConfigEntry
 | 
						|
from homeassistant.core import HomeAssistant, callback
 | 
						|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
 | 
						|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
 | 
						|
 | 
						|
from .const import DOMAIN, ZWaveMePlatform
 | 
						|
from .entity import ZWaveMeEntity
 | 
						|
 | 
						|
_LOGGER = logging.getLogger(__name__)
 | 
						|
DEVICE_NAME = ZWaveMePlatform.SWITCH
 | 
						|
 | 
						|
SWITCH_MAP: dict[str, SwitchEntityDescription] = {
 | 
						|
    "generic": SwitchEntityDescription(
 | 
						|
        key="generic",
 | 
						|
        device_class=SwitchDeviceClass.SWITCH,
 | 
						|
    )
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
async def async_setup_entry(
 | 
						|
    hass: HomeAssistant,
 | 
						|
    config_entry: ConfigEntry,
 | 
						|
    async_add_entities: AddConfigEntryEntitiesCallback,
 | 
						|
) -> None:
 | 
						|
    """Set up the switch platform."""
 | 
						|
 | 
						|
    @callback
 | 
						|
    def add_new_device(new_device):
 | 
						|
        controller = hass.data[DOMAIN][config_entry.entry_id]
 | 
						|
        switch = ZWaveMeSwitch(controller, new_device, SWITCH_MAP["generic"])
 | 
						|
 | 
						|
        async_add_entities(
 | 
						|
            [
 | 
						|
                switch,
 | 
						|
            ]
 | 
						|
        )
 | 
						|
 | 
						|
    config_entry.async_on_unload(
 | 
						|
        async_dispatcher_connect(
 | 
						|
            hass, f"ZWAVE_ME_NEW_{DEVICE_NAME.upper()}", add_new_device
 | 
						|
        )
 | 
						|
    )
 | 
						|
 | 
						|
 | 
						|
class ZWaveMeSwitch(ZWaveMeEntity, SwitchEntity):
 | 
						|
    """Representation of a ZWaveMe binary switch."""
 | 
						|
 | 
						|
    def __init__(self, controller, device, description):
 | 
						|
        """Initialize the device."""
 | 
						|
        super().__init__(controller, device)
 | 
						|
        self.entity_description = description
 | 
						|
 | 
						|
    @property
 | 
						|
    def is_on(self) -> bool:
 | 
						|
        """Return the state of the switch."""
 | 
						|
        return self.device.level == "on"
 | 
						|
 | 
						|
    def turn_on(self, **kwargs: Any) -> None:
 | 
						|
        """Turn the entity on."""
 | 
						|
        self.controller.zwave_api.send_command(self.device.id, "on")
 | 
						|
 | 
						|
    def turn_off(self, **kwargs: Any) -> None:
 | 
						|
        """Turn the entity off."""
 | 
						|
        self.controller.zwave_api.send_command(self.device.id, "off")
 |