It's not using machine learning, but I'm just now finishing up a Christmas present; a web accessible treat dispense with live video. I know those exist commercially, but it has been a fun project to build one anyway.
Terrible quality pictures:
Raspberry Pi Zero W for the brains; Pimoroni speaker hat; cheap stepper motor and bridge; IR emitter and transistor create an IR break beam to detect when treats are dispensed; Raspberry Pi camera for live video feed; all controlled by a custom AppEngine deployment which provides a nice web interface for dispensing treats, viewing the video, and even uploading their own sounds which get played before the treats come out.
The most difficult thing has been the mechanical engineering; something I have little to no experience with. The whole CAD process took me a few weeks of working on and off. Then another two weeks of printing and iterating the parts. The main body itself is a 14 hour print even at high speed. I ended up using FreeCAD for the whole design. Not sure if that was a mistake or not. I like supporting open source software, but ... I have this terrible notion that something like Fusion360 would have made the whole process 10x faster... But it's all printed and working!
Since this is going as a gift to someone else, I also had to take a lot of time to make it easy to use; it couldn't just be a fiddly hack. So, for example, I got a nice setup procedure built into it for setting up wifi. You just hold the button on the back to put it into setup mode, and then show it a QR code on your phone with your Wifi network's details. And since there's a speaker, I'm using some text-to-speech to walk them through the setup. It turned out nice.
And using the magic of ffmpeg, I was able to get the Raspberry's camera feed into an HLS stream, which gets securely uploaded to the AppEngine server. So it's a live video, rather than still pictures or delayed video uploads. Was really happy when that got working. (I use hls.js to handle desktop browser compatibility. Works a treat. Also, FFMpeg is supposed to be able to upload the HLS stream itself to a server, but that was broken or something; had to use some Python to pipe it manually.)
Just putting the finishing touches on the frontend now. 4 days to go... wish me luck!