mirror of
https://github.com/Burningstone91/smart-home-setup.git
synced 2022-05-05 21:16:50 +03:00
104 lines
3.3 KiB
YAML
Executable File
104 lines
3.3 KiB
YAML
Executable File
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
|