>
  {# Nightky Report #}
  {%- macro getReport() -%}
    <p>
      Good evening.
    </p>

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

    <p>
      {% if is_state('sun.sun', 'below_horizon') %}
        You have
        {% set seconds = as_timestamp(states.sun.sun.attributes.next_rising)-now().timestamp() %}
        {% set hours = seconds / 60 %}
        {% if seconds / ( 60 * 60 ) > 1 %}
          {{ (seconds //  ( 60 * 60 )) | int }} hours
        {% else %}
          {{ (seconds // 60) | int }} minutes
        {% endif %}
        {{ [
          'until the sun rises.',
          'until the sun is up.',
          'before the sun officially rises. '
        ]|random }}
      {% else %}
        You have
        {% set seconds = as_timestamp(states.sun.sun.attributes.next_setting)-now().timestamp() %}
        {% set hours = seconds / 60 %}
        {% if seconds / ( 60 * 60 ) > 1 %}
          {{ (seconds //  ( 60 * 60 )) | int }} hours
        {% else %}
          {{ (seconds // 60) | int }} minutes
        {% endif %}
        {{ [
          'until the sun sets for the day.',
          'until the sun slips below the horizon.',
          'before the sun officially sets. ',
          'before The sun has been ushered off the stage.'
        ]|random }}
      {% endif %}
      
    </p>

    <p>
      {{ [
          'Exterior Cameras are now motion activated, and the front porch light is on.',
          'I have turned on the front porch light and armed the perimiter cameras.',
          'You are running out of daylight. Time to wrap up any outside chores. The ouside lights have been turned on.',
          'Switching Anchorage House to night mode! Front porch lights are on and the ouside cameras are recording when motion has been detected.',
          'Anchorage House has been configured for night.',
          'Switching on Anchorage Houses exterior lighting, and armed the cameras.',
          'It is getting dark outside, so I am turning on the outside lights.',
          'The sun is setting so it is ime to turn on the front lights.',
          'If you have not looked outside lately, the light of the day is almost gone. I am turning on the outside lights.'
      ]|random }}
      </p>
      
        {% if is_state('binary_sensor.garage_door', 'on') %} 
        <p>
          {{ [ 'The garage door is open. ',
            'Someone forgot to close the garage.'
          ] | random }}
          Someone should close it. 
          </p>
        {% elif is_state('binary_sensor.side_door', 'on') %}
        <p> 
          {{ [ 'The side door is ajar. ',
            'The side door is open. ',
            'Someone forgot to close the side door.'
          ] | random }}
          Someone might want to check it.
          </p>
          {% else %}

          {% endif %}
  
        {% if is_state('input_boolean.freeze_warning','on') %}
        <p>
        {{ [ 'The temperature is expected to be near or below freezing. Someone might want to bring the lemon tree in. ',
            'It appears that it will be cold tonight. Like, the turn water solid kind of cold. Think of the poor plants.',
            'I suggest bringing in the plants other wise, the temperature might kill them. And that will be on you.',
            'I would say winter is coming. But, based on the weather forecast it appears to be here.',
            'It will be freezing cold tonight. I would bring in the plants but I lack legs. And Arms. So I am forced to rely on you. Do not let me down.'
          ] | random }}
          </p>
        {% endif %}

        {% if is_state('sensor.today_is', 'Monday') %}
            {% if now().strftime('%H')|int > 17 %}
            {{ [ 'Do not forget tomorrow is Trash Day. ',
              'I advise you move the trash cans to the curb for the weekly pickup. ',
              ' The trash and recycle should go out'
            ] | random }}
            {% endif %}
          {% endif %}
      
        {% if is_state('sensor.today_is', 'Tuesday') %}
          
          {% if now().strftime('%H')|int > 17 %}
          <p>
            {{ [ 'Do not forget to bring in the trash cans. ',
            'The trash cans will feel lonely if you leave them out all night. ',
            'The <say-as interpret-as="characters">HOA</say-as> will get mad if you leave those trash cans out on the street.'
          ] | random }}
          </p>
          {% endif %}
        {% endif %}
      
  {%- 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()) -}}