What inspired me

Families with a relative who lives alone often want a little reassurance without constantly checking in. But doorbell and motion apps can generate so many notifications that people stop paying attention.

I wanted the opposite: something that stays quiet, learns a household’s usual morning pattern, and sends one gentle check-in email, with a clear reason, when the morning is later than usual.

That became Rhythm. It uses Ring event timestamps and device status without accessing video, images or audio. After a 14-day silent learning period, it checks whether morning activity has been recorded by the household’s cutoff. When something is different, it emails the family and provides links to confirm “She’s fine” or “She’s away until…”

Rhythm is a check-in aid, not a safety or medical device. Motion cannot identify a person, and a quiet morning does not necessarily mean something is wrong.

What it does

Rhythm focuses on reducing notification noise and making each message understandable.

  • Learns quietly: no care alerts during the initial 14-day learning period.
  • Recognizes different routines: weekdays and weekends have separate baselines.
  • Explains each alert: emails show the cutoff and why the morning was flagged.
  • Limits repetition: at most one care alert per day per family recipient.
  • Coordinates family responses: confirmation links let someone record a check-in or an away period.
  • Reports later activity carefully: a follow-up says activity was recorded, while acknowledging it could be the resident or a visitor.
  • Separates connection problems: reported device-offline and stale-connection conditions have their own messages.

The dashboard shows the learned routine, today’s status, the cutoff and previous alerts.

How I built it

I built Rhythm with Python, FastAPI, SQLite and httpx, with a plain HTML, SVG and JavaScript dashboard. Running python -m rhythm starts the dashboard and background worker.

Ring integration

The Ring client reads device lists, device status and Event History. I exercised these API calls against the Ring Developer Playground.

I also implemented a webhook handler with HMAC-SHA256 signature verification and request deduplication. This handler was tested with synthetic payloads; live Ring webhook delivery remains unverified.

The client does not request media endpoints.

An explainable morning rule

Rhythm uses the first qualifying motion event of each day from a rolling eight-week window, excluding days marked away and days that triggered alerts.

For weekdays and weekends separately, it calculates the 95th-percentile first-activity time plus a margin, with a minimum wait of 10:00 on weekdays and 11:00 on weekends under Standard settings. When there are too few samples, it uses a conservative fixed cutoff.

An alert is created if no activity has been recorded by the cutoff plus a ten-minute grace period, or if the first activity occurs after the cutoff. Doorbell presses and events before 05:00 do not count as morning activity.

Family controls and privacy

The prototype supports up to three family recipients, English, Italian and French emails, and Relaxed, Standard and Careful sensitivity settings.

Reply links are signed, expire after 24 hours and can be used once. Opening a link changes nothing; the recipient must confirm the action.

Setup requires confirmation that the person being checked on knows about Rhythm and has agreed to it. Event metadata stays in a local SQLite database, with eight-week raw-event retention, data export and deletion controls. The dashboard includes light, dark and high-contrast modes.

What I learned

A useful rule should explain itself. Families should be able to understand why a message arrived, rather than having to trust an unexplained score.

Missing data needs its own explanation. A device being offline or a Ring connection expiring should not be presented as evidence that someone’s routine has changed.

Fewer false alerts come with a trade-off. In my synthetic evaluation, minimum waiting times reduced false alerts but also meant some late mornings were not flagged.

Simulation and real-world validation answer different questions. Synthetic scenarios helped me test behavior and find bugs. They cannot establish how reliably motion near a door represents someone’s morning routine.

Evaluation and testing

I evaluated Rhythm’s rule on 60 simulated households over 16 weeks, including weekday and weekend differences, sleep-ins, night events, doorbell presses, trips, late mornings and silent days.

All evaluation data was synthetic. These results describe the simulated scenarios, not measured performance in real homes.

Measure Standard Careful
False alerts per household per month 0.00 0.07
Silent days detected 60 / 60 60 / 60
Late mornings detected 94 / 140 122 / 140
Alerts during announced trips 0 0

The automated test suite covers the morning rule, time zones and daylight saving, email suppression and retries, signed reply links, webhook handling, away periods and connection-loss behavior.

Challenges I faced

Building without a physical Ring device

I did not have a physical Ring device. The Playground provided a simulated doorbell and real API responses, but the history event I observed was a live-view event (on_demand), not qualifying motion.

I deliberately excluded that event from the routine calculation. Instead, I built a reproducible demo using clearly labeled synthetic activity and documented which integrations were exercised live and which behaviors were simulated.

Handling unreliable delivery and delayed events

Events can arrive late or more than once, and email delivery can fail. Rhythm deduplicates events, uses their occurrence timestamps, allows a grace period and tracks email delivery separately for each family member.

Making email replies safe

Email scanners may open links automatically. I used confirmation pages so that opening a link cannot accidentally mark someone fine or pause alerts.

Finding bugs through testing

Testing exposed a follow-up that never fired, repeated emails when one recipient’s address failed, and an away period that incorrectly suppressed earlier days. I fixed these issues and added regression tests.

Accomplishments I’m proud of

I built a complete prototype around a focused idea: a quiet, understandable prompt for a family to check in.

I’m especially proud of the explainable alerts, privacy-conscious implementation, family reply workflow and transparent documentation of the project’s testing limits.

What’s next

When suitable hardware and access become available, the next step is to validate real motion events, offline transitions and live webhooks, then assess the usefulness of the cutoffs with consenting households.

The goal is to learn whether Rhythm can provide a helpful check-in without becoming another source of notification noise.

Built With

Share this project:

Updates

Submission history