Compare commits
3 Commits
51aea99f57
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| c9d65b29fd | |||
| 16af480ee2 | |||
| f3cee4271f |
Submodule apps/ad_toolbox updated: 8454cc95f5...05a910ba80
@@ -11,8 +11,6 @@ motion_tracker:
|
||||
|
||||
priority: 5 # this need to be initialized before app using motion tracker
|
||||
|
||||
mqtt_device_name: AD Motion Tracker
|
||||
|
||||
max_time: 30
|
||||
|
||||
areas:
|
||||
@@ -35,8 +33,6 @@ informations_collector:
|
||||
class: InformationsCollector
|
||||
priority: 1
|
||||
|
||||
mqtt_device_name: AD Informations Collector
|
||||
|
||||
#mute: True
|
||||
|
||||
error_collector:
|
||||
|
||||
@@ -171,8 +171,6 @@ alarm_clock:
|
||||
module: alarmclock
|
||||
class: AlarmClock
|
||||
|
||||
mqtt_device_name: AD Alarm Clock
|
||||
|
||||
switch_alarmclock_main: input_boolean.main_alarmclock
|
||||
switch_alarmclock_secondary: input_boolean.secondary_alarmclock
|
||||
inputdate_alarmclock_main: input_datetime.main_alarmclock
|
||||
|
||||
@@ -20,3 +20,74 @@ light_kitchen_sink_switch:
|
||||
|
||||
off_events:
|
||||
- turn_off_all_lights
|
||||
|
||||
senseo_quadrante:
|
||||
module: senseo
|
||||
class: Senseo
|
||||
|
||||
virtual_sensors:
|
||||
default_values:
|
||||
# this is done to break the circular dependencies between sensor.senseo_cup_icon and sensor.senseo_cup
|
||||
sensor.senseo_cup_icon: "" # "mdi:coffee-off-outline"
|
||||
sensors:
|
||||
value_selector.senseo_cup:
|
||||
attributes:
|
||||
friendly_name: Tasse
|
||||
sensor_attributes:
|
||||
icon: sensor.senseo_cup_icon
|
||||
values:
|
||||
unavailable: sensor.senseo_quadrante_operating_state == 'unavailable'
|
||||
Prête: binary_sensor.senseo_quadrante_cup_available and binary_sensor.senseo_quadrante_cup_full
|
||||
Service en cours: binary_sensor.senseo_quadrante_cup_available and sensor.senseo_quadrante_operating_state == 'SENSEO_BREWING'
|
||||
Vide: binary_sensor.senseo_quadrante_cup_available
|
||||
Absente: True
|
||||
|
||||
value_selector.senseo_cup_icon:
|
||||
"mdi:coffee": sensor.senseo_cup == 'Prête'
|
||||
"mdi:coffee-outline": sensor.senseo_cup == 'Vide' or sensor.senseo_cup == 'Service en cours'
|
||||
"mdi:coffee-off-outline": True
|
||||
|
||||
value_selector.senseo_programmation:
|
||||
attributes:
|
||||
friendly_name: Programme
|
||||
icon: mdi:coffee-to-go
|
||||
values:
|
||||
unavailable: sensor.senseo_quadrante_operating_state == 'unavailable'
|
||||
1 Tasse (douche): binary_sensor.senseo_quadrante_has_program and binary_sensor.senseo_quadrante_has_program.cup_size == 1 and binary_sensor.senseo_quadrante_has_program.power_pressed
|
||||
2 Tasses (douche): binary_sensor.senseo_quadrante_has_program and binary_sensor.senseo_quadrante_has_program.cup_size == 2 and binary_sensor.senseo_quadrante_has_program.power_pressed
|
||||
1 Tasse: binary_sensor.senseo_quadrante_has_program and binary_sensor.senseo_quadrante_has_program.cup_size == 1
|
||||
2 Tasses: binary_sensor.senseo_quadrante_has_program and binary_sensor.senseo_quadrante_has_program.cup_size == 2
|
||||
Aucun: True
|
||||
|
||||
clear_program_button: button.senseo_quadrante_clear_program
|
||||
|
||||
programs:
|
||||
one_cup_shower:
|
||||
events:
|
||||
shower_finished:
|
||||
event_name: shower_finished
|
||||
button: button.senseo_quadrante_brew_coffee_normal
|
||||
condition: binary_sensor.senseo_quadrante_has_program and binary_sensor.senseo_quadrante_has_program.cup_size == 1 and binary_sensor.senseo_quadrante_has_program.power_pressed
|
||||
|
||||
two_cup_shower:
|
||||
events:
|
||||
shower_finished:
|
||||
event_name: shower_finished
|
||||
button: button.senseo_quadrante_brew_coffee_double
|
||||
condition: binary_sensor.senseo_quadrante_has_program and binary_sensor.senseo_quadrante_has_program.cup_size == 2 and binary_sensor.senseo_quadrante_has_program.power_pressed
|
||||
|
||||
one_cup_morning:
|
||||
delay: 10
|
||||
events:
|
||||
good_morning:
|
||||
event_name: good_morning
|
||||
button: button.senseo_quadrante_brew_coffee_normal
|
||||
condition: binary_sensor.senseo_quadrante_has_program and binary_sensor.senseo_quadrante_has_program.cup_size == 1 and not binary_sensor.senseo_quadrante_has_program.power_pressed
|
||||
|
||||
two_cup_morning:
|
||||
delay: 10
|
||||
events:
|
||||
good_morning:
|
||||
event_name: good_morning
|
||||
button: button.senseo_quadrante_brew_coffee_double
|
||||
condition: binary_sensor.senseo_quadrante_has_program and binary_sensor.senseo_quadrante_has_program.cup_size == 2 and not binary_sensor.senseo_quadrante_has_program.power_pressed
|
||||
46
apps/senseo.py
Normal file
46
apps/senseo.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from ad_toolbox.smartobject import SmartObject
|
||||
import ad_toolbox.smartcondition as SmartCondition
|
||||
from ad_toolbox.eventhandler import EventHandler
|
||||
|
||||
class Senseo(SmartObject):
|
||||
|
||||
def on_initialize_smart_object(self):
|
||||
super().on_initialize_smart_object()
|
||||
self.delay_cb_handle = None
|
||||
self.smartconditions = dict()
|
||||
self.event_handlers = list()
|
||||
|
||||
try: self.program_configs = self.args['programs']
|
||||
except KeyError: self.program_configs = None
|
||||
|
||||
for config_name in self.program_configs:
|
||||
config = self.program_configs[config_name]
|
||||
self.smartconditions[config_name] = SmartCondition.Evaluator(self,config['condition'],condition_name = config_name)
|
||||
if not self.entity_exists(config['button']): self.log_error(f"Entity not found {config['button']}")
|
||||
|
||||
self.event_handlers.append(EventHandler(self,config["events"],self.on_event,config_name))
|
||||
|
||||
def on_event(self, event_name, event_data,config_name):
|
||||
self.log_info(f"Event {event_name} received. Config name = {config_name}")
|
||||
config = self.program_configs[config_name]
|
||||
|
||||
try: delay = config['delay']
|
||||
except KeyError: delay = 0
|
||||
|
||||
if self.smartconditions[config_name].evaluate() == SmartCondition.Result.Succeeded:
|
||||
if (delay > 0):
|
||||
if self.delay_cb_handle: self.cancel_timer(self.delay_cb_handle)
|
||||
self.log_info(f"The coffee will be prepared in {delay}s")
|
||||
self.delay_cb_handle = self.run_in(self.on_delay_elapse,delay,config_name = config_name)
|
||||
else:
|
||||
self.prepare_coffee(config_name)
|
||||
|
||||
def on_delay_elapse(self, kwargs):
|
||||
self.delay_cb_handle = None
|
||||
self.prepare_coffee(kwargs['config_name'])
|
||||
|
||||
def prepare_coffee(self,config_name):
|
||||
config = self.program_configs[config_name]
|
||||
self.log_info(f"Preparing Coffee ({config_name})")
|
||||
self.call_service("button/press", entity_id = config['button'])
|
||||
self.call_service("button/press", entity_id = self.args['clear_program_button'])
|
||||
Reference in New Issue
Block a user