Finish "dial" code for Tap Dial.
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
#from appdaemon.adapi import ADAPI
|
|
||||||
from appdaemon.entity import Entity
|
from appdaemon.entity import Entity
|
||||||
from appdaemon.plugins.hass.hassapi import Hass
|
from appdaemon.plugins.hass.hassapi import Hass
|
||||||
|
|
||||||
@@ -29,24 +28,44 @@ class TapDial(Hass):
|
|||||||
def active_entity_is_on(self) -> bool:
|
def active_entity_is_on(self) -> bool:
|
||||||
return self.active_entity.get_state() == 'on'
|
return self.active_entity.get_state() == 'on'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def current_brightness(self) -> int:
|
||||||
|
return self.active_entity.attributes['brightness']
|
||||||
|
|
||||||
def handle_state_change(self, entity: str, attribute: str, old: str, new: str, **kwargs):
|
def handle_state_change(self, entity: str, attribute: str, old: str, new: str, **kwargs):
|
||||||
self.log(f'0.0 {new}')
|
self.log(f'0.1 {new}')
|
||||||
|
|
||||||
# Dial actions
|
# Dial actions
|
||||||
if new.startswith('dial_rotate'):
|
if new.startswith('dial_rotate') and self.active_entity_is_on:
|
||||||
dir = 'left' if new.find('left') != -1 else 'right'
|
_, _, dir, speed = new.split('_', 4)
|
||||||
self.log(f'1.1 Dial {dir}')
|
self.log(f'1.1 Direction {dir} speed {speed}')
|
||||||
# More code goes here....
|
match speed:
|
||||||
|
case 'step':
|
||||||
|
rate = self.step_size
|
||||||
|
case 'slow':
|
||||||
|
rate = 2 * self.step_size
|
||||||
|
case 'fast':
|
||||||
|
rate = 3 * self.step_size
|
||||||
|
val = self.active_entity.attributes['brightness']
|
||||||
|
self.log(f'1.2 Brightness value = {val} Change rate = {rate}')
|
||||||
|
if dir == 'right':
|
||||||
|
val += rate
|
||||||
|
self.active_entity.turn_on(brightness=val)
|
||||||
|
self.log(f'1.2.1 Brightness value = {val}')
|
||||||
|
else:
|
||||||
|
val -= rate
|
||||||
|
self.active_entity.turn_on(brightness=val)
|
||||||
|
self.log(f'1.2.2 Brightness value = {val}')
|
||||||
|
|
||||||
# Button actions
|
# Button actions
|
||||||
elif new.endswith('release'):
|
elif new.endswith('release'):
|
||||||
_, n, typ, _ = new.split('_', 4)
|
_, n, typ, _ = new.split('_', 4)
|
||||||
# type will be either press or hold
|
# type will be either press or hold
|
||||||
self.log(f'1.2 Button {n} {typ}')
|
self.log(f'2.1 Button {n} {typ}')
|
||||||
|
|
||||||
if eid := self.args.get(f'button{n}'):
|
if eid := self.args.get(f'button{n}'):
|
||||||
self.active_entity = self.get_entity(eid)
|
self.active_entity = self.get_entity(eid)
|
||||||
self.log(f'2.1 Set active entity to: {self.active_entity.name}')
|
self.log(f'2.1.1 Set active entity to: {self.active_entity.name}')
|
||||||
|
|
||||||
domain, entity = eid.split('.')
|
domain, entity = eid.split('.')
|
||||||
match domain:
|
match domain:
|
||||||
@@ -54,17 +73,17 @@ class TapDial(Hass):
|
|||||||
# Set the light to maximum brightness if the button is held.
|
# Set the light to maximum brightness if the button is held.
|
||||||
if typ == 'hold':
|
if typ == 'hold':
|
||||||
self.active_entity.turn_on(brightness=self.max_brightness)
|
self.active_entity.turn_on(brightness=self.max_brightness)
|
||||||
self.log(f'3.1 Set {self.active_entity.friendly_name} to maximum brightness {self.max_brightness}')
|
self.log(f'2.1.1 Set {self.active_entity.friendly_name} to maximum brightness {self.max_brightness}')
|
||||||
else:
|
else:
|
||||||
if self.active_entity_is_on:
|
if self.active_entity_is_on:
|
||||||
self.active_entity.turn_off()
|
self.active_entity.turn_off()
|
||||||
self.log(f'4.1 Turn {self.active_entity.friendly_name} off')
|
self.log(f'2.1.2 Turn {self.active_entity.friendly_name} off')
|
||||||
else:
|
else:
|
||||||
self.active_entity.turn_on(brightness=self.init_brightness)
|
self.active_entity.turn_on(brightness=self.init_brightness)
|
||||||
self.log(f'4.2 Turn {self.active_entity.friendly_name} on with brightness {self.init_brightness}')
|
self.log(f'2.1.3 Turn {self.active_entity.friendly_name} on with brightness {self.init_brightness}')
|
||||||
case 'switch':
|
case 'switch':
|
||||||
self.active_entity.toggle()
|
self.active_entity.toggle()
|
||||||
self.log(f'2.2 Toggle on/off power to {self.active_entity.friendly_name}')
|
self.log(f'2.1.4 Toggle on/off power to {self.active_entity.friendly_name}')
|
||||||
|
|
||||||
elif switch := self.args.get(f'button{n}'):
|
elif switch := self.args.get(f'button{n}'):
|
||||||
self.active_entity = self.get_entity(switch)
|
self.active_entity = self.get_entity(switch)
|
||||||
|
|||||||
Reference in New Issue
Block a user