Inspiration
I wanted to make something that could help people who manage Airbnb or other rental homes.
Ring cameras are useful because they can tell us when someone arrives or when motion happens. But they don't know what should happen at each home.
For example, a cleaner should arrive after guests check out. But what if the cleaner doesn't come? A normal camera won't alert the owner because nothing happened.
This gave me the idea to build Turnover.
Ring tells you what happened. Turnover tells you what it means.
What it does
Turnover is an app that connects Ring camera events with booking calendars. It helps rental hosts know what is happening at their homes without checking cameras all the time.
Here are some things Turnover can do:
- Alert the host when a cleaner doesn't arrive on time.
- Record when a cleaner arrives and how long they stay.
- Keep normal guest activity quiet to reduce unnecessary alerts.
- Alert when a camera goes offline.
- Detect possible packages or unexpected activity at an empty home.
- Flag a possible party or gathering at night.
- Show a daily timeline of what happened at each home.
The host can also see why Turnover sends an alert or decides to keep an event quiet.
How I built it
I used Python and FastAPI for the backend, and HTML, CSS, and JavaScript for the website. I also used SQLite to store the data.
First, I worked on connecting booking calendars with Ring events. I used iCalendar data to check when guests should arrive, leave, or when cleaning should happen.
Then I built a rules system to decide which events are important and which ones can be kept quiet.
I also made a simulator with four example homes. It lets me play through one full day and see how Turnover handles different situations.
I connected the app to the official Ring Developer Playground and was able to find the test device.
I also added Amazon Bedrock code for checking images and writing daily summaries. However, my AWS account has a model quota of zero, so I couldn't test it live. For now, I use example photos and saved results in the demo.
For the dashboard, I wanted something simple and easy to use. I added different home pages, timelines, alerts, and an Activity page.
Challenges I ran into
One challenge was deciding when Turnover should send an alert.
For example, motion during a guest's stay is normal. But motion at an empty home late at night might be important. I had to make the system check the booking information before deciding.
I also had some problems when testing the Ring API. One time, the snapshot API returned an error, but my app treated it like a real image. I had to fix the code so it could handle that error correctly.
Another problem was getting everything to work on Windows. Some Python date formats caused errors, so I had to change them.
I also had to fix the camera alert system because it didn't always close an alert after the camera came back online.
Lastly, I redesigned the dashboard a few times because I wasn't happy with the first design.
Accomplishments I'm proud of
My favorite feature is the cleaner no-show alert.
I like it because the system can notice when something doesn't happen, instead of only checking things that already happened.
I'm also happy that Turnover can explain why it sends or keeps quiet each event.
I managed to make a full-day simulation with four homes, connect to the Ring Developer Playground, and get my application tests passing.
What I learned
I learned a lot about working with APIs, webhooks, backend development, and testing.
I also learned how important it is to handle errors properly, especially when using another company's API.
Another thing I learned is that having more information doesn't always mean sending more notifications. Sometimes it's better to show only what really matters.
What's next for Turnover
I want to test Turnover with real Ring devices and real rental homes in the future.
I also want to finish testing Amazon Bedrock when I get model access, improve the alerts, and deploy the website online.
My goal is to make Turnover a useful app for people who manage multiple rental properties, so they can spend less time checking cameras and more time taking care of their homes.
Built With
- amazon-bedrock
- amazon-web-services
- css
- docker
- fastapi
- hmac
- html
- icalendar
- javascript
- pytest
- python
- ring-api
- sqlite
- webhooks
Log in or sign up for Devpost to join the conversation.