Simple raspberry pi setup to detect dishes in a sink and notify through Slack.
My problem: Two teenage kids who think we've got a maid on staff and “forget” to put their dishes in dishwasher.
Initiating a dish investigation when I find dishes in the sink doesn’t work. Providing immediate feedback to correct a behavior does; yet, I don’t have the time to sit by the sink and monitor who’s not doing their job. A pi can.
The pi has a simple job. Take a pic every x minutes and look for dishes. If dishes are found: Start an annoying buzzer.
This project had 3 goals: simple, detect dishes, notify
I originally wanted to use OpenCV with some object detection and deep learning to detect any dish in the sink (odd shaped pans, spatulas, etc). It didn’t take long to realize the processing power of a pi-zero can’t handle that load
OpenCV has some great algorithms to detect an image has changed. That seemed like a reasonable option if I couldn’t use ML. Kitchens tend to be busy places and this didn’t work. Too many false positives.
The final solution uses OpenCV to look for circles in the image. It’s not fallible but seems to strike the right balance between the pi-zero processing power and the goal of detecting dishes. Your results may vary.
Some features that may be beneficial in the future and should be easy to add:
Trigger dish detection on motion to capture who left the dish there Shut off the internet for my kids devices if dishes are found
I liked the idea of keeping this self contained in the pi but it would be easy to use any old internet enabled camera that uploads the image to AWS for processing. Drop the image in an S3 bucket, use Rekognition to detect dishes, then alert through SNS or a lambda function.
The pi-zero is small but it’s still not attractive in the kitchen. It’s very possible my wife will protest soon and I’ll need to work on a hidden camera setup. Then again, she’s already happy the kids are responding.
Update 2/25/2018: Turns out the kids eventually ignored the slack notice. I wouldn't but it's annoying for me to get constant slack messages about dishes while at work only to have to revert to square 1: A dish investigation. I added a buzzer and removed the slack messages.