This is how I do mine I have normal trash every week with green waste and recycling alternating weeks.
#################################################################
# #
# Packages/Trash Recycle #
# #
#################################################################
#################################################################
# #
# Customize #
# #
#################################################################
homeassistant:
customize:
sensor.trash_day:
friendly_name: Is it Trash Day today?
icon: mdi:delete-variant
device_tracker.trash_bin:
friendly_name: Trash Bin
icon: fas:trash-alt
sensor.recycle_day:
friendly_name: Is it Recycle Day today?
icon: mdi:recycle
sensor.green_day:
friendly_name: Is it Green Waste Day today?
icon: mdi:leaf
sensor.trash_pickup_day:
friendly_name: Trash Pickup Day
icon: mdi:calendar-today
hidden: true
sensor.recycle_pickup_day:
friendly_name: Recycle Pickup Day
icon: mdi:calendar-today
hidden: true
sensor.recycle_pickup_week:
friendly_name: Recycle Pickup Week
icon: mdi:calendar-today
hidden: true
sensor.green_pickup_day:
friendly_name: Green Pickup Day
icon: mdi:calendar-today
hidden: true
sensor.green_pickup_week:
friendly_name: Green Pickup Week
icon: mdi:calendar-today
hidden: true
sensor.current_week:
friendly_name: Current Week is
icon: mdi:calendar-question
group.trash_recycle:
friendly_name: Trash & Recycle
icon: mdi:recycle
#################################################################
# #
# Group #
# #
#################################################################
group:
trash schedule:
name: Trash Schedule
view: no
entities:
- sensor.trash_day
- input_select.trash_reminders
- sensor.trash_pickup_day
- input_select.trash_pickup_day
Recycle Schedule:
control: hidden
entities:
- sensor.recycle_day
- sensor.recycle_pickup_day
- sensor.recycle_pickup_week
- input_select.recycle_pickup_day
- sensor.current_week
- input_select.recycle_pickup_week
Green Waste Schedule:
control: hidden
entities:
- sensor.green_day
- sensor.green_pickup_day
- sensor.green_pickup_week
- input_select.green_pickup_day
- sensor.current_week
- input_select.green_pickup_week
Date Time:
control: hidden
entities:
- sensor.time
- sensor.date
- sensor.time_utc
- sensor.date_time
- sensor.time_date
- sensor.internet_time
- sensor.rocket_launch_time
- sensor.beat
#################################################################
# #
# User Inputs #
# #
#################################################################
input_select:
trash_pickup_day:
name: Current Trash Pickup Day (Evey Week)
options:
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
icon: mdi:delete-variant
recycle_pickup_day:
name: Current Recycle Pickup Day (Every Other Week)
options:
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
icon: mdi:recycle
recycle_pickup_week:
name: Select Recycle Pickup Week based on Current Week above
options:
- Even Weeks
- Odd Weeks
icon: mdi:recycle
green_pickup_day:
name: Current Green Pickup Day (Every Other Week)
options:
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
icon: mdi:leaf
green_pickup_week:
name: Select Recycle Pickup Week based on Current Week above
options:
- Even Weeks
- Odd Weeks
icon: mdi:leaf
trash_reminders:
name: Trash Reminder
options:
- Bins Taken Out
- Remind Later
- Reset Trash Reminders
input_boolean:
trash_reminders:
name: Trash Reminders
initial: on
icon: mdi:delete-variant
#################################################################
# #
# Sensors #
# #
#################################################################
sensor:
####################################################
# #
# Sensor - MQTT #
# #
####################################################
- platform: mqtt
state_topic: "/home/trashpickupday"
name: "Trash Pickup Day"
value_template: "{{ value }}"
qos: 1
- platform: mqtt
state_topic: "/home/recyclepickupday"
name: "Recycle Pickup Day"
value_template: "{{ value }}"
qos: 1
- platform: mqtt
state_topic: "/home/recyclepickupweek"
name: "Recycle Pickup Week"
value_template: "{{ value }}"
qos: 1
- platform: mqtt
state_topic: "/home/greenpickupday"
name: "Green Pickup Day"
value_template: "{{ value }}"
qos: 1
- platform: mqtt
state_topic: "/home/greenpickupweek"
name: "Green Pickup Week"
value_template: "{{ value }}"
qos: 1
####################################################
# #
# Sensor - Template #
# #
####################################################
## Sensor to hold info about current week is an odd week or an even week of the year
- platform: template
sensors:
current_week:
value_template: >-
{% set year = states.sensor.date_time.state.split(',')[0].split('-')[0] %}
{% set month = states.sensor.date_time.state.split(',')[0].split('-')[1] %}
{% set date = states.sensor.date_time.state.split(',')[0].split('-')[2] %}
{% set today = strptime(year ~ '-' ~ month ~ '-' ~ date , '%Y-%m-%d') %}
{%- if (as_timestamp(today) | timestamp_custom('%U', true) | int ) % 2 == 0 -%}
Even Week (Week# {{ as_timestamp(today) | timestamp_custom('%U', true) }})
{%- else -%}
Odd Week (Week# {{ as_timestamp(today) | timestamp_custom('%U', true) }})
{%- endif -%}
## Trash - Pickup schedule is EVERY week.
## Set the day to a day before the actual day leaving time for reminders
- platform: template
sensors:
trash_day:
value_template: >-
{% set year = states.sensor.date_time.state.split(',')[0].split('-')[0] %}
{% set month = states.sensor.date_time.state.split(',')[0].split('-')[1] %}
{% set date = states.sensor.date_time.state.split(',')[0].split('-')[2] %}
{% set today = strptime(year ~ '-' ~ month ~ '-' ~ date , '%Y-%m-%d') %}
{%- set pickupDay = states.sensor.trash_pickup_day.state | lower -%}
{%- if as_timestamp(today)| timestamp_custom('%A', true) | lower == pickupDay -%}
yes
{%- else -%}
no
{%- endif -%}
## Recycle - Pickup schedule is every other week.
## Set the day to a day before the actual day leaving time for reminders
- platform: template
sensors:
recycle_day:
value_template: >-
{% set year = states.sensor.date_time.state.split(',')[0].split('-')[0] %}
{% set month = states.sensor.date_time.state.split(',')[0].split('-')[1] %}
{% set date = states.sensor.date_time.state.split(',')[0].split('-')[2] %}
{% set today = strptime(year ~ '-' ~ month ~ '-' ~ date , '%Y-%m-%d') %}
{%- set pickupDay = states.sensor.recycle_pickup_day.state | lower -%}
{% if states.input_select.recycle_pickup_week.state | lower == "even weeks" %}
{%- set evenWeekPickup = "true" %}
{% else %}
{%- set evenWeekPickup = "false" %}
{% endif %}
{%- macro day_of_week(timestamp) -%}
{{ as_timestamp(timestamp)| timestamp_custom('%A', true) | lower }}
{%- endmacro %}
{%- macro week_number_of_year() -%}
{{ as_timestamp(today) | timestamp_custom('%U', true) | int }}
{%- endmacro %}
{%- macro is_it_this_week() -%}
{%- if as_timestamp(today) | timestamp_custom('%U', true) | int % 2 == 0 -%}
{%- if evenWeekPickup == "true" -%}
true
{%- else -%}
false
{%- endif -%}
{%- else -%}
{%- if evenWeekPickup == "true" -%}
false
{%- else -%}
true
{%- endif -%}
{%- endif -%}
{%- endmacro -%}
{%- macro is_it_today() -%}
{%- if is_it_this_week() == "true" -%}
{%- if day_of_week(today) | lower == pickupDay -%}
yes
{%- else -%}
no
{%- endif -%}
{%- else -%}
no
{%- endif -%}
{%- endmacro -%}
{{- is_it_today() -}}
## Green Waste - Pickup schedule is every other week.
## Set the day to a day before the actual day leaving time for reminders
- platform: template
sensors:
green_day:
value_template: >-
{% set year = states.sensor.date_time.state.split(',')[0].split('-')[0] %}
{% set month = states.sensor.date_time.state.split(',')[0].split('-')[1] %}
{% set date = states.sensor.date_time.state.split(',')[0].split('-')[2] %}
{% set today = strptime(year ~ '-' ~ month ~ '-' ~ date , '%Y-%m-%d') %}
{%- set pickupDay = states.sensor.green_pickup_day.state | lower -%}
{% if states.input_select.green_pickup_week.state | lower == "even weeks" %}
{%- set evenWeekPickup = "true" %}
{% else %}
{%- set evenWeekPickup = "false" %}
{% endif %}
{%- macro day_of_week(timestamp) -%}
{{ as_timestamp(timestamp)| timestamp_custom('%A', true) | lower }}
{%- endmacro %}
{%- macro week_number_of_year() -%}
{{ as_timestamp(today) | timestamp_custom('%U', true) | int }}
{%- endmacro %}
{%- macro is_it_this_week() -%}
{%- if as_timestamp(today) | timestamp_custom('%U', true) | int % 2 == 0 -%}
{%- if evenWeekPickup == "true" -%}
true
{%- else -%}
false
{%- endif -%}
{%- else -%}
{%- if evenWeekPickup == "true" -%}
false
{%- else -%}
true
{%- endif -%}
{%- endif -%}
{%- endmacro -%}
{%- macro is_it_today() -%}
{%- if is_it_this_week() == "true" -%}
{%- if day_of_week(today) | lower == pickupDay -%}
yes
{%- else -%}
no
{%- endif -%}
{%- else -%}
no
{%- endif -%}
{%- endmacro -%}
{{- is_it_today() -}}
trash_bin_location:
value_template: >-
{% if is_state('device_tracker.trash_bin', 'home') %}
Home
{% elif is_state('device_tracker.trash_bin', 'not_home') and is_state('sensor.trash_day', 'yes') %}
Out for Collection
{% elif is_state('device_tracker.trash_bin', 'not_home') and is_state('sensor.trash_day', 'no') %}
Ready to be Returned
{% else %}
Unknown
{% endif %}
icon_template: >-
{% if is_state('device_tracker.trash_bin', 'home') %}
fas:trash-alt
{% elif is_state('device_tracker.trash_bin', 'not_home') %}
fas:trash-alt
{% else %}
mdi:alert
{% endif %}
trash:
friendly_name: Trash
entity_id: sensor.trash_day
value_template: >-
{% if is_state('sensor.trash_day', 'yes') %}
100
{% elif is_state('sensor.trash_day', 'no') %}
0
{% endif %}
recycle:
friendly_name: Recycle
entity_id: sensor.recycle_day
value_template: >-
{% if is_state('sensor.recycle_day', 'yes') %}
100
{% elif is_state('sensor.recycle_day', 'no') %}
0
{% endif %}
green:
friendly_name: Green
entity_id: sensor.green_day
value_template: >-
{% if is_state('sensor.green_day', 'yes') %}
100
{% elif is_state('sensor.green_day', 'no') %}
0
{% endif %}
#################################################################
# #
# Binary Sensors #
# #
#################################################################
### Lovelace UI ###
binary_sensor:
####################################################
# #
# Binary Sensor - Template #
# #
####################################################
- platform: template
sensors:
trash:
friendly_name: Trash
entity_id: sensor.trash_day
value_template: "{{ is_state('sensor.trash_day', 'yes') }}"
icon_template: >-
{% if is_state('sensor.trash_day', 'yes') %}
fas:trash-alt
{% elif is_state('sensor.trash_day', 'no') %}
fas:trash-alt
{% else %}
mdi:alert
{% endif %}
recycle:
friendly_name: Recycle
entity_id: sensor.recycle_day
value_template: "{{ is_state('sensor.recycle_day', 'yes') }}"
icon_template: >-
{% if is_state('sensor.recycle_day', 'yes') %}
fas:recycle
{% elif is_state('sensor.recycle_day', 'no') %}
fas:recycle
{% else %}
mdi:alert
{% endif %}
green:
friendly_name: Green
entity_id: sensor.green_day
value_template: "{{ is_state('sensor.green_day', 'yes') }}"
icon_template: >-
{% if is_state('sensor.green_day', 'yes') %}
mdi:leaf
{% elif is_state('sensor.green_day', 'no') %}
mdi:leaf
{% else %}
mdi:alert
{% endif %}
#################################################################
# #
# Automations #
# #
#################################################################
## Some automations for this package have now been moved to Node-RED please see Node-Red Flows folder within this package for more infomation! ##
automation:
- alias: Reset Trash Reminders
initial_state: true
hide_entity: true
trigger:
- platform: time
at: '09:00:00'
action:
- service: input_boolean.turn_on
entity_id: input_boolean.trash_reminders
- service: input_select.select_option
data_template:
entity_id: input_select.trash_pickup_day
option: "{{states.sensor.trash_pickup_day.state}}"
- service: input_select.select_option
data_template:
entity_id: input_select.recycle_pickup_day
option: "{{states.sensor.recycle_pickup_day.state}}"
- service: input_select.select_option
data_template:
entity_id: input_select.recycle_pickup_week
option: "{{states.sensor.recycle_pickup_week.state}}"