Automations for Tomorrow - Suggestions

Lately I’ve been writing some pretty complex automations/scripts, and I keep on running into the same scenario, hopefully someone else has found a solution…

I’m wondering if there’s a way to programmatically detect what will happen tomorrow?

if is ‘on’ tomorrow, do something today (think pto).
if tomorrow is a holiday (like Christmas), set an alarm clock for a later time - allowing me to sleep in.
if I had an automation fire on Sunday evening (because the following day is Monday), the automation would treat it like any other Monday, but what if Monday was a national holiday?

I’m already using the weekday binary sensor, and that works fine for most situations, just not all.

Hopefully this makes sense, I’d be happy to elaborate if needed.

Here’s an automation from my system that turns the lake house air conditioner on if I’m going to be there “tomorrow”. Technically, it turns it on at midnight, so it’s not literally tomorrow, but it gives you the idea. I store my arrival as an event in google calendar.

#automation to set the lake house to "home" mode in time for it to cool off for the next visitor
# start cooling the night before a visitor arrives to take advantage of the night differential
# 8/27/2017 TLR
# no longer counting hours.  If it's the same date as arrival, turn the thermostat to home mode
# this has the effect of turning home on at midnight, and keeping it on the entire day of arrival

- alias: autoLakeHouseCoolAdvance
    #run every hour
    - platform: time
      hours: '/1'

    condition: and
      #only runs if lake house is in away mode
      - condition : state
        entity_id : 'sensor.lake_house_away'
        state: 'on'

      - condition : template
        value_template: >
          {% set arr = as_timestamp(states.calendar.lake_house_calendar.attributes.start_time)  | timestamp_custom("'%Y%m%d'") %}
          {%set now = as_timestamp(now())  | timestamp_custom("'%Y%m%d'")%}

      - condition : template
        value_template: > 
          {{states.device_tracker.tripx.state != "lakehouse"}}
    - service: climate.set_away_mode
        entity_id: climate.lake_house
        away_mode : false
    - service: counter.increment
      entity_id: counter.count1