Start with a calendar, then add the reminder
A Home Assistant trash collection reminder works best when the pickup dates live in one dedicated calendar. First check your collection provider’s schedule. Then bring those dates into Home Assistant, test a phone message, and add the evening check below. You do not need a sensor on the bin for this version.
If the provider offers a calendar subscription link, use it through Remote Calendar. If you have a leaflet or a short list of dates, Home Assistant’s built-in Local calendar is a straightforward starting point. Local means those entered dates are stored in your Home Assistant installation. Somebody still needs to keep them correct.
The example runs once each evening, asks for every collection tomorrow, and sends one message containing their names. An empty day produces no message. Its calendar should contain only collection events, each covering its actual pickup day.
Researched from current Home Assistant, Companion App and project documentation on September 9, 2026. The example dates are illustrative, not a municipal schedule. The YAML syntax and sample date/message calculations were checked locally; this configuration was not run in Home Assistant or tested with a collection provider or phone. The cover is an AI-generated residential illustration.
Set up the calendar and phone message
1. Choose where the dates come from
Use one source of collection dates. Keep a provider calendar separate from your personal appointments so an unrelated event cannot become a bin reminder.
Scroll sideways to read all columns on a phone.
| What you have | Choose | What to maintain or check |
|---|---|---|
| Provider’s calendar subscription URL, often ending in .ics | Built-in Remote Calendar | Check the address and bin types. It needs upstream access for updates; the documented default fetch interval is 24 hours, so a late correction may not appear immediately. |
| Paper leaflet, PDF or a manageable list of dates | Built-in Local calendar | Enter the real dates and update exceptions yourself. It will not read changes from the provider’s website. |
| A provider supported by Waste Collection Schedule | The community-maintained custom integration | Follow that provider’s setup instructions and verify its output. This adds third-party software and provider-specific maintenance. |
Remote Calendar’s documentation covers its URL and authentication options. Waste Collection Schedule is a separate community project; support for one council does not establish support for yours. The walkthrough below uses Local calendar. An existing calendar can replace it after you verify that it returns the right collection events.
2. Enter a few confirmed pickup dates
- Open Settings → Devices & services → Add integration, choose Local calendar, and name it Bin collection.
- Open Calendar in the sidebar and choose Add event. Select the new calendar. Add a one-day, all-day event on the pickup date, named something clear such as Trash or Recycling.
- Enter the next few dates from your provider. If both bins are collected on one day, add two separate events on that day. Avoid multi-day events such as “holiday week,” which would make several days appear to have a collection.
- Open the calendar’s entity settings and copy its entity ID, the internal name used in automations. This example uses
calendar.bin_collection; yours may differ.
The Calendar documentation explains the sidebar and event controls. Check the month view after entering dates: the event belongs on collection day, not the evening when you plan to move the bins. Set yourself a separate reminder to enter the next published schedule before these dates run out.
3. Test a plain phone notification
Connect the Home Assistant Companion App to this installation and allow notifications. Open Home Assistant’s Actions tool and find your phone’s notify.mobile_app_… action. In current navigation, look under Settings → Tools → Actions; older versions call it Developer tools → Actions.
Send a test with the message “Bin reminder test.” Copy that action’s exact name for the automation. The Companion notification documentation shows the title and message fields. If a plain message does not arrive, fix Home Assistant notification delivery before adding calendar logic.
Make one 7 pm check for tomorrow’s bins
Open Settings → Automations & scenes, create a new empty automation, and choose Edit in YAML from its menu. YAML is Home Assistant’s text configuration format. Paste the example as one automation; do not add an outer automation: line.
Replace the calendar ID in both places and replace notify.mobile_app_your_phone with the action you tested. Keep the indentation. Change 19:00:00 if another evening time is more useful, then save and enable the automation.
Copy the single-calendar reminder
alias: "Bins - tomorrow at 7 pm"
description: "One evening message for tomorrow's collection events"
triggers:
- trigger: time
at: "19:00:00"
conditions: []
actions:
- action: calendar.get_events
target:
entity_id: calendar.bin_collection
data:
start_date_time: >-
{{ (now().date() + timedelta(days=1)).isoformat() }} 00:00:00
end_date_time: >-
{{ (now().date() + timedelta(days=2)).isoformat() }} 00:00:00
response_variable: collections
- variables:
bins: >-
{{ collections['calendar.bin_collection']['events']
| map(attribute='summary') | unique | list }}
- condition: template
value_template: "{{ bins | count > 0 }}"
- action: notify.mobile_app_your_phone
data:
title: "Bins for tomorrow"
message: "Put out: {{ bins | join(', ') }}. Collection is tomorrow."
mode: single
The Get calendar events action returns a list for the requested calendar. Here, collections holds that response and bins holds its event titles. The rule joins those titles with commas; identical titles are listed once. The condition inside the action sequence stops an empty list from sending a message.
The interval starts at tomorrow’s midnight and ends at the following midnight, which is excluded. It is not “the next 24 hours from 7 pm.” The expressions first calculate local dates and then add midnight; Home Assistant’s calendar action interprets those times locally. Check the installation’s configured time zone. See the date/time documentation and calendar action implementation.
This setup queries the event list instead of reading the calendar entity’s single next-event attributes. That distinction matters when trash and recycling share a date. Keep both events in the calendar you query; the code does not automatically combine separate calendars.
Worked example: ordinary pickup, recycling and a changed date
Imagine a household with Thursday trash pickup and recycling every other Thursday. These are made-up dates to explain the rule. The reminder’s wording comes from the event titles; it does not guess a bin’s color or collection type.
Scroll sideways to compare the calendar entries and expected message.
| Calendar entries | Evening check | Expected result |
|---|---|---|
| Trash on Thursday, September 10 | Wednesday, September 9 at 7 pm | “Put out: Trash. Collection is tomorrow.” |
| Trash and Recycling on Thursday, September 17 | Wednesday, September 16 at 7 pm | One message listing Trash and Recycling. Their order follows the returned events. |
| That September 17 pickup is moved to Friday, September 18; both old entries are removed and both replacement entries are added | September 16, then September 17 at 7 pm | No message on Wednesday; one message listing both bins on Thursday. |
| No collection on Saturday, September 19 | Friday, September 18 at 7 pm | No message. |
For a real holiday change, follow the collector’s notice. A holiday does not necessarily move every collection by one day. In a manually maintained calendar, remove the affected original event and add its replacement on the confirmed date. If you use a repeating series, change only that occurrence and inspect the following normal week. With a provider feed, check that the corrected date has actually arrived in Home Assistant.
Two entries with the same title on one day are combined in the message, but an old event left on Thursday plus a replacement on Friday would create two evening reminders. Correct the dates rather than adding another weekday rule to compensate.
Check these four cases before relying on it
Create a separate temporary Local calendar named Bin reminder test and temporarily use its entity ID in both code locations. This lets you test empty days without deleting real pickups. Restore your collection calendar’s ID in both places when you finish.
- Tomorrow has two collections: create two temporary one-day events named “Test trash” and “Test recycling.” Run the automation’s actions manually. This example can be tested that way because it obtains its own calendar data. Expect one message with both names.
- Tomorrow is empty: remove those temporary events, confirm the test calendar is empty tomorrow, and run again. Expect no message. Inspect the trace to confirm the empty-list condition stopped it.
- A date moves: move the test events from tomorrow to the day after. The next manual run should be quiet. Verify the events are visible on the new date.
- The clock starts it: restore temporary events for tomorrow and briefly choose a test trigger time later today. Leave Home Assistant running, verify it creates a trace at that time, then restore your evening time and delete the test events.
A trace is the automation’s record of its steps and data. Check the collections response when a bin is missing. Allow time for calendar changes to become visible before testing, especially with a remote source. Running the actions checks the calendar and message path; the scheduled test separately checks the clock trigger. See how to diagnose an automation that does not start if no scheduled trace appears.
Fix the layer that is wrong
Scroll sideways to read the next step for each symptom.
| Symptom | Check first | Next step |
|---|---|---|
| Reminder is a day early | Did you enter “put bins out” day rather than pickup day? | Put the event on collection day. This automation already checks one day ahead. |
| Recycling is missing | Is it in a different calendar or absent from the returned events? | Put both collection types in the queried calendar, or deliberately adapt the query and response handling for multiple calendars. |
| Holiday reminder is wrong | Does Home Assistant still display the old pickup? | Correct the local event, or check the provider feed and its last update. A successful query can still return stale dates. |
| The run fails before sending | Check the trace for an unavailable calendar or a calendar ID that does not match the returned calendar name. | Restore the calendar connection and match its ID in both code locations. Do not turn a calendar error into a claimed “no collection” result. |
| Trace reaches notification; phone stays quiet | Does the plain notification test arrive? | Check app permission, phone settings and delivery connectivity. |
| No message after a 7 pm restart | Was Home Assistant offline at the scheduled time? | Run the actions manually that evening if useful. This example has no startup catch-up or automatic retry. |
Other practical questions
Does the reminder work without internet?
A Local calendar and its date check can run while the internet is down if Home Assistant is powered and running. Ordinary phone push can depend on internet services. Companion App Local Push is a separate option with local connection requirements. A provider feed also needs access to its source to learn new dates.
Do I need HACS or a smart bin sensor?
No. The local-calendar example uses built-in Home Assistant features and the Companion App. HACS, the community store for custom integrations, is an optional route for projects such as Waste Collection Schedule. A bin sensor is only relevant if you also want to track movement; this guide does not detect whether a bin was put out or emptied.
Will it keep reminding me until I take the bins out?
No. It makes one scheduled attempt each evening and sends only when tomorrow has events. A manual run may send another message. Repeated reminders need a separate acknowledgement and reset design; add that only after the dates and single message are correct.
For Tara’s home automation kit with coordinated local routines, a useful handoff includes who maintains the dates, which phone gets the reminder, and how to check it. Keep the collector’s schedule accessible even after the automation is working.
