39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
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')
|