AutomationDataset/gungorser/gungorser_automations.yaml

354 lines
12 KiB
YAML

- id: banyo_humidity
alias: banyo_humidity
mode: single
triggers:
- trigger: template
value_template: '{{ states(''sensor.banyo_moisture_humidity'') | float(0) > 45
}}'
id: 'on'
- trigger: template
value_template: '{{ states(''sensor.banyo_moisture_humidity'') | float(0) <= 45
}}'
id: 'off'
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- 'on'
sequence:
- action: fan.turn_on
metadata: {}
data: {}
target:
entity_id: fan.banyo_fan
- conditions: []
sequence:
- action: fan.turn_off
metadata: {}
data: {}
target:
entity_id: fan.banyo_fan
- id: climate_schedule
alias: climate_schedule
description: ''
triggers:
- trigger: calendar
entity_id: calendar.sercan
event: start
offset: 0:0:0
- trigger: calendar
entity_id: calendar.sercan
event: start
offset: +0:30:0
- trigger: calendar
entity_id: calendar.sercan
event: end
offset: 0:0:0
- trigger: calendar
entity_id: calendar.sercan
event: end
offset: -0:30:0
- trigger: calendar
entity_id: calendar.melike
event: start
offset: 0:0:0
- trigger: calendar
entity_id: calendar.melike
event: start
offset: +0:30:0
- trigger: calendar
entity_id: calendar.melike
event: end
offset: 0:0:0
- trigger: calendar
entity_id: calendar.melike
event: end
offset: -0:30:0
- trigger: calendar
entity_id: calendar.misafir
event: start
offset: 0:0:0
- trigger: calendar
entity_id: calendar.misafir
event: start
offset: +0:30:0
- trigger: calendar
entity_id: calendar.misafir
event: end
offset: 0:0:0
- trigger: calendar
entity_id: calendar.misafir
event: end
offset: -0:30:0
conditions: []
actions:
- variables:
event_time: "{% if trigger.event == 'start' %}\n {% set start_no_offset = trigger.calendar_event.start\
\ %}\n{% else %}\n {% set start_no_offset = trigger.calendar_event.end %}\n\
{% endif %} {{ as_local(as_datetime(start_no_offset)) + trigger.offset }}"
- action: calendar.get_events
target:
entity_id: '{{ states.calendar | map(attribute=''entity_id'') | list }}'
data:
start_date_time: '{{ event_time }}'
duration:
hours: 0
minutes: 0
seconds: 1
response_variable: after_events
- action: calendar.get_events
target:
entity_id: '{{ states.calendar | map(attribute=''entity_id'') | list }}'
data:
start_date_time: '{{ (as_timestamp(event_time)-1) | timestamp_local }}'
duration:
hours: 0
minutes: 0
seconds: 1
response_variable: before_events
- variables:
room_id: '{{ area_id((trigger.calendar_event.description | from_json)[''room_name''])
}}
'
room_temps: "{# before ve after icin temps, ikisinin birlikte tutuldugu yer\
\ ise temps_all #} {% set ns = namespace(temps=[], temps_all=[]) %} {% for\
\ seq, events in {'before': before_events, 'after': after_events}.items()\
\ %}\n {# Temps sifirlanir #}\n {% set ns.temps = [] %} \n {% set all_events\
\ = events.values() | map(attribute='events') | sum(start=[]) | list %}\n\
\ {% for event in all_events %}\n {% set desc = event.description | from_json\
\ %}\n {# sadece bu eventin odasiyla ilgileniyoruz #}\n {% if area_id(desc['room_name'])\
\ == room_id %}\n {% if 'sleep_temp' in desc and\n ((seq ==\
\ 'before' \n and as_timestamp(event.start) + 1800 < as_timestamp(event_time)\
\ \n and as_timestamp(event.end) - 1800 >= as_timestamp(event_time))\n\
\ or (seq == 'after' \n and as_timestamp(event.start) +\
\ 1800 <= as_timestamp(event_time) \n and as_timestamp(event.end)\
\ - 1800 > as_timestamp(event_time))) %}\n {% set ns.temps = ns.temps\
\ + [ desc['sleep_temp'] ] %}\n {% else %}\n {% set ns.temps =\
\ ns.temps + [desc['temp']] %}\n {% endif %}\n {% endif %}\n {% endfor\
\ %}\n {% set ns.temps_all = ns.temps_all + [ ns.temps ] %}\n{% endfor %}\
\ {{ ns.temps_all }}\n"
before: '{{ room_temps[0] | max if room_temps[0] else none }}'
after: '{{ room_temps[1] | max if room_temps[1] else none }}'
- if: '{{ before != after }}'
then:
- action: climate.set_temperature
data:
hvac_mode: '{{ ''heat'' if after else ''off'' }}'
temperature: '{{ after | int(7) }}'
target:
area_id: '{{ room_id }}'
- action: climate.set_hvac_mode
data:
hvac_mode: '{{ ''heat'' if after else ''off'' }}'
target:
area_id: '{{ room_id }}'
mode: queued
- id: cover_schedule
alias: cover_schedule
description: ''
triggers:
- trigger: sun
event: sunset
offset: 0
id: sunset
- trigger: sun
event: sunrise
offset: 0
id: sunrise
- trigger: calendar
entity_id: calendar.sercan
event: end
offset: 0:0:0
id: event_end
- trigger: calendar
entity_id: calendar.melike
event: end
offset: 0:0:0
id: event_end
- trigger: calendar
entity_id: calendar.misafir
event: end
offset: 0:0:0
id: event_end
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- event_end
sequence:
- action: calendar.get_events
target:
entity_id: '{{ states.calendar | map(attribute=''entity_id'') | list }}'
data:
start_date_time: '{% set next_rising = as_datetime(state_attr(''sun.sun'',
''next_rising'')) %} {{next_rising - timedelta(days=1) }}
'
duration:
hours: 0
minutes: 0
seconds: 1
response_variable: sunrise_events
- action: calendar.get_events
target:
entity_id: '{{ states.calendar | map(attribute=''entity_id'') | list }}'
data:
start_date_time: '{{ trigger.calendar_event.end }}'
duration:
hours: 0
minutes: 0
seconds: 1
response_variable: after_events
- action: cover.open_cover
metadata: {}
data: {}
target: "{% set current_area_id = (trigger.calendar_event.description | from_json).room_name\
\ | area_id %} {# Check if current event is an sunrise event #} {% if sunrise_events.values()\
\ \n | map(attribute='events') \n | sum(start=[]) \n | selectattr('summary',\
\ 'eq', trigger.calendar_event.summary)\n | selectattr('description', 'eq',\
\ trigger.calendar_event.description)\n | selectattr('start', 'eq', trigger.calendar_event.start)\n\
\ | selectattr('end', 'eq', trigger.calendar_event.end)\n | list %}\n\
\ {# Search all after events, which are also a sunrise event #}\n {% set\
\ ns = namespace(after_sunrise_events=[]) %}\n {% for after_event in after_events.values()\
\ \n | map(attribute='events') \n | sum(start=[]) \n | list\
\ %}\n {% for sunrise_event in sunrise_events.values() \n | map(attribute='events')\
\ \n | sum(start=[]) \n | list %}\n {% set desc = after_event.description\
\ | from_json %}\n {% if desc.room_name | area_id == current_area_id\
\ \n and after_event.summary == sunrise_event.summary \n and\
\ after_event.description == sunrise_event.description \n and after_event.start\
\ == sunrise_event.end \n and after_event.end == sunrise_event.end\
\ %}\n {# Both after and sunrise events are found #}\n {%\
\ set ns.after_sunrise_events = ns.after_sunrise_events + [after_event]\
\ %}\n {% endif %}\n {% endfor %}\n {% endfor %}\n {{ { \"area_id\"\
: [] if ns.after_sunrise_events else [current_area_id] } }}\n{% else %}\n\
\ {{ { \"area_id\": [] } }}\n{% endif %}\n"
- conditions:
- condition: trigger
id:
- sunset
sequence:
- action: cover.close_cover
metadata: {}
data: {}
target: '{{ {''area_id'': areas() | list} }}'
- conditions:
- condition: trigger
id:
- sunrise
sequence:
- action: calendar.get_events
target:
entity_id: '{{ states.calendar | map(attribute=''entity_id'') | list }}'
data:
start_date_time: '{{ now() }}'
duration:
hours: 0
minutes: 0
seconds: 1
response_variable: sunrise_events
- action: cover.open_cover
metadata: {}
data: {}
target: "{{ { \"area_id\": areas()\n | reject(\"in\", sunrise_events.values()\
\ \n | map(attribute='events') \n | sum(start=[]) \n \
\ | map(attribute='description')\n | map('from_json')\n \
\ | map(attribute='room_name')\n | map('area_id')\n | unique\
\ | list)\n | list } }}\n"
- delay: 120
mode: queued
- id: kat1_coverclose
alias: kat1_coverclose
description: ''
triggers:
- domain: mqtt
device_id: 1d49a19304191ce333202639e9ed74d5
type: action
subtype: 1_hold
trigger: device
id: button
- domain: mqtt
device_id: d3fd09e3b60a91f37e64b9137c1bba7b
type: action
subtype: 3_hold
trigger: device
id: button
- domain: mqtt
device_id: 3b076af749562b3dfa18416768178b40
type: action
subtype: 2_hold
trigger: device
id: button
conditions: []
actions:
- choose:
- conditions:
- condition: template
value_template: '{{ devices | map(''states'') | reject(''eq'', ''closed'')
| list | count > 0 }}'
sequence:
- action: scene.create
metadata: {}
data:
scene_id: kat1_coverclose
snapshot_entities: '{{devices}}'
- action: cover.close_cover
metadata: {}
data: {}
target:
entity_id: '{{devices}}'
- conditions: []
sequence:
- action: scene.turn_on
metadata: {}
data: {}
target:
entity_id: scene.kat1_coverclose
variables:
devices: '{{ floor_areas(''1_kat'') | map(''area_entities'') | sum(start=[]) |
select(''in'', states.cover | map(attribute=''entity_id'')| list)| list}}'
mode: single
- alias: thermostat_switch
id: thermostat_switch
description: ''
triggers:
- value_template: "{{ ['number.sercan_climate_valve_opening_degree',\n 'number.yatak_climate_valve_opening_degree',\n\
\ 'number.melike_climate_valve_opening_degree',\n 'number.bebek_climate_valve_opening_degree',\n\
\ 'number.banyo_climate_valve_opening_degree',\n 'number.misafir_climate_valve_opening_degree']\
\ \n | map('states') \n | select('is_number')\n | map('float') | max > 0\
\ }}"
trigger: template
id: heat
- value_template: "{{ ['number.sercan_climate_valve_opening_degree',\n 'number.yatak_climate_valve_opening_degree',\n\
\ 'number.melike_climate_valve_opening_degree',\n 'number.bebek_climate_valve_opening_degree',\n\
\ 'number.banyo_climate_valve_opening_degree',\n 'number.misafir_climate_valve_opening_degree']\
\ \n | map('states') \n | select('is_number')\n | map('float') \n | max\
\ == 0 }}"
trigger: template
id: 'off'
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- heat
sequence:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.koridor2_switch
- conditions: []
sequence:
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.koridor2_switch
mode: restart