112 lines
3.6 KiB
YAML
112 lines
3.6 KiB
YAML
|
|
- id: '1772978762478'
|
||
|
|
alias: Kiosk Rotate Dashboards
|
||
|
|
description: During 8:30 AM-4:00 PM, show summer schedule only on weekdays with
|
||
|
|
no camp event today; otherwise rotate normally.
|
||
|
|
triggers:
|
||
|
|
- minutes: /1
|
||
|
|
trigger: time_pattern
|
||
|
|
actions:
|
||
|
|
- action: calendar.get_events
|
||
|
|
target:
|
||
|
|
entity_id: calendar.family_events
|
||
|
|
data:
|
||
|
|
start_date_time: '{{ today_at(''00:00'') }}'
|
||
|
|
end_date_time: '{{ today_at(''00:00'') + timedelta(days=1) }}'
|
||
|
|
response_variable: agenda
|
||
|
|
- variables:
|
||
|
|
camp_events: '{{ (agenda[''calendar.family_events''][''events''] | default([]))
|
||
|
|
| selectattr(''summary'', ''defined'') | map(attribute=''summary'') | map(''lower'')
|
||
|
|
| select(''search'', ''camp'') | list | count }}'
|
||
|
|
should_show_summer: '{{ now().weekday() < 5 and today_at(''08:29:59'') <= now()
|
||
|
|
< today_at(''16:00'') and (camp_events | int(0)) == 0 }}'
|
||
|
|
current_view: '{{ states(''input_select.kiosk_view'') }}'
|
||
|
|
- choose:
|
||
|
|
- conditions:
|
||
|
|
- condition: template
|
||
|
|
value_template: '{{ should_show_summer | bool }}'
|
||
|
|
sequence:
|
||
|
|
- action: input_select.select_option
|
||
|
|
target:
|
||
|
|
entity_id: input_select.kiosk_view
|
||
|
|
data:
|
||
|
|
option: summer-schedule-kiosk
|
||
|
|
- conditions:
|
||
|
|
- condition: template
|
||
|
|
value_template: '{{ current_view == ''summer-schedule-kiosk'' and not (should_show_summer
|
||
|
|
| bool) }}'
|
||
|
|
sequence:
|
||
|
|
- action: input_select.select_next
|
||
|
|
target:
|
||
|
|
entity_id: input_select.kiosk_view
|
||
|
|
data:
|
||
|
|
cycle: true
|
||
|
|
default:
|
||
|
|
- action: input_select.select_next
|
||
|
|
target:
|
||
|
|
entity_id: input_select.kiosk_view
|
||
|
|
data:
|
||
|
|
cycle: true
|
||
|
|
mode: single
|
||
|
|
- id: '1772978826069'
|
||
|
|
alias: Kiosk Navigate Display
|
||
|
|
description: ''
|
||
|
|
triggers:
|
||
|
|
- trigger: state
|
||
|
|
entity_id: input_select.kiosk_view
|
||
|
|
actions:
|
||
|
|
- data:
|
||
|
|
browser_id:
|
||
|
|
- raspberry-kiosk
|
||
|
|
path: /{{ states('input_select.kiosk_view') }}
|
||
|
|
action: browser_mod.navigate
|
||
|
|
mode: restart
|
||
|
|
- id: '1774407470375'
|
||
|
|
alias: ESPHome Fleet Update
|
||
|
|
description: ''
|
||
|
|
triggers:
|
||
|
|
- at: 03:00:00
|
||
|
|
trigger: time
|
||
|
|
- event_type: esphome_fleet_update_trigger
|
||
|
|
trigger: event
|
||
|
|
conditions:
|
||
|
|
- condition: template
|
||
|
|
value_template: "{{ expand(integration_entities('esphome'))\n | selectattr('entity_id',\
|
||
|
|
\ 'contains', 'update')\n | selectattr('state', 'eq', 'on')\n | list | count\
|
||
|
|
\ > 0 }}\n"
|
||
|
|
actions:
|
||
|
|
- variables:
|
||
|
|
pending_devices: "{{ expand(integration_entities('esphome'))\n | selectattr('entity_id',\
|
||
|
|
\ 'contains', 'update')\n | selectattr('state', 'eq', 'on')\n | map(attribute='entity_id')\
|
||
|
|
\ | list }}\n"
|
||
|
|
pending_names: "{{ expand(integration_entities('esphome'))\n | selectattr('entity_id',\
|
||
|
|
\ 'contains', 'update')\n | selectattr('state', 'eq', 'on')\n | map(attribute='name')\
|
||
|
|
\ | join(', ') }}\n"
|
||
|
|
- action: notify.persistent_notification
|
||
|
|
data:
|
||
|
|
title: ESPHome Fleet Update Starting
|
||
|
|
message: 'Updating {{ pending_devices | count }} device(s): {{ pending_names
|
||
|
|
}}
|
||
|
|
|
||
|
|
'
|
||
|
|
- repeat:
|
||
|
|
for_each: '{{ pending_devices }}'
|
||
|
|
sequence:
|
||
|
|
- action: update.install
|
||
|
|
target:
|
||
|
|
entity_id: '{{ repeat.item }}'
|
||
|
|
continue_on_error: true
|
||
|
|
- wait_template: '{{ not is_state(repeat.item, ''on'') }}
|
||
|
|
|
||
|
|
'
|
||
|
|
timeout: 00:05:00
|
||
|
|
continue_on_timeout: true
|
||
|
|
- delay:
|
||
|
|
minutes: 2
|
||
|
|
- action: notify.persistent_notification
|
||
|
|
data:
|
||
|
|
title: ESPHome Fleet Update Complete
|
||
|
|
message: 'Finished updating {{ pending_devices | count }} device(s): {{ pending_names
|
||
|
|
}}
|
||
|
|
|
||
|
|
'
|