Baby Monitor

TypeScriptAngularNodeJS

This project was aimed at creating a low cost modern baby monitor using unused pieces of hardware I had lying around. It was a good exercise in experimenting with different prototypes to try come up with features that were useful in practice.

I'm constantly changing the project to meet the ever changing requirements of raising a child. However, the current feature set includes:

  • Ability to work with any network RTSP (or local USB) camera
  • Web interface exposed via Wifi
  • Image recognition to detect level of movement
  • A sound bar to indicate the sound level
  • A history of sleep/awake times
  • Playing white noise out of the camera

It is a NodeJS application running on an old Windows tablet computer. It uses FFmpeg and OpenCV to capture and process the video stream. I wrote the sound level detection algorithm. The application exposes an Angular SPA which is available on the local network and that same interface is shown on the tablet via a Chrome kiosk. A combination of websockets and streaming video/audio formats expose the stream to the client.

All in all, this project has been very successful and has been used extensively by my family. The coloured sections allow you to watch for movement or noise easily enabling you to focus on other tasks. Although it required several tweaks the detection algorithms are very accurate in a variety of lighting conditions and rooms.