Anniversaries smart home integration, free and open source

Countdowns to birthdays and important dates: days left, years, scenes, widgets.
Overview
This integration counts down to the dates that matter: birthdays, wedding anniversaries, remembrance days, events. For each date it tells how many days are left, how old someone turns or how many years have passed, and it can start your scenes on the day, a few days before, or at the reminder of each date.
- Each date becomes a device: days remaining, years at the next anniversary and years so far, days elapsed (option), days to the half anniversary (option), next date.
- Scene triggers: a date is today, a date is in N days, reminder of a date ("round years" filter), a date reaches 1,000 days. Scene action: get the upcoming dates as a text to send.
- Three dashboard widgets: upcoming dates, countdown of one date, dates of the month. An Add a date button right on the dashboard.
- The traditional names of wedding anniversaries: paper, china, golden…

The image above is a generated illustration, not a screenshot.
Prerequisites
- Gladys Assistant 5.2.0 or later.
- The timezone of Gladys set correctly (Settings > System): the days change at its midnight.
- Nothing else: no account, no device, no internet access.
Configuration
The dates are not typed as JSON: each one is a small form, behind the buttons at the bottom of the configuration page.
| Field or button | Description |
|---|---|
| Hour of scene events | The hour (0 to 23) the "today", "in N days" and reminder scenes start every day. 9 by default. |
| Default reminder | Days before a date for its "Reminder of a date" scenes, for the dates without their own. 7 by default, 0 for none. |
| Language of the texts | Feature names, next date, scene summaries, messages of the buttons. Automatic: the language of your dashboard once a widget has been shown, guessed from the timezone of Gladys before that. Choose it before adding your devices: a device keeps the feature names it is created with. |
| Add a date | Name, day, month, year (empty when unknown), kind, every year or one time only, own reminder, "count the days elapsed", "half anniversary". |
| Edit a date | The name or number of the date (as "List the dates" shows it), then only the fields to change. A year of 0 removes the year. |
| Remove a date | Its name or number. Its device stays in Gladys until you delete it. |
| List the dates | Every date with its number, next occurrence, years and options, and the day and timezone the integration uses. |
The dates are stored in the configuration of the integration in Gladys: they follow your Gladys backups.
Usage
Dates
- With or without the year: without it, the integration counts the days but not the years.
- Every year or one time only: a one-time date (an event, a deadline) needs its year; once passed, its days remaining go negative and it leaves the widgets.
- 29 February falls on 28 February in the other years.
- Kind: birthday, wedding anniversary, anniversary, remembrance, event or other. Scenes and widgets can filter on it.
- A wedding anniversary with its year gets its traditional name (paper anniversary the 1st year, china at 20, golden at 50…: the US traditional list), in the widgets and the scenes. Each language follows its own tradition: in French, German or Spanish the names (and the years named) are not the same.
Devices
After Add a date, open the Discover tab of the integration and add the date: it becomes a device named after it.
- Days remaining (days; 0 on the day).
- Years at the next anniversary and years so far (when the year is known; "age" for a birthday).
- Days elapsed (option "count the days elapsed"): since the last occurrence, or since a one-time date.
- Days to the half anniversary (option), six months after the date.
- Next date, written in the language of the integration.
The values change at midnight in the timezone of Gladys. When you change the options of a date, its device gets new features: click Update on it in the Discover tab.
Dashboard widgets
- Upcoming dates: the nearest date is put forward at the top (its name, kind and day, a colored tile of the days left and a tile of the age or years), then the next ones as rows across the card: on the left an icon of the kind (gift, heart, star…), the name and the years, on the right the day and the days left (“Dec 24 · 69 d”, “Today” on the day). Colors of the icon: green on the day, orange within the reminder, blue for round years (10, 20, 25, 30… and 18 for a birthday), grey later (the tiles stay blue). Settings: how many (the one put forward included), within how many days, which kinds, whether to show the button. The traditional name of a wedding anniversary is in the caption of the date put forward and in the Countdown widget.
- Countdown: one date among the added devices: days left, years, days elapsed, wedding or event date (not the date of birth: the age and the day say it), half anniversary and traditional name. "Next age" is the age reached on the next birthday, "Days elapsed" the days since the last occurrence. The reminder is not shown: it only matters to the scenes.
- Dates of the month: every date of the current month (or the next one), past days included, in the order of the days, in the same rows and colors; the next date to come in the month is put forward with its tiles. 8 at most, the caption says how many there are. Settings: which month, which kinds, whether to show the button.
Upcoming dates and Dates of the month have an Add a date button: a small form with the name, the date (day first: 24/12/1995, or 24/12 without the year), the kind and the repeat. Its own reminder and the options are set afterwards with "Edit a date" in the configuration. As with the configuration button, then add the date from the Discover tab to get its device.
Scenes
Triggers, fired once a day at the hour of the configuration (never twice for the same date and day; if Gladys was stopped at that hour, they come when it is back, the same day):
- A date is today: filters on the date and the kinds.
- A date is in N days: you choose N (1 to 60), for example 7 for "one week before".
- Reminder of a date: when a date reaches its own reminder (or the default one).
- A date reaches 1,000 days: every 1,000 days since the date, for the dates whose year is known (10,000 days old, 1,000 days since moving in). Variables: name, kind, number of days, date of birth or of the event, summary sentence.
The first three have a Round years filter: left empty, every year; "Round years only", the tens, 25, 75 and the other multiples of 25, and 18 for a birthday.
Variables: name, kind, years reached, wedding anniversary name (empty for the other kinds), date of birth or of the event (the one you typed), day of the next occurrence, days remaining, and a ready-made summary sentence ("Marie: in 7 days, Thursday, December 24, 2026 (31 years)", "Claire & Alex: today (25 years, silver anniversary)").
Action Get the upcoming dates: within N days (0 for today only), optionally for some kinds; outputs the count, a summary (one line per date) and the nearest date.
Examples:
- When a birthday is today → send "{{triggerEvent.data.summary}}" to the family and turn the living room light to a festive color.
- When a date is in 7 days, kind wedding anniversary → send yourself a message to book the restaurant.
- When a wedding anniversary is in 30 days, round years only → send yourself "The {{triggerEvent.data.wedding}} is coming!" to prepare a party.
- Every Monday at 8:00 → get the upcoming dates within 7 days → send the summary by message.
Transport
Local: the integration calls no online service, nothing leaves your Gladys. Its badge in the catalog says "local".
Troubleshooting
- The features of a device are in English: the device was created before the integration knew your language, and Gladys never renames the features of an existing device. Choose the "Language of the texts" in the configuration, delete the device (Devices tab) and add it again from the Discover tab. The date itself is not lost.
- A date shows one day off: check the timezone of Gladys (Settings > System); "List the dates" shows the day and the timezone the integration uses.
- A scene did not start: the events come at the hour of the configuration, not at midnight. A date added after that hour fires its events of the day right away; a date never fires the same event twice in a day.
- A feature is missing after an edit: click Update on the device in the Discover tab.
- Something else: open an issue on GitHub (https://github.com/William-De71/gladys-anniversaries/issues) with the versions of Gladys and of the integration, the result of "List the dates" and the logs of the integration (Settings > Supervision).
Configuration settings
These are the settings Anniversaries asks for in its configuration screen in Gladys.
| Setting | Type | Required | Description |
|---|---|---|---|
| Your dates | section | No | How it works: 1. Choose the “Language of the texts” below first: a device keeps the feature names it is created with. 2. Declare each birthday, anniversary or important date with “Add a date” (or the button of the dashboard widgets). 3. Open the Discover tab and add the date: it becomes a device counting the days. 4. Add the widgets to a dashboard, and use the scene triggers (a date today, in N days, its reminder, every 1,000 days). Nothing leaves your Gladys: the integration calls no online service. |
| Hour of the scene events | number | No | The “today”, “in N days” and reminder scenes start every day at this hour (0 to 23, in the timezone of Gladys). The days change at midnight. |
| Default reminder (days before) | number | No | For the dates without their own reminder. 0: no reminder. |
| Language of the texts | select | No | Feature names, next date, scene summaries and messages of the buttons. Automatic: the language of your dashboard once a widget of the integration has been shown, guessed from the timezone of Gladys before that. A device already created keeps its feature names: delete it and add it again from the Discover tab to rename them. |
How to install Anniversaries in Gladys
- In Gladys, open Integrations: Anniversaries appears in the catalog, next to the native integrations, with a community badge.
- Click Install. Gladys pulls the Docker image (
ghcr.io/william-de71/gladys-anniversaries:0.3.2), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration). - Open the Configuration screen of the integration, fill in the settings, and save.
- You can also install it directly from its repository URL: https://github.com/William-De71/gladys-anniversaries.
Anniversaries requires Gladys >=5.2.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.
Not running Gladys yet? It is free and open source: follow the installation guide to get started.
About external integrations
Anniversaries is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by William-De71, not by the Gladys core team.
- Browse all integrations, native and community
- Build and publish your own external integration
- Source code on GitHub — source of this documentation