A MagicMirror (v2.34.0) setup running on a Raspberry Pi with Ring camera integration, AI-powered object detection, and a two-page touchscreen dashboard.
- Ring Camera Snapshots — Live snapshots from Ring doorbells and cameras, refreshed periodically and on motion events
- AI Object Detection — TFLite-based detection filters motion alerts to only show when a person, vehicle, or animal is in frame (SSD MobileNet v1 COCO)
- Two-Page Dashboard — Swipe between a main dashboard (clock, cameras, weather, indoor climate, calendar) and an info page (forecast, news, system stats)
- Touch Control — Tap to switch pages
- Remote Control — Web-based remote management with monitor on/off
| Module | Description |
|---|---|
| MMM-RingSnapshot | Ring camera snapshots with AI person/vehicle/animal detection |
| MMM-DHT-Sensor | Indoor temperature and humidity from a DHT sensor |
| MMM-pages | Page/slide navigation for grouping modules |
| MMM-page-indicator | Visual indicator showing current page |
| MMM-Touch | Touch gesture support (tap to change pages) |
| MMM-Remote-Control | Web-based remote control interface |
| MMM-SystemStats | CPU temp, RAM, disk, and uptime display |
| MMM-PowerButtons | On-screen power/reboot/monitor controls |
Follow the official installation guide, or clone this repo:
git clone git@github.com:mbrande/MikesMagicMirror.git ~/MagicMirror
cd ~/MagicMirror
npm installCopy the example config and fill in your values:
cp config/config.js.example config/config.jsYou'll need to set:
apiKeyfor MMM-Remote-Control- Google Calendar private iCal URL
- Weather coordinates (lat/lon)
cd modules/MMM-RingSnapshot
npm installCreate a Ring refresh token (instructions) and save it:
cp ring-token.json.example ring-token.json
# Edit ring-token.json with your refresh tokenRun the one-time setup script to install the TFLite model and Python dependencies:
cd modules/MMM-RingSnapshot
bash setup_detection.shThis creates a Python venv, installs ai-edge-litert, pillow, and numpy, and downloads the quantized SSD MobileNet v1 COCO model (~4MB).
Test it manually:
venv/bin/python3 detect_person.py <image.jpg> 0.5# With PM2 (recommended):
pm2 start npm --name magicmirror -- run start
pm2 save
# Or directly:
npm run startThese options go in the MMM-RingSnapshot config block in config/config.js:
| Option | Default | Description |
|---|---|---|
personDetection |
true |
Alert on person detection |
personConfidence |
0.5 |
Person confidence threshold (0-1) |
vehicleDetection |
true |
Alert on vehicle detection (car, truck, bus, motorcycle, bicycle) |
vehicleConfidence |
0.5 |
Vehicle confidence threshold (0-1) |
animalDetection |
true |
Alert on animal detection (cat, dog, bird, etc.) |
animalConfidence |
0.5 |
Animal confidence threshold (0-1) |
Detection is fail-open: if the model errors or times out, motion alerts pass through normally. Detection only runs once at the start of a motion event, not during the 5-second refresh cycle.
- Raspberry Pi 5
- Ring Doorbell / Camera
- DHT temperature/humidity sensor
- HDMI touchscreen display
MagicMirror is licensed under MIT. Based on MagicMirror by MagicMirrorOrg.