Moving to helpers for importan school dates?

This commit is contained in:
Jeffrey Stone 2021-05-24 11:57:49 -04:00
parent 86832376e9
commit 7de81baf53
1 changed files with 175 additions and 269 deletions

View File

@ -18,102 +18,106 @@ input_boolean:
school_is_digital:
name: Digital Learning
icon: mdi:laptop
school_today:
name: School Today
icon: mdi:bus-school
school_early_release:
name: School Early Release
icon: mdi:bus-school
input_datetime:
school_first_day:
name: First Day of School
has_date: true
has_time: false
initial: '2020-08-12'
school_last_day:
name: Last Day of School
has_date: true
has_time: false
initial: '2021-05-26'
school_day_start:
name: School Day Start
has_date: false
has_time: true
initial: '07:45:00'
school_day_end:
name: School Day End
has_date: false
has_time: true
initial: '14:45:00'
fall_break_start:
name: Fall Break
has_date: true
has_time: false
thanksgiving_break_start:
name: Thanksgiving Break
has_date: true
has_time: false
christmas_break_start:
name: Christmas Break
has_date: true
has_time: false
winter_break_start:
name: Winter Break
has_date: true
has_time: false
spring_break_start:
name: Spring Break
has_date: true
has_time: false
school_day_start_reminder:
name: School Day Start Reminder
has_date: false
has_time: true
school_day_end_reminder:
name: School Day End Reminder
has_date: false
has_time: true
blackout_time_start:
name: Blackout Time Start
has_date: false
has_time: true
initial: '12:00:00'
blackout_time_end:
name: Blackout Time End
has_date: false
has_time: true
initial: '16:00:00'
morning_meeting:
name: Morning Meeting
has_date: false
has_time: true
initial: '08:12:00'
math:
name: Math
has_date: false
has_time: true
initial: '08:28:00'
reading:
name: Reading
has_date: false
has_time: true
initial: '09:48:00'
phonics:
name: Phonics
has_date: false
has_time: true
initial: '10:48:00'
lunch:
name: Lunch
has_date: false
has_time: true
initial: '11:10:00'
specials:
name: Specials
has_date: false
has_time: true
initial: '12:08:00'
writing:
name: Writing
has_date: false
has_time: true
initial: '12:53:00'
science:
name: Science
has_date: false
has_time: true
initial: '13:33:00'
shared_reading:
name: Shared Reading
has_date: false
has_time: true
initial: '14:18:00'
sensor:
- platform: template
sensors:
school_start_days2go:
value_template: '{{ (((states.input_datetime.school_first_day.attributes.timestamp)-as_timestamp(now())) | int /60/1440) | round(0) }}'
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: '{{ (((states.input_datetime.school_last_day.attributes.timestamp)-as_timestamp(now())) | int /60/1440) | round(0) }}'
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: "{{ ((as_timestamp(strptime(state_attr('calendar.vacation', 'start_time'), '%Y-%m-%d'))-as_timestamp(now())) | int /60/1440) | round(0) }}"
unit_of_measurement: 'Days'
- platform: rest
resource: https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/packages/json_data/school_lunch.json
resource: https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/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/thejeffreystone/home-assistant-configuration/master/config/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: refresh_special_event_sensors
@ -145,11 +149,47 @@ automation:
name: Our wedding
type: anniversary
date: !secret wed_anniversary
- service: python_script.special_events
- id: e1cb2d02-0423-11eb-adc1-0242ac120002
alias: School today
initial_state: true
trigger:
- platform: time
at: '06:00:00'
condition:
- condition: template
value_template: >
{%- if as_timestamp(strptime(state_attr('calendar.skylar_school', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom("%Y-%m-%d") == now().strftime("%Y-%m-%d") %}
true
{%- endif -%}
action:
- choose:
- conditions:
- condition: template
value_template: >
{{ 'Early Release' in states('sensor.school_event') }}
sequence:
- service: input_boolean.turn_on
entity_id: input_boolen.school_early_release
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.school_day_end
data:
name: Disney
type: trip
date: !secret disney_trip
time: "12:15:00"
default:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.school_day_end
data:
time: "14:45:00"
- service: input_boolean.turn_on
entity_id: input_boolean.school_today
- service: script.turn_on
entity_id: script.school_in_session
- service: script.turn_on
entity_id: script.digital_learning_day
- id: rex_manning_audio
alias: Rex Manning Day Audio
@ -193,215 +233,79 @@ automation:
data_template:
version: "{{ states.binary_sensor.updater.attributes.newest_version }}"
- id: blackout_time_start
initial_state: true
alias: Blackout time Start
trigger:
platform: template
value_template: "{{ states('sensor.time') == (state_attr('input_datetime.blackout_time_start', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}"
condition:
condition: template
value_template: '{{ states.calendar.skylar_school.state == "Off" }}'
action:
- wait_template: "{{ not is_state('media_player.ha_speaker', 'playing') }}"
- service: script.speech_engine
data_template:
who: '{{ states.sensor.room_audio.state }}'
message: "Blackout time has started."
- service: input_boolean.turn_on
entity_id: input_boolean.blackout_time
# - id: blackout_time_start
# initial_state: true
# alias: Blackout time Start
# trigger:
# platform: template
# value_template: "{{ states('sensor.time') == (state_attr('input_datetime.blackout_time_start', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}"
# condition:
# condition: template
# value_template: '{{ states.calendar.skylar_school.state == "Off" }}'
# action:
# - wait_template: "{{ not is_state('media_player.ha_speaker', 'playing') }}"
# - service: script.status_annc
# data_template:
# who: '{{ states.sensor.room_presence.state }}'
# call_interuption: 1
# speech_message: "Blackout time has started."
# - service: input_boolean.turn_on
# entity_id: input_boolean.blackout_time
- id: blackout_time_end
initial_state: true
alias: Blackout time End
trigger:
platform: template
value_template: "{{ states('sensor.time') == (state_attr('input_datetime.blackout_time_end', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}"
condition:
condition: state
entity_id: input_boolean.blackout_time
state: 'on'
action:
- wait_template: "{{ not is_state('media_player.ha_speaker', 'playing') }}"
- service: script.speech_engine
data_template:
who: '{{ states.sensor.room_audio.state }}'
message: "Blackout time has ended"
- service: input_boolean.turn_off
entity_id: input_boolean.blackout_time
# - id: blackout_time_end
# initial_state: true
# alias: Blackout time End
# trigger:
# platform: template
# value_template: "{{ states('sensor.time') == (state_attr('input_datetime.blackout_time_end', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}"
# condition:
# condition: state
# entity_id: input_boolean.blackout_time
# state: 'on'
# action:
# - wait_template: "{{ not is_state('media_player.ha_speaker', 'playing') }}"
# - service: script.status_annc
# data_template:
# who: '{{ states.sensor.room_presence.state }}'
# call_interuption: 1
# speech_message: "Blackout time has ended"
# - service: input_boolean.turn_off
# entity_id: input_boolean.blackout_time
- id: digital_learning_start
alias: Digital Learning Start
initial_state: true
trigger:
- platform: state
entity_id: calendar.skylar_school
to: 'on'
condition:
condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: switch.turn_on
entity_id: switch.skylars_desk
- service: script.turn_on
entity_id: script.digital_learning_notification
- id: digital_learning_end
alias: Digital Learning End
initial_state: true
trigger:
- platform: state
entity_id: calendar.skylar_school
to: 'off'
condition:
condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: scene.turn_on
entity_id: scene.skylar_desk_off
- service: input_boolean.turn_on
entity_id: input_boolean.audible_notifications
- id: e1cb391e-0423-11eb-adc1-0242ac120002
alias: Morning Meeting Warning
initial_state: true
trigger:
platform: time
at: input_datetime.morning_meeting
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Morning Meeting'
- id: e1cb386a-0423-11eb-adc1-0242ac120002
alias: Reading Warning
initial_state: true
trigger:
platform: time
at: input_datetime.reading
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Reading'
- id: e1cb37a2-0423-11eb-adc1-0242ac120002
alias: Math Warning
initial_state: true
trigger:
platform: time
at: input_datetime.math
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Math'
- id: e1cb3590-0423-11eb-adc1-0242ac120002
alias: Phonics Warning
initial_state: true
trigger:
platform: time
at: input_datetime.phonics
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Phonics'
- id: e1cb34d2-0423-11eb-adc1-0242ac120002
alias: Lunch Warning
initial_state: true
trigger:
platform: time
at: input_datetime.lunch
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Lunch'
- id: e1cb341e-0423-11eb-adc1-0242ac120002
alias: Specials Warning
initial_state: true
trigger:
platform: time
at: input_datetime.specials
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Specials'
- id: e1cb3360-0423-11eb-adc1-0242ac120002
alias: Writing Warning
initial_state: true
trigger:
platform: time
at: input_datetime.writing
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Writing'
- id: e1cb32a2-0423-11eb-adc1-0242ac120002
alias: Science Warning
initial_state: true
trigger:
platform: time
at: input_datetime.science
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Science'
- id: e1cb31e4-0423-11eb-adc1-0242ac120002
alias: Shared Reading Warning
initial_state: true
trigger:
platform: time
at: input_datetime.shared_reading
condition:
- condition: state
entity_id: input_boolean.school_is_digital
state: 'on'
action:
- service: script.class_alarm
data:
class: 'Shared Reading'
script:
digital_learning_day:
sequence:
- condition: template
value_template: >
{{ 'Digital Learning' in states('sensor.school_event') }}
- service: input_boolean.turn_on
entity_id: input_boolen.school_is_digital
school_in_session:
sequence:
- condition: state
entity_id: input_boolean.school_in_session
state: 'off'
- service: input_boolean.turn_on
entity_id: input_boolen.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_boolen.school_in_session
rex_manning_audio:
sequence:
- condition: state
@ -427,17 +331,19 @@ script:
- condition: state
entity_id: sensor.family_status
state: Home
- service: script.speech_engine
- service: script.status_annc
data_template:
who: '{{ states.sensor.room_audio.state }}'
message: "Skylar, digital learning will begin in about thirty minutes. I have turned on the lighting around your desk."
who: '{{ states.sensor.room_presence.state }}'
call_interuption: 1
speech_message: "Skylar, digital learning will begin in about thirty minutes. I have turned on the lighting around your desk."
class_alarm:
sequence:
- service: script.speech_engine
data:
who: main
message: >
- service: script.status_annc
data_template:
who: '{{ states.sensor.room_presence.state }}'
call_interuption: 1
speech_message: >
{{ class }} starts in two minutes.
- service: script.text_notify
data: