Weather webcam: an AI-Thinker ESP32-CAM in the home WiFi that uploads a JPEG snapshot directly to a Cloudflare Worker every 60s over HTTPS, and displayed on a small standalone page linked from https://fabian-graf-website.pages.dev/.
ESP32-CAM (WiFi)
| HTTPS POST /upload every 60s (Bearer token, TLS via crt bundle)
v
Cloudflare Worker + R2 (esp-webcam-relay)
| serves GET / (HTML) and GET /image (JPEG)
v
Browser tab, linked from the main website
esp32/- ESP-IDF firmware for the camera. Seeesp32/README.md.cloudflare/- Cloudflare Worker (upload receiver + image server + page). Seecloudflare/README.md.docs/architecture.md- more detail on the design and data flow.
None of these are committed (see .gitignore):
esp32/main/secrets.h- WiFi SSID/password, Cloudflare Worker upload URL and bearer token (copy fromsecrets.h.example)- Cloudflare Worker secret
UPLOAD_TOKEN(set viawrangler secret put) - must matchUPLOAD_TOKENinesp32/main/secrets.h.
cloudflare/: create the R2 bucket, set theUPLOAD_TOKENsecret, deploy the worker, note the resulting*.workers.devURL.esp32/: fill insecrets.h(WiFi creds + worker URL/token from step 1), build and flash.- Add a link/button on the main website pointing to the worker's URL (opens in a new tab) - no changes to the website's build needed.