Files
Home-Assistant-Configs/packages/school.yaml

252 lines
7.8 KiB
YAML

input_boolean:
school_in_session:
name: School In Session
icon: mdi:bus-school
school_today:
name: School Today
icon: mdi:bus-school
school_early_release:
name: School Early Release
icon: mdi:bus-school
school_today_extended:
name: School Today Extended
icon: mdi:bus-school
kallen_two_hour_delay:
name: Kallen Two Hour Delay
icon: mdi:bus-clock
kallen_school_cancelled:
name: Kallen School Cancelled
icon: mdi:calendar-remove
kallen_band_practice:
name: Kallen Band Practice
icon: mdi:trumpet
input_datetime:
school_first_day:
name: First Day of School
has_date: true
has_time: false
icon: mdi:calendar
school_last_day:
name: Last Day of School
has_date: true
has_time: false
icon: mdi:calendar
school_day_start:
name: School Day Start
has_date: false
has_time: true
icon: mdi:clock-start
school_day_end:
name: School Day End
has_date: false
has_time: true
icon: mdi:clock-end
thanksgiving_break_start:
name: Thanksgiving Break
has_date: true
has_time: false
icon: mdi:calendar-start
christmas_break_start:
name: Christmas Break
has_date: true
has_time: false
icon: mdi:calendar-start
spring_break_start:
name: Spring Break
has_date: true
has_time: false
icon: mdi:calendar-start
school_day_start_reminder:
name: School Day Start Reminder
has_date: false
has_time: true
icon: mdi:clock-alert
school_day_end_reminder:
name: School Day End Reminder
has_date: false
has_time: true
icon: mdi:clock-alert
sensor:
- platform: template
sensors:
school_start_days2go:
value_template: "{{ ((state_attr('input_datetime.school_first_day', 'timestamp')-as_timestamp(now())) | int /60/1440) | round(0) }}"
unit_of_measurement: 'Days'
school_end_days2go:
value_template: "{{ ((state_attr('input_datetime.school_last_day', 'timestamp')-as_timestamp(now())) | int /60/1440) | round(0) }}"
unit_of_measurement: 'Days'
vacation_days2go:
value_template: >
{% if state_attr('calendar.vacation', 'start_time') %}
{{ ((as_timestamp(strptime(state_attr('calendar.vacation', 'start_time'), '%Y-%m-%d'))-as_timestamp(now())) | int /60/1440) | round(0) }}
{% else %}
999
{% endif %}
unit_of_measurement: 'Days'
thanksgiving_break_days2go:
value_template: "{{ ((state_attr('input_datetime.thanksgiving_break_start', 'timestamp')-as_timestamp(now())) | int /60/1440) | round(0) }}"
unit_of_measurement: 'Days'
christmas_break_days2go:
value_template: "{{ ((state_attr('input_datetime.christmas_break_start', 'timestamp')-as_timestamp(now())) | int /60/1440) | round(0) }}"
unit_of_measurement: 'Days'
spring_break_days2go:
value_template: "{{ ((state_attr('input_datetime.spring_break_start', 'timestamp')-as_timestamp(now())) | int /60/1440) | round(0) }}"
unit_of_measurement: 'Days'
# - platform: rest
# resource: https://raw.githubusercontent.com/tm24fan8/Home-Assistant-Configs/master/packages/json_data/school.json
# name: School Lunch
# scan_interval: 14400
# value_template: >
# {% set today = now().month ~ '/' ~ now().day %}
# {% set lunch = value_json.MENU.static[ today ] %}
# {%- if lunch %}
# {{ lunch }}
# {% else %}
# Nothing
# {%- endif %}
- platform: rest
resource: https://raw.githubusercontent.com/tm24fan8/Home-Assistant-Configs/master/packages/json_data/school.json
name: School Event
scan_interval: 14400
value_template: >
{% set today = now().month ~ '/' ~ now().day %}
{% set event = value_json.EVENTS.static[ today ] %}
{%- if event %}
{{ event }}
{% else %}
Nothing
{%- endif %}
automation:
- id: e1cb2d02-0423-11eb-adc1-0242ac120002
alias: School today
initial_state: true
trigger:
- platform: time
at: '04:00:10'
condition:
- condition: template
value_template: >
{%- if as_timestamp(strptime(state_attr('calendar.kallen_school_days', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom("%Y-%m-%d") == now().strftime("%Y-%m-%d") %}
true
{%- endif -%}
action:
- service: script.kallen_school_today
- id: b9028665-401c-4de3-8f13-1099160b011f
alias: School Reset
initial_state: true
trigger:
- platform: time
at: input_datetime.school_day_end
id: day_end
- platform: time
at: 00:00
id: midnight
action:
- if:
- condition: trigger
id: day_end
then:
- service: script.kallen_school_reset
- if:
- condition: trigger
id: midnight
then:
- service: script.kallen_school_reset_late
- id: 05ee0f8d-5411-4486-8acf-9bfadad2b23a
alias: End of School Year
initial_state: true
trigger:
- platform: time
at: input_datetime.school_last_day
condition:
- condition: state
entity_id: input_boolean.school_in_session
state: 'on'
action:
- service: script.turn_on
entity_id: script.school_year_over
script:
kallen_school_today:
sequence:
- if:
- condition: state
entity_id: calendar.kallen_early_release
state: "on"
then:
- service: input_boolean.turn_on
entity_id: input_boolean.school_early_release
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.school_day_end
data:
time: "14:30:00"
else:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.school_day_end
data:
time: >
{{ as_timestamp(strptime(state_attr('calendar.kallen_school_days','end_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom("%H:%M") }}
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.school_day_start
data:
time: >
{{ as_timestamp(strptime(state_attr('calendar.kallen_school_days','start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom("%H:%M") }}
- service: input_boolean.turn_on
entity_id:
- input_boolean.school_today
- input_boolean.school_today_extended
- service: script.turn_on
entity_id: script.school_in_session
- delay:
seconds: 1
- if:
- condition: template
value_template: >
{{ state_attr('input_datetime.school_day_start','timestamp') == 28800 }}
then:
- service: input_boolean.turn_on
entity_id: input_boolean.kallen_band_practice
kallen_school_reset:
sequence:
- service: input_boolean.turn_off
entity_id:
- input_boolean.school_today
- input_boolean.kallen_two_hour_delay
- input_boolean.kallen_school_cancelled
kallen_school_reset_late:
sequence:
- service: input_boolean.turn_off
entity_id:
- input_boolean.school_today_extended
- input_boolean.kallen_band_practice
- input_boolean.school_early_release
school_in_session:
sequence:
- condition: state
entity_id: input_boolean.school_in_session
state: 'off'
- service: input_boolean.turn_on
entity_id: input_boolean.school_in_session
school_year_over:
sequence:
- condition: state
entity_id: input_boolean.school_in_session
state: 'on'
- condition: template
value_template: >
{{ states('input_datetime.school_last_day') == now().strftime("%Y-%m-%d") }}
- service: input_boolean.turn_off
entity_id: input_boolean.school_in_session