from enum import Enum from typing import Any from appdaemon.plugins.hass import Hass class ButtonPress(str, Enum): SINGLE = 'single' DOUBLE = 'double' HOLD = 'hold' class Button(Hass): def initialize(self): self.set_log_level('DEBUG') self.listen_state( self.handle_button, entity_id='sensor.blue_lamp_button_action', new=lambda s: s.strip() != '', ) def handle_button(self, entity: str, attribute: str, old: Any, new: Any, **kwargs: Any) -> None: match new: case ButtonPress.SINGLE: self.log('Single press') self.call_service('media_player/media_play_pause', entity_id='media_player.living_room_tv_2') case ButtonPress.DOUBLE: self.log('Double') self.call_service( 'scene/apply', entities={ 'light.bar': {'state': 'on', 'brightness': 10}, 'light.living_room_stick': {'state': 'on', 'brightness': 100}, 'light.server_lamp': {'state': 'on', 'brightness': 25}, }, ) case ButtonPress.HOLD: self.log('Hold down')