{% macro emma_sleep() %} {% from 'time.jinja' import input_datetime_12hr_with_date %} {% from 'easy_time.jinja' import custom_time %} {% set asleep = state_attr('input_datetime.emma_down_for_nap','timestamp') | int %} {% set wakeup = state_attr('input_datetime.emma_up_from_nap','timestamp') | int %} {% set current = as_timestamp(now()) | int %} {% set diff = (wakeup - asleep) | int %} {% set hour = diff | timestamp_custom('%-H', false) | int %} {% set minute = diff | timestamp_custom('%-M', false) | int %} {% set day = now().strftime("%-d") %} {% set asleep_day = asleep | timestamp_custom("%-d") %} {% set wakeup_day = wakeup | timestamp_custom("%-d") %} {% if is_state('input_boolean.emma_sleeping','off') and is_state('input_boolean.emma_has_napped','on') or ((asleep_day == day) and (wakeup_day == day)) %} Emma napped today for {{ hour }} hours and {{ minute }} minutes. She was retrieved from her room at {{ input_datetime_12hr_with_date('input_datetime.emma_up_from_nap') }} approximately. {% elif is_state('input_boolean.emma_has_napped','off') and ((asleep_day == day) and (wakeup_day != day)) and is_state('input_boolean.emma_sleeping','on') %} Emma is down for nap. She was put down at {{ input_datetime_12hr_with_date('input_datetime.emma_down_for_nap') }} approximately. She has been asleep for {{ custom_time('input_datetime.emma_down_for_nap','hour,minute') }}. {% elif is_state('input_boolean.emma_sleeping','on') %} {% if is_state('binary_sensor.early_night_mode','on') %} Emma is asleep for the night. {% else %} Emma has not yet awoken for the day. {% endif %} {% else %} Emma is awake, and does not appear to have napped yet today. {% endif %} {% endmacro %} {% macro emma_sleep_notification() %} {% from 'time.jinja' import input_datetime_12hr_with_date %} {% from 'easy_time.jinja' import clock %} {% set asleep = state_attr('input_datetime.emma_down_for_nap','timestamp') | int %} {% set wakeup = state_attr('input_datetime.emma_up_from_nap','timestamp') | int %} {% set current = as_timestamp(now()) | int %} {% set diff = (wakeup - asleep) | int %} {% set hour = diff | timestamp_custom('%-H', false) | int %} {% set minute = diff | timestamp_custom('%-M', false) | int %} {% set day = now().strftime("%-d") %} {% set asleep_day = asleep | timestamp_custom("%-d") %} {% set wakeup_day = wakeup | timestamp_custom("%-d") %} {% if is_state('input_boolean.emma_sleeping','off') and is_state('input_boolean.emma_has_napped','on') or ((asleep_day == day) and (wakeup_day == day)) %} Emma has awoken. She napped today for {{ hour }} hours and {{ minute }} minutes. She was retrieved from her room at {{ input_datetime_12hr_with_date('input_datetime.emma_up_from_nap') }} {% elif is_state('input_boolean.emma_has_napped','off') and is_state('input_boolean.emma_sleeping','off') and ((asleep_day != day) or (wakeup_day != day)) %} Emma has awoken for the day at {{ clock('12-hr') }} {% elif is_state('input_boolean.emma_has_napped','off') and ((asleep_day == day) and (wakeup_day != day)) and is_state('input_boolean.emma_sleeping','on') %} Emma is being put down for nap. She was put down at {{ input_datetime_12hr_with_date('input_datetime.emma_down_for_nap') }} {% elif is_state('input_boolean.emma_sleeping','on') %} Emma is asleep for the night (or at least, her sleep switch is active) at {{ clock('12-hr') }} {% else %} This notification is confused and should not be here. Blame Tony. {% endif %} {% endmacro %}