General information
The current provided blueprint works on device triggers. These don't provide as much information in their trigger variable as a state trigger does (most importantly, there is no from_state).
I've edited the full.yaml blueprint to make this work, and I've added the code below. Since I saw some python files in the folder of which I wasn't sure what they did, I opted not to make a pull request but instead do it like this. My idea would be to simply add this as a second blueprint in the repo. Due to problems when re-importing (caused overwriting) I've commented out the source_url key currently.
Usage scenario
When starting sleep tracking, my sleep as android pauses first. I'd like to slowly dim the lights once this happens, but also would like a night light to turn on when I pause it while actually asleep. By using the from_state trigger variable, I can put a condition in the action that makes it only trigger if the previous state was not sleep_tracking_started for example.
Blueprint
blueprint:
name: Sleep as Android MQTT entity actions
description: Define actions based on Sleep As Android sensor states
domain: automation
#source_url: https://github.com/IATkachenko/HA-SleepAsAndroid/blob/main/blueprint/full.yaml
input:
sleep_entity:
name: SleepAsAndroid Entity
description: 'Sleep As Android Integration Entity'
selector:
entity:
filter:
integration: sleep_as_android
multiple: false
person:
name: Person
description: Person for checking state
selector:
entity:
domain: person
multiple: false
state:
name: State
description: Person must be in this state
default: home
sleep_tracking_started:
name: sleep_tracking_started
description: sleep_tracking_started event
default: []
selector:
action: {}
sleep_tracking_stopped:
name: sleep_tracking_stopped
description: sleep_tracking_stopped event
default: []
selector:
action: {}
sleep_tracking_paused:
name: sleep_tracking_paused
description: sleep_tracking_paused event
default: []
selector:
action: {}
sleep_tracking_resumed:
name: sleep_tracking_resumed
description: sleep_tracking_resumed event
default: []
selector:
action: {}
alarm_snooze_clicked:
name: alarm_snooze_clicked
description: alarm_snooze_clicked event
default: []
selector:
action: {}
alarm_snooze_canceled:
name: alarm_snooze_canceled
description: alarm_snooze_canceled event
default: []
selector:
action: {}
time_to_bed_alarm_alert:
name: time_to_bed_alarm_alert
description: time_to_bed_alarm_alert event
default: []
selector:
action: {}
alarm_alert_start:
name: alarm_alert_start
description: alarm_alert_start event
default: []
selector:
action: {}
alarm_alert_dismiss:
name: alarm_alert_dismiss
description: alarm_alert_dismiss event
default: []
selector:
action: {}
alarm_skip_next:
name: alarm_skip_next
description: alarm_skip_next event
default: []
selector:
action: {}
show_skip_next_alarm:
name: show_skip_next_alarm
description: show_skip_next_alarm event
default: []
selector:
action: {}
rem:
name: rem
description: rem event
default: []
selector:
action: {}
smart_period:
name: smart_period
description: smart_period event
default: []
selector:
action: {}
before_smart_period:
name: before_smart_period
description: before_smart_period event
default: []
selector:
action: {}
lullaby_start:
name: lullaby_start
description: lullaby_start event
default: []
selector:
action: {}
lullaby_stop:
name: lullaby_stop
description: lullaby_stop event
default: []
selector:
action: {}
lullaby_volume_down:
name: lullaby_volume_down
description: lullaby_volume_down event
default: []
selector:
action: {}
deep_sleep:
name: deep_sleep
description: deep_sleep event
default: []
selector:
action: {}
light_sleep:
name: light_sleep
description: light_sleep event
default: []
selector:
action: {}
awake:
name: awake
description: awake event
default: []
selector:
action: {}
not_awake:
name: not_awake
description: not_awake event
default: []
selector:
action: {}
apnea_alarm:
name: apnea_alarm
description: apnea_alarm event
default: []
selector:
action: {}
antisnoring:
name: antisnoring
description: antisnoring event
default: []
selector:
action: {}
sound_event_snore:
name: sound_event_snore
description: sound_event_snore event
default: []
selector:
action: {}
sound_event_talk:
name: sound_event_talk
description: sound_event_talk event
default: []
selector:
action: {}
sound_event_cough:
name: sound_event_cough
description: sound_event_cough event
default: []
selector:
action: {}
sound_event_baby:
name: sound_event_baby
description: sound_event_baby event
default: []
selector:
action: {}
sound_event_laugh:
name: sound_event_laugh
description: sound_event_laugh event
default: []
selector:
action: {}
before_alarm:
name: before_alarm
description: before_alarm event
default: []
selector:
action: {}
mode: queued
max_exceeded: silent
trigger:
- platform: state
entity_id: !input sleep_entity
to: sleep_tracking_started
id: sleep_tracking_started
# - platform: device
# domain: sleep_as_android
# device_id: !input device
# type: sleep_tracking_started
# id: sleep_tracking_started
- platform: state
entity_id: !input sleep_entity
to: sleep_tracking_stopped
id: sleep_tracking_stopped
- platform: state
entity_id: !input sleep_entity
to: sleep_tracking_paused
id: sleep_tracking_paused
- platform: state
entity_id: !input sleep_entity
to: sleep_tracking_resumed
id: sleep_tracking_resumed
- platform: state
entity_id: !input sleep_entity
to: alarm_snooze_clicked
id: alarm_snooze_clicked
- platform: state
entity_id: !input sleep_entity
to: alarm_snooze_canceled
id: alarm_snooze_canceled
- platform: state
entity_id: !input sleep_entity
to: time_to_bed_alarm_alert
id: time_to_bed_alarm_alert
- platform: state
entity_id: !input sleep_entity
to: alarm_alert_start
id: alarm_alert_start
- platform: state
entity_id: !input sleep_entity
to: alarm_alert_dismiss
id: alarm_alert_dismiss
- platform: state
entity_id: !input sleep_entity
to: alarm_skip_next
id: alarm_skip_next
- platform: state
entity_id: !input sleep_entity
to: show_skip_next_alarm
id: show_skip_next_alarm
- platform: state
entity_id: !input sleep_entity
to: rem
id: rem
- platform: state
entity_id: !input sleep_entity
to: smart_period
id: smart_period
- platform: state
entity_id: !input sleep_entity
to: before_smart_period
id: before_smart_period
- platform: state
entity_id: !input sleep_entity
to: lullaby_start
id: lullaby_start
- platform: state
entity_id: !input sleep_entity
to: lullaby_stop
id: lullaby_stop
- platform: state
entity_id: !input sleep_entity
to: lullaby_volume_down
id: lullaby_volume_down
- platform: state
entity_id: !input sleep_entity
to: deep_sleep
id: deep_sleep
- platform: state
entity_id: !input sleep_entity
to: light_sleep
id: light_sleep
- platform: state
entity_id: !input sleep_entity
to: awake
id: awake
- platform: state
entity_id: !input sleep_entity
to: not_awake
id: not_awake
- platform: state
entity_id: !input sleep_entity
to: apnea_alarm
id: apnea_alarm
- platform: state
entity_id: !input sleep_entity
to: antisnoring
id: antisnoring
- platform: state
entity_id: !input sleep_entity
to: sound_event_snore
id: sound_event_snore
- platform: state
entity_id: !input sleep_entity
to: sound_event_talk
id: sound_event_talk
- platform: state
entity_id: !input sleep_entity
to: sound_event_cough
id: sound_event_cough
- platform: state
entity_id: !input sleep_entity
to: sound_event_baby
id: sound_event_baby
- platform: state
entity_id: !input sleep_entity
to: sound_event_laugh
id: sound_event_laugh
- platform: state
entity_id: !input sleep_entity
to: before_alarm
id: before_alarm
condition:
- condition: state
entity_id: !input person
state: !input state
action:
- choose:
- conditions:
condition: trigger
id: sleep_tracking_started
sequence: !input sleep_tracking_started
- conditions:
condition: trigger
id: sleep_tracking_stopped
sequence: !input sleep_tracking_stopped
- conditions:
condition: trigger
id: sleep_tracking_paused
sequence: !input sleep_tracking_paused
- conditions:
condition: trigger
id: sleep_tracking_resumed
sequence: !input sleep_tracking_resumed
- conditions:
condition: trigger
id: alarm_snooze_clicked
sequence: !input alarm_snooze_clicked
- conditions:
condition: trigger
id: alarm_snooze_canceled
sequence: !input alarm_snooze_canceled
- conditions:
condition: trigger
id: time_to_bed_alarm_alert
sequence: !input time_to_bed_alarm_alert
- conditions:
condition: trigger
id: alarm_alert_start
sequence: !input alarm_alert_start
- conditions:
condition: trigger
id: alarm_alert_dismiss
sequence: !input alarm_alert_dismiss
- conditions:
condition: trigger
id: alarm_skip_next
sequence: !input alarm_skip_next
- conditions:
condition: trigger
id: show_skip_next_alarm
sequence: !input show_skip_next_alarm
- conditions:
condition: trigger
id: rem
sequence: !input rem
- conditions:
condition: trigger
id: smart_period
sequence: !input smart_period
- conditions:
condition: trigger
id: before_smart_period
sequence: !input before_smart_period
- conditions:
condition: trigger
id: lullaby_start
sequence: !input lullaby_start
- conditions:
condition: trigger
id: lullaby_stop
sequence: !input lullaby_stop
- conditions:
condition: trigger
id: lullaby_volume_down
sequence: !input lullaby_volume_down
- conditions:
condition: trigger
id: deep_sleep
sequence: !input deep_sleep
- conditions:
condition: trigger
id: light_sleep
sequence: !input light_sleep
- conditions:
condition: trigger
id: awake
sequence: !input awake
- conditions:
condition: trigger
id: not_awake
sequence: !input not_awake
- conditions:
condition: trigger
id: apnea_alarm
sequence: !input apnea_alarm
- conditions:
condition: trigger
id: antisnoring
sequence: !input antisnoring
- conditions:
condition: trigger
id: sound_event_snore
sequence: !input sound_event_snore
- conditions:
condition: trigger
id: sound_event_talk
sequence: !input sound_event_talk
- conditions:
condition: trigger
id: sound_event_cough
sequence: !input sound_event_cough
- conditions:
condition: trigger
id: sound_event_baby
sequence: !input sound_event_baby
- conditions:
condition: trigger
id: sound_event_laugh
sequence: !input sound_event_laugh
- conditions:
condition: trigger
id: before_alarm
sequence: !input before_alarm
General information
The current provided blueprint works on device triggers. These don't provide as much information in their trigger variable as a state trigger does (most importantly, there is no
from_state).I've edited the
full.yamlblueprint to make this work, and I've added the code below. Since I saw some python files in the folder of which I wasn't sure what they did, I opted not to make a pull request but instead do it like this. My idea would be to simply add this as a second blueprint in the repo. Due to problems when re-importing (caused overwriting) I've commented out thesource_urlkey currently.Usage scenario
When starting sleep tracking, my sleep as android pauses first. I'd like to slowly dim the lights once this happens, but also would like a night light to turn on when I pause it while actually asleep. By using the
from_statetrigger variable, I can put a condition in the action that makes it only trigger if the previous state was notsleep_tracking_startedfor example.Blueprint