Compare commits
3 Commits
51aea99f57
...
c9d65b29fd
| 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
|
priority: 5 # this need to be initialized before app using motion tracker
|
||||||
|
|
||||||
mqtt_device_name: AD Motion Tracker
|
|
||||||
|
|
||||||
max_time: 30
|
max_time: 30
|
||||||
|
|
||||||
areas:
|
areas:
|
||||||
@@ -35,8 +33,6 @@ informations_collector:
|
|||||||
class: InformationsCollector
|
class: InformationsCollector
|
||||||
priority: 1
|
priority: 1
|
||||||
|
|
||||||
mqtt_device_name: AD Informations Collector
|
|
||||||
|
|
||||||
#mute: True
|
#mute: True
|
||||||
|
|
||||||
error_collector:
|
error_collector:
|
||||||
|
|||||||
@@ -171,8 +171,6 @@ alarm_clock:
|
|||||||
module: alarmclock
|
module: alarmclock
|
||||||
class: AlarmClock
|
class: AlarmClock
|
||||||
|
|
||||||
mqtt_device_name: AD Alarm Clock
|
|
||||||
|
|
||||||
switch_alarmclock_main: input_boolean.main_alarmclock
|
switch_alarmclock_main: input_boolean.main_alarmclock
|
||||||
switch_alarmclock_secondary: input_boolean.secondary_alarmclock
|
switch_alarmclock_secondary: input_boolean.secondary_alarmclock
|
||||||
inputdate_alarmclock_main: input_datetime.main_alarmclock
|
inputdate_alarmclock_main: input_datetime.main_alarmclock
|
||||||
|
|||||||
@@ -20,3 +20,74 @@ light_kitchen_sink_switch:
|
|||||||
|
|
||||||
off_events:
|
off_events:
|
||||||
- turn_off_all_lights
|
- 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