Files
3d-printing/CLAUDE.md
T
Mortdecai 9daf6acd66 feat: initial project setup with camera control panel
3D printing project with Ender 3 V3 SE documentation, OctoPrint/Pi
infrastructure docs, and PTZ camera control webapp for two TENVIS
cameras proxied through Raspberry Pi to Frigate NVR.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 19:14:30 -04:00

3.5 KiB

3D Printing Project

Project Overview

3D printing setup and management for two Creality Ender 3 printers, with OctoPrint remote control and IP camera monitoring via a Raspberry Pi proxy.

Hardware

Printer

Printer Speed Extruder Auto-Level Build Volume Hot End
Creality Ender 3 V3 SE 250 mm/s Sprite Direct Drive CR Touch 220x220x250 mm Standard

Filament Inventory

Material Color Brand Diameter
PLA White OVERTURE 1.75 mm
PLA Black OVERTURE 1.75 mm
PLA Black ELEGOO 1.75 mm
PLA Dark Blue ELEGOO 1.75 mm
PLA Transparent SUNLU 1.75 mm
ABS Black Creality 1.75 mm
PETG Red Creality 1.75 mm
PETG Black Creality 1.75 mm

Accessories

  • Creality Hardened Steel MK8 Nozzles (5-pack)

Remote Printing Infrastructure

Raspberry Pi 3 B+ (seth-pi)

  • Hostname: seth-pi
  • OS: Debian 13 (Raspberry Pi OS Lite)
  • User: seth (key-only SSH, no root login)
  • wlan0: 192.168.0.102 (main network, DHCP) — default route
  • eth0: 192.168.0.101/24 (isolated camera router subnet)
  • WiFi SSID: WiFrei

OctoPrint

go2rtc (v1.9.14)

Restreams both cameras with H.264 hardware transcoding and MJPEG fallback.

  • API: http://192.168.0.102:1984
  • RTSP: rtsp://192.168.0.102:8554
  • Streams:
    • cam1 / cam1_mjpeg — Camera 1 (192.168.0.100)
    • cam2 / cam2_mjpeg — Camera 2 (192.168.0.103)

IP Cameras — TENVIS (on isolated eth0 subnet)

Both TENVIS cameras use credentials admin:admin and expose RTSP on port 554 (/11 path), HTTP on 80, and ONVIF on 8080.

  • Internal model: C9F0SeZ0N0P4L0 (Hi3510-based SoC)
  • Firmware: V9.1.6.1.24-20170925
  • Hardware version: V1.0.0.1
  • CGI interface: /cgi-bin/hi3510/param.cgi
  • cam2 has an SD card inserted (59GB)
Camera Isolated IP Proxy Ports (on .102)
cam1 192.168.0.100 HTTP:18080, ONVIF:18081, RTSP:18554
cam2 192.168.0.103 HTTP:28080, ONVIF:28081, RTSP:28554

Proxy Architecture

The Pi bridges two networks:

  • eth0 (192.168.0.101) connects to an isolated router with the two IP cameras
  • wlan0 (192.168.0.102) connects to the main homelab network
  • socat systemd services proxy each camera port from the isolated subnet to the main network
  • Port scheme: 1xxxx = cam1, 2xxxx = cam2

Proxy services (all systemd, auto-restart):

  • ipcam-proxy-http.service — 18080 -> 192.168.0.100:80
  • ipcam-proxy-onvif.service — 18081 -> 192.168.0.100:8080
  • ipcam-proxy-rtsp.service — 18554 -> 192.168.0.100:554
  • ipcam2-proxy-http.service — 28080 -> 192.168.0.103:80
  • ipcam2-proxy-onvif.service — 28081 -> 192.168.0.103:8080
  • ipcam2-proxy-rtsp.service — 28554 -> 192.168.0.103:554

Camera Control Panel

  • URL: http://192.168.0.220:8090
  • Location: /opt/cam-control/server.py on CT 241 (Frigate)
  • Service: cam-control.service (systemd, enabled)
  • Features: Live MJPEG feeds, PTZ D-pad (continuous/step), speed control, flip/mirror toggles
  • Source: ./cam-control/server.py

Gitea

Conventions

  • Camera credentials: admin/admin (default, isolated network only)
  • Pi SSH: key-only as seth, no password auth
  • Internal password for homelab services: REDACTED_PASSWORD