docs: comprehensive session documentation for handoff
Full documentation of Frigate NVR setup, cam-control webapp architecture, PTZ CGI command reference, OctoPrint timelapse storage, gotchas and lessons learned. Ready for cold pickup in a future session. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+36
-9
@@ -2,15 +2,13 @@
|
||||
|
||||
## Context Files
|
||||
|
||||
- `/root/bin/core_homelab.md` — cluster topology, SSH aliases
|
||||
- `/root/bin/services_directory.md` — active service IPs and domains
|
||||
- `/root/bin/SESSION.md` — global session memory
|
||||
- `./CONTEXT.md` — printer hardware, filament inventory, and accessories
|
||||
- `./CLAUDE.md` — full project docs (printer, cameras, Pi, Frigate, cam-control, PTZ commands)
|
||||
- `./CONTEXT.md` — raw hardware purchase inventory (Amazon order data)
|
||||
- `./GITEA_API.md` — Gitea push credentials and commit convention
|
||||
|
||||
## Project Summary
|
||||
|
||||
3D printing setup and management for a Creality Ender 3 homelab. Covers two printers (Ender 3 V3 SE and Ender 3 S1 Pro), filament inventory across PLA/PETG/ABS in multiple colors, and hardened steel MK8 nozzles. The CONTEXT.md file serves as an inventory of purchased hardware and consumables.
|
||||
3D printing setup with one Creality Ender 3 V3 SE, remotely managed via OctoPrint on a Raspberry Pi 3 B+. Two TENVIS IP cameras on an isolated router subnet are proxied through the Pi (socat) and fed to Frigate NVR + a custom PTZ control webapp. Timelapses stored on tank (node-173) via SMB.
|
||||
|
||||
## Memory Discipline
|
||||
|
||||
@@ -63,19 +61,48 @@
|
||||
- [x] Document OctoPrint setup — done, documented in CLAUDE.md
|
||||
- Camera make: TENVIS (both cameras)
|
||||
|
||||
### Frigate NVR setup (2026-03-24)
|
||||
- Added both cameras to Frigate 0.17 on CT 241 (192.168.0.220)
|
||||
- Config at `/opt/frigate/config/config.yml`, docker-compose at `/opt/frigate/docker-compose.yml`
|
||||
- Added port 1984 mapping to docker-compose (go2rtc API, needed for cam-control)
|
||||
- Streams: `printer_cam1`, `printer_cam2` — pulled from Pi socat RTSP proxies
|
||||
- Object tracking disabled, CPU detector only
|
||||
- Gotcha: Frigate 0.17 changed record config schema — no `retain.days` or `events`, use `continuous.days`/`motion.days`
|
||||
|
||||
### Camera control panel (2026-03-24)
|
||||
- Built single-page PTZ control webapp (`cam-control/server.py`)
|
||||
- Deployed to Frigate CT 241 at http://192.168.0.220:8090
|
||||
- systemd service `cam-control.service` enabled and running
|
||||
- Features: dual MJPEG feeds via go2rtc, PTZ D-pad, speed, flip/mirror
|
||||
- Features: snapshot-polled live feeds (~5fps), PTZ D-pad, speed, flip/mirror
|
||||
- Uses Frigate's go2rtc frame.jpeg endpoint (not MJPEG stream — MJPEG proxy through Python urllib doesn't work reliably)
|
||||
- Must use ThreadingMixIn — single-threaded HTTPServer blocks on stream connections
|
||||
- cam2 flipped 180 (flip=on, mirror=on)
|
||||
|
||||
### OctoPrint timelapse fix (2026-03-24)
|
||||
- Pi fstab pointed to pve197 for tank SMB — updated to node-173 post-migration
|
||||
- Created octoprint Samba user on node-173 (creds: octoprint/octoprint)
|
||||
- Timelapses dir at /tank/Timelapses now accessible, OctoPrint restarted
|
||||
|
||||
### Gotchas & Lessons Learned
|
||||
- Pi's go2rtc API binds to `127.0.0.1` only — not accessible remotely. Use Frigate's go2rtc instead.
|
||||
- Pi's wlan0 is DHCP (192.168.0.102 last seen) — may change. Use `nmap -sn 192.168.0.0/24 | grep Raspberry` from a node to find it.
|
||||
- Pi SSH is key-only as `seth` — reachable via `ssh seth-pi` from steel141, or hop through pve197.
|
||||
- MJPEG streaming through Python urllib is unreliable (0 bytes returned) — use snapshot polling (frame.jpeg) instead.
|
||||
- Frigate 0.17 config schema differs from older docs online — query the Python schema if unsure: `docker exec frigate python3 -c 'from frigate.config import FrigateConfig; ...'`
|
||||
- OctoPrint SMB mount must point to wherever tank lives (currently node-173 at .173). If tank moves again, update Pi fstab.
|
||||
- Caddy config for `octopi.sethpc.xyz` is on CT 600 (192.168.0.185) at `/etc/caddy/Caddyfile` — includes camera stream rewrites at `/cam1.mjpeg`, `/cam2.mjpeg`, `/cam1.jpg`, `/cam2.jpg`.
|
||||
|
||||
### Open threads
|
||||
- [x] Identified camera: TENVIS, internal model C9F0SeZ0N0P4L0 (Hi3510 SoC), firmware V9.1.6.1.24-20170925
|
||||
- [ ] Add slicer profiles and recommended print settings per filament type
|
||||
- [ ] Set up Gitea repo and push project files
|
||||
- [ ] Change default camera passwords (admin/admin)
|
||||
- [ ] Change default camera passwords (admin/admin) — update in: go2rtc.yaml (Pi), Frigate config, cam-control server.py
|
||||
- [ ] Make Pi wlan0 IP static (currently DHCP, could change)
|
||||
- [ ] Fix Pi's go2rtc to bind to 0.0.0.0 if remote MJPEG streaming is ever needed
|
||||
- [ ] OctoPrint config location unknown — not at default `/home/seth/.octoprint/`. Find with: `find / -name config.yaml -path '*octoprint*'` — it's at `/home/octoprint/.octoprint/` (runs as `octoprint` user, venv at `/home/octoprint/venv/`)
|
||||
|
||||
### Completed
|
||||
- [x] Document OctoPrint setup
|
||||
- [x] Identify cameras: TENVIS, model C9F0SeZ0N0P4L0 (Hi3510 SoC), firmware V9.1.6.1.24-20170925
|
||||
- [x] Set up Gitea repo — https://git.sethpc.xyz/Seth/3d-printing
|
||||
- [x] Add cameras to Frigate NVR
|
||||
- [x] Build PTZ camera control webapp
|
||||
- [x] Fix OctoPrint timelapse mount (pve197 → node-173)
|
||||
|
||||
Reference in New Issue
Block a user