This project is a proof of concept (POC) for displaying a live feed from a Ring doorbell on an ESP32 with a TFT display.
This setup is designed to run on a single server/computer.
The ESP32 used is an all-in-one package with a display and additional features:
- Link: ESP32 on AliExpress
- Product: Guition JC2432W328
To make this project work, a few key parts are needed:
Folder: rtsp-proxy
While Ring doesn't provide a public API, there are several projects that reverse-engineer this functionality. The best one I found is a Node.js library called ring-client-api. This library provides a way to get a livestream that can be processed using ffmpeg
. Although it's not the most ideal, it allows streaming to different formats and locations, such as an RTSP server.
Folder: rtsp-server
I opted to use an RTSP server to facilitate easier processing through existing technologies. For the RTSP server, I used mediamtx.
Folder: esp-proxy
To make the ESP display as responsive as possible, I created a proxy server that converts the RTSP stream to a more ESP-friendly format.
Folder: esp-display
The display gathers individual frames from the ESP-proxy and renders them on the screen. Due to the limited heap space, a compressed JPEG is used.
For detailed setup and configuration instructions, refer to the ESP Display Documentation.
Follow these steps to set up and run the project:
-
Run the RTSP Server:
- Ensure the RTSP server is up and running. This will handle the live feed from the Ring doorbell.
-
Run the RTSP-Proxy:
- Set up and run the
rtsp-proxy
to interface with the Ring doorbell and stream to the RTSP server.
- Set up and run the
-
Run the ESP-Proxy:
- Set up and run the
esp-proxy
to convert the RTSP stream into a format suitable for the ESP32.
- Set up and run the
-
Run the ESP Display:
- Configure and run the ESP32 to connect to the ESP-proxy and display the live feed.
For specific instructions on setting up each part, refer to the respective folders and documentation: