input_boolean: sleep_mode: name: Schlafmodus icon: mdi:sleep bed_sabrina: name: Bett Sabrina bed_dimitri: name: Bett Dimitri input_select: # Sleep state Dimitri sleep_state_dimitri: name: Schlaf Dimitri options: - gerade hingelegt - gerade aufgestanden - wach - schläft - zurück im Bett # Sleep state Sabrina sleep_state_sabrina: name: Schlaf Sabrina options: - gerade hingelegt - gerade aufgestanden - wach - schläft - zurück im Bett automation: # Sets the sleep state of the persons - id: set_person_sleep_state alias: "Bestimme Schlafstatus Personen" mode: parallel trigger: - platform: state entity_id: binary_sensor.bed_dimitri for: seconds: 10 - platform: state entity_id: input_boolean.bed_dimitri - platform: state entity_id: input_select.sleep_state_dimitri for: minutes: 5 - platform: state entity_id: input_boolean.bed_sabrina - platform: state entity_id: input_select.sleep_state_sabrina for: minutes: 5 action: - variables: person: "{{ trigger.to_state.entity_id.split('_')[-1] }}" input_select: "input_select.sleep_state_{{ person }}" new: "{{ trigger.to_state.state }}" - service: input_select.select_option data: entity_id: "{{ input_select }}" option: > {% if new == 'on' and is_state(input_select, 'gerade aufgestanden') %} zurück im Bett {% elif new == 'on' %} gerade hingelegt {% elif new == 'off' %} gerade aufgestanden {% elif new == 'gerade aufgestanden' %} wach {% elif new in ['zurück im Bett', 'gerade hingelegt'] %} schläft {% else %} {{ states(input_select) }} {% endif %} # Enable sleep mode when everyone is in bed, disable when everyone is awake - id: set_sleep_mode_based_on_bed_occupancy alias: "Schlafmodus einschalten wenn alle im Bett und ausschalten wenn alle wach sind." mode: parallel variables: in_bed_states: ['gerade hingelegt', 'schläft', 'zurück im Bett'] trigger: - platform: state entity_id: input_select.sleep_state_dimitri - platform: state entity_id: input_select.sleep_state_sabrina action: - choose: # IF everyone just laid down/sleeping/back to bed -> turn on sleep mode - conditions: - "{{ is_state('input_boolean.sleep_mode', 'off') }}" - "{{ states('input_select.sleep_state_dimitri') in in_bed_states }}" - "{{ states('input_select.sleep_state_sabrina') in in_bed_states }}" sequence: service: input_boolean.turn_on entity_id: input_boolean.sleep_mode # IF everyone awake -> turn off sleep mode - conditions: - "{{ is_state('input_boolean.sleep_mode', 'on') }}" - "{{ is_state('input_select.sleep_state_dimitri', 'wach') }}" - "{{ is_state('input_select.sleep_state_sabrina', 'wach') }}" sequence: service: input_boolean.turn_off entity_id: input_boolean.sleep_mode