Files
ad-prod/apps/media_button.py
2025-12-30 18:11:04 -06:00

40 lines
1.3 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')
for ent in self.args['buttons']:
self.listen_state(
self.handle_button,
entity_id=ent,
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')