input_boolean: school_in_session: name: School In Session icon: mdi:bus-school kallen_at_school: name: Kallen at School icon: mdi:school kallen_school_today: name: Kallen School Today icon: mdi:bus-school kallen_school_early_release: name: Kallen School Early Release icon: mdi:bus-school kallen_school_today_extended: name: Kallen School Today Extended icon: mdi:bus-school kallen_btb: name: Kallen BTB icon: mdi:bus-clock two_hour_delay: name: Kallen Two Hour Delay icon: mdi:bus-clock school_cancelled: name: Kallen School Cancelled icon: mdi:calendar-remove kallen_alternate_pickup: name: Kallen Alternate Pickup icon: mdi:car 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 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 kallen_school_day_start: name: School Day Start has_date: false has_time: true icon: mdi:clock-start kallen_school_day_end: name: School Day End has_date: false has_time: true icon: mdi:clock-end kallen_school_day_start_reminder: name: School Day Start Reminder has_date: false has_time: true icon: mdi:clock-alert kallen_school_day_end_reminder: name: School Day End Reminder has_date: false has_time: true icon: mdi:clock-alert template: - binary_sensor: - name: Kallen School Tomorrow unique_id: 73d91e2f-35b5-491c-9c8b-c6d89d67b53c state: >- {%- set test=(as_timestamp(now())+ (86400)) | timestamp_custom("%Y-%m-%d",true) %} {% if states.calendar.kallen_school_days.attributes.start_time == test + " 09:00:00" %} on {% elif states.calendar.kallen_school_days.attributes.start_time == test + " 08:00:00" %} on {% else %} off {% endif %} icon: mdi:school - name: Kallen BTB Tomorrow unique_id: 68d8eb9c-d96c-4c76-a8e8-23125f1162db state: >- {%- set test=(as_timestamp(now()) + (86400)) | timestamp_custom("%Y-%m-%d",true) %} {{ states.calendar.kallen_school_days.attributes.end_time == test + " 16:30:00" }} - sensor: - name: School Start Days2go unique_id: 94a53e67-c00f-4cc7-9309-f9033a9482f9 state: > {% from 'easy_time.jinja' import count_the_days %} {{ count_the_days('input_datetime.school_first_day') }} attributes: date: "{{ state_attr('input_datetime.school_first_day','timestamp') | timestamp_custom('%B %d, %Y') }}" unit_of_measurement: 'Days' - name: School End Days2go unique_id: 589c44ec-7e16-4c72-a264-cdf54de409a9 state: > {% from 'easy_time.jinja' import count_the_days %} {{ count_the_days('input_datetime.school_last_day') | int }} attributes: date: "{{ state_attr('input_datetime.school_last_day','timestamp') | timestamp_custom('%B %d, %Y') }}" unit_of_measurement: 'Days' - name: Vacation Days2go unique_id: f1628d87-e58a-4d1a-8a49-a71f0a9ed3e5 state: > {% from 'easy_time.jinja' import count_the_days %} {% if state_attr('calendar.vacation', 'start_time') %} {{ count_the_days('calendar.vacation','start_time') }} {% else %} 999 {% endif %} unit_of_measurement: 'Days' - name: Thanksgiving Break Days2go unique_id: 2381e9de-407b-4304-b09a-448c169bbaf2 state: > {% from 'easy_time.jinja' import count_the_days %} {{ count_the_days('input_datetime.thanksgiving_break_start') }} attributes: date: "{{ state_attr('input_datetime.thanksgiving_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" unit_of_measurement: 'Days' - name: Christmas Break Days2go unique_id: 851700f7-c593-4db8-ba4f-001cbffcfc4a state: > {% from 'easy_time.jinja' import count_the_days %} {{ count_the_days('input_datetime.christmas_break_start') }} attributes: date: "{{ state_attr('input_datetime.christmas_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" unit_of_measurement: 'Days' - name: Spring Break Days2go unique_id: cec6e687-8999-4548-991c-02ba546335f5 state: > {% from 'easy_time.jinja' import count_the_days %} {{ count_the_days('input_datetime.spring_break_start') }} attributes: date: "{{ state_attr('input_datetime.spring_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" unit_of_measurement: 'Days' - name: School Lunch Menu Week unique_id: 62ba9dcb-3cd3-4875-8e6f-86bebf542c37 state: > {% if is_state('calendar.defiance_city_schools_lunch','on') %} {{ state_attr('calendar.defiance_city_schools_lunch','message') }} {% else %} No Menu {% endif %} icon: > {% if is_state_attr('calendar.defiance_city_schools_lunch','message','First Menu') %} mdi:numeric-1-circle {% elif is_state_attr('calendar.defiance_city_schools_lunch','message','Second Menu') %} mdi:numeric-2-circle {% elif is_state_attr('calendar.defiance_city_schools_lunch','message','Third Menu') %} mdi:numeric-3-circle {% elif is_state_attr('calendar.defiance_city_schools_lunch','message','Fourth Menu') %} mdi:numeric-4-circle {% else %} mdi:calendar-end {% endif %} - name: School Lunch Menu Items unique_id: a2cb62d7-ae9f-4bab-81c1-81f2006391b2 icon: > {% set week = states('sensor.school_lunch_menu_week') %} {% if week == 'First Menu' %} mdi:numeric-1-circle {% elif week == 'Second Menu' %} mdi:numeric-2-circle {% elif week == 'Third Menu' %} mdi:numeric-3-circle {% elif week == 'Fourth Menu' %} mdi:numeric-4-circle {% else %} mdi:calendar-end {% endif %} state: > {% from 'formatting.jinja' import cleanup %} {%- macro getReport() -%} {% set week = states('sensor.school_lunch_menu_week') %} {% set dow = now().strftime('%A') %} {% if week == 'First Menu' %} {% if dow == 'Monday' %} Popcorn chicken, mashed potatoes, corn, apples, corn bread, and milk. {% elif dow == 'Tuesday' %} Beef taco or taco salad, refried beans, spanish rice, peaches, and milk. {% elif dow == 'Wednesday' %} Pulled pork, steamed broccoli, tomatoes, mixed fruit, and milk. {% elif dow == 'Thursday' %} Beef Stroganoff, green beans, carrots, fresh fruit, bread, and milk. {% elif dow == 'Friday' %} Optionally, Papa Johns Pizza. Otherwise, hamburger, spinach salad, oven potatoes, applesauce, and milk. {% endif %} {% elif week == 'Second Menu' %} {% if dow == 'Monday' %} Pizza, spinach salad, tomatoes, fruit, and milk. {% elif dow == 'Tuesday' %} Lasagna, garlic bread, steamed cauliflower, celery, apple crisp, and milk. {% elif dow == 'Wednesday' %} Chicken patty, oven potatoes, broccoli, pears, and milk. {% elif dow == 'Thursday' %} Turkey and noodles, mashed potatoes, green beans, peaches, breadstick, and milk. {% elif down == 'Friday' %} Optionally, Papa Johns Pizza. Otherwise, hot dog with chili sauce, carrots, baked beans, mixed fruit, and milk. {% endif %} {% elif week == 'Third Menu' %} {% if dow == 'Monday' %} Popcorn chicken, au gratin potatoes, corn, mixed fruit, corn bread, milk. {% elif dow == 'Tuesday' %} Beef taco or taco salad, refried beans, spanish rice, peaches, and milk. {% elif dow == 'Wednesday' %} Hamburger, oven potatoes, celery, applesauce, and milk. {% elif dow == 'Thursday' %} Mac and cheese, steamed broccoli, tomatoes, pears, bread, and milk. {% elif dow == 'Friday' %} Optionally, Papa Johns Pizza. Otherwise, sloppy joe, carrots, spinach salad, fruit, and milk. {% endif %} {% elif week == 'Fourth Menu' %} {% if dow == 'Monday' %} Toasted cheese, tomato soup, mixed vegetables, fresh fruit, treat, and milk. {% elif dow == 'Tuesday' %} Omelet or french toast, sausage, hash browns, tomatoes, orange, and milk. {% elif dow == 'Wednesday' %} Bosco sticks with pizza sauce, carrots, oven potatoes, peach crisp, and milk. {% elif dow == 'Thursday' %} Spaghetti, broccoli, green beans, fresh fruit, breadstick, and milk. {% elif dow == 'Friday' %} Optionally, Papa Johns Pizza. Otherwise, hot dog, baked beans, cauliflower, applesauce, and milk. {% endif %} {% else %} No menu for the current day. {% endif %} {%- endmacro -%} {{- cleanup(getReport()) -}} # - 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: Kallen School today initial_state: true trigger: - platform: time at: '03:55:00' action: - if: - condition: template value_template: > {% from 'time.jinja' import calendar_event_today %} {{ calendar_event_today('calendar.kallen_school_days') }} then: - service: script.kallen_school_today - service: input_boolean.turn_on target: entity_id: input_boolean.school_today_ran - id: 05ee0f8d-5411-4486-8acf-9bfadad2b23a alias: End of School Year initial_state: true trigger: - platform: template value_template: "{{ states('sensor.school_end_days2go') | int == -1 }}" action: - service: input_boolean.turn_off target: entity_id: input_boolean.school_in_session - id: 31f766d9-be1d-40bb-8c84-6cb2c57aac3c alias: Kallen School Modifications description: Runs when a two hour delay, cancellation, or alternate pickup is issued. mode: restart trigger: - platform: state entity_id: input_boolean.two_hour_delay from: 'off' to: 'on' id: two-hour-delay - platform: state entity_id: input_boolean.school_cancelled from: 'off' to: 'on' id: cancelled - platform: state entity_id: input_boolean.kallen_alternate_pickup from: 'off' to: 'on' id: alternate-pickup-on - platform: state entity_id: input_boolean.kallen_alternate_pickup from: 'on' to: 'off' id: alternate-pickup-off action: - if: - condition: trigger id: cancelled then: - service: input_boolean.turn_off target: entity_id: - input_boolean.two_hour_delay - input_boolean.kallen_school_today - input_boolean.kallen_school_early_release - input_boolean.kallen_school_today_extended - input_boolean.kallen_at_school - input_boolean.kallen_alternate_pickup - input_boolean.kallen_school_early_release - input_boolean.kallen_btb - delay: seconds: 2 - if: - condition: and conditions: - condition: trigger id: alternate-pickup-off - condition: template value_template: > {% from 'time.jinja' import ct %} {% set ct = ct() | int %} {% set cutoff = state_attr('input_datetime.kallen_school_day_end','timestamp') | int - 3600 %} {{ ct >= cutoff }} then: - stop: After cutoff else: - service: script.rerun_all_scheduling_morning script: kallen_school_today: alias: '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.kallen_school_early_release - service: input_datetime.set_datetime target: entity_id: input_datetime.kallen_school_day_end data: time: "14:00:00" else: - service: input_datetime.set_datetime target: entity_id: input_datetime.kallen_school_day_end data: time: > {% from 'time.jinja' import time_from_calendar %} {{ time_from_calendar('calendar.kallen_school_days','end_time','set') }} - service: input_datetime.set_datetime target: entity_id: input_datetime.kallen_school_day_start data: time: > {% from 'time.jinja' import time_from_calendar %} {% if is_state('input_boolean.two_hour_delay','on') %} {{ time_from_calendar('calendar.kallen_school_days','start_time','set','add',2) }} {% else %} {{ time_from_calendar('calendar.kallen_school_days','start_time','set') }} {% endif %} - if: - condition: template value_template: > {% from 'time.jinja' import time_from_calendar %} {% set cal = time_from_calendar('calendar.kallen_school_days','end_time','read') | trim %} {{ cal == '4:30 PM' }} then: - service: input_boolean.turn_on target: entity_id: input_boolean.kallen_btb - service: input_boolean.turn_on entity_id: - input_boolean.kallen_school_today - input_boolean.kallen_school_today_extended - input_boolean.school_in_session kallen_school_reset: alias: 'Kallen School Reset' sequence: - service: input_boolean.turn_off entity_id: - input_boolean.kallen_school_today - input_boolean.two_hour_delay - input_boolean.school_cancelled - input_boolean.kallen_alternate_pickup kallen_school_reset_late: alias: 'Kallen School Reset Late' sequence: - service: input_boolean.turn_off entity_id: - input_boolean.kallen_school_today_extended - input_boolean.kallen_school_early_release - input_boolean.kallen_btb