>
  {# Morning Wakeup Report #}
  {%- macro getReport() -%}
    
    <p>
      Good morning.
    </p>

    <p>
      <s>It is {{ now().strftime("%I:%M %p") }}</s>
    </p>

    <p>
      The Weather in Grayson is {{states('sensor.acurite_6045m_3078_f')|round}} degrees 
      {% if is_state('weather.home', 'rainy') %}
        {{ [
        'with rain.', 
        'with showers.'
        ] | random }}
      {% elif is_state('weather.home', 'cloudy') %}
        {{ [
        'with clouds.', 
        'with cloudy skies.'
        ] | random }}
      {% elif is_state('weather.home', 'partlycloudy') %}
        {{ [
        'with some clouds.', 
        'with partly cloudy skies.',
        'with scatterd clouds'
        ] | random }}
      {% elif is_state('weather.home', 'sunny') %}
        {% if is_state('sun.sun', 'above_horizon') %}
          {{ [
          'and sunny.', 
          'with sun.'
          ] | random }}
        {% else %}
          {{ [
          'and clear.', 
          'with clear skies.'
          ] | random }}
        {% endif %}
      {% else %}
        and {{ states.weather.home.state }}
      {% endif %}


      {% if states.sensor.weatheralerts_active_alerts.state | int > 0 %}
        There are currently {{states.sensor.weatheralerts_active_alerts.state }} active weather alerts for our area.
      {% endif %}

      Based on the forecasted high temperature, 
      {% if is_state('binary_sensor.morning','on') %}
        {% if is_state('sensor.clothing_forecast', 'Freezing') %}
          It is going to be freezing today. so I suggest wearing long pants and a heavy coat.
        {% elif is_state('sensor.clothing_forecast','Cold') %}
          It is going to be cold today. so I suggest wearing long pants and a light jacket.
        {% elif is_state('sensor.clothing_forecast', 'Chilly') %}
          It is going to be chilly today. so I suggest wearing at least long pants.
        {% elif is_state('sensor.clothing_forecast', 'Nice') %}
          It is going to be           
          {{ [ 'nice outside. ',
            'pretty nice outside. ',
            'a good day to be outside. ',
            'rather enjoyable outside. ',
          ] | random }} 
          So I suggest wearing shorts.
        {% elif is_state('sensor.clothing_forecast', 'Toasty') %}
          It is going to be 
          {{ [ 'bit warm ',
            ' rather warm outside ',
            ' almost too hot outside ',
            ' a little warm ',
          ] | random }} 
          today. So I suggest wearing shorts. 
        {% elif is_state('sensor.clothing_forecast', 'Hot') %}
          It is going to be 
          {{ [ 'hot',
            'hotter than the sun ',
            'hotter than hot. but in a lot of bad ways ',
            'hotter than the sun outside ',
            'super hot ',
            'hotter than the inside of a volcano '
          ] | random }} 
          today. So I suggest wearing shorts.
        {% else %}
          It is going to be {{ states.sensor.clothing_forecast.state }} today so I suggest wearing shorts.
        {% endif %} 
      {% endif %}

    </p>

    <p>
      
    {% if is_state('input_boolean.school_today', 'on') and state_attr('input_datetime.school_day_end', 'timestamp') < as_timestamp(now()) %}
      {% if is_state('sensor.school_start_days2go', '0') %}
          Today is the first day of school! 
        {% else %}
          {{ [ 'Today is a school day.',
            'It is a school day. '
          ] | random }}
        {% endif %}
      <s>Pickup today will be at {{(state_attr('input_datetime.school_day_end', 'timestamp') | int | timestamp_custom('%I:%M %p', False)) }}</s>
      {% if 'Digital Learning' in states('sensor.school_event') %}
        But it is a digital learning day so the commute will be short.
      {% endif %} 
      {% if 'Early Release' in states('sensor.school_event') %}
        And It is early release!
      {% endif %}
      {% if states.sensor.school_end_days2go.state | int == 0 -%}
        But today is the last day of School! 
      {%- endif %}
    {% endif %}
    {% if is_state('input_boolean.school_today', 'on') and state_attr('input_datetime.school_day_end', 'timestamp') < as_timestamp(now()) and 'Digital Learning' not in states('sensor.school_event') %}
      {% if is_state('sensor.school_lunch', 'Nothing') %}
        I am not sure what the school menu is for today, so plan on Skylar taking his lunch 
      {% else %}
        Today's school lunch is {{ states.sensor.school_lunch.state }}, so he might be interested in buying his lunch.
      {% endif %}
    {% endif %}

    {% if states.sensor.school_end_days2go.state | int == -1 -%}
      Today is the first day of Summer Break! 
    {%- endif %}

    {% if 'School Holiday' in states('sensor.school_event') and  is_state('input_boolean.school_today', 'off') %}
      There is no school today.
    {% endif %} 

    {% if is_state('calendar.skylar_events', 'on') %}
      Skylar has {{ states.calendar.skylar_events.attributes.message }} today as well!
    {% endif %}
    </p>

    <p>
      {% if is_state('input_boolean.skylar_awake', 'on') %}
        Skylar was up and moving at {{ states.input_datetime.skylar_awake_at.state }}.
        {% if is_state('media_player.theater_tv', 'on') %}
          and he appears to be in the Theater.
          {% if is_state('input_boolean.skylar_dressed_reminder', 'on') %}
            {{ [
                'I did attempt to remind him to get dressed.',
                'I reminded him to get dress.'
            ]|random }}
          {% endif %}
        {% elif is_state('media_player.croft_tv', 'playing') %}
          and he appears to be in the Croft watching {{ states.media_player.croft_tv.attributes.app_name }}
          {% if is_state('input_boolean.skylar_dressed_reminder', 'on') %}
            {{ [
                'I did attempt to remind him to get dressed.',
                'I reminded him to get dress.'
            ]|random }}
          {% endif %}
        {% elif is_state('input_boolean.skylar_school', 'on') %}
          and he appears to be at School.  
        {% else %}
          but I currently cannot find him on any of my sensors. 
        {% endif %}
      {% else %}
        It doesn't appear that Skylar is out of bed yet. 
      {% endif %}
    </p>

    <p>
      {%- if states.sensor.home_to_zoo.state|round > 50 %}
        Traffic to the Zoo appears heavy than normal.
      {% else %}
        Traffic to the Zoo is normal.
      {% endif %}
      Currently it will take {{states.sensor.home_to_zoo.state|round}} minutes to get to the Zoo taking {{ states.sensor.home_to_zoo.attributes.route }}.

      {%- if states.sensor.home_to_summit.state|round > 50 %}
        Traffic to Summit appears heavy than normal.
      {% else %}
        Traffic to Summit is normal.
      {% endif %}
      Currently it will take {{states.sensor.home_to_summit.state|round}} minutes to get to Summit taking {{ states.sensor.home_to_summit.attributes.route }}.
    </p>

  {%- endmacro -%}


  {# a macro that removes all newline characters, empty spaces, and returns formatted text  #}
    {%- macro cleanup(data) -%}
      {%- for item in data.split("\n")  if item | trim != "" -%}
        {{ item | trim }} {% endfor -%}
  {%- endmacro -%}

  {# a macro to call all macros :)  #}
    {%- macro mother_of_all_macros() -%}
      {{ getReport() }}
    {%- endmacro -%}
    
    {# Call the macro  #}
    {{- cleanup(mother_of_all_macros()) -}}