maziggy
8acc91d3cd
- Add subnet scanning for printer discovery in Docker environments
...
- Detect Docker environment automatically via /.dockerenv and cgroup
- Show subnet input field in Add Printer dialog when running in Docker
- Scan IP range for Bambu printer ports (8883 MQTT, 990 FTPS)
- Query SSDP to get printer name/serial/model from discovered IPs
- Map raw SSDP model codes to friendly names (BL-P001→X1C, O1D→H2D)
2025-12-28 09:40:47 +01:00
maziggy
11a6bb282a
Key Discovery
...
A1/P1 printers don't support RTSP - they use a custom chamber image protocol on port 6000:
- SSL/TLS connection
- 80-byte binary auth payload (magic + "bblp" + access code)
- 16-byte header with payload size + JPEG data
Changes Made
backend/app/services/camera.py
- Added supports_rtsp() - detects X1/H2/P2 (RTSP) vs A1/P1 (chamber image)
- Added is_chamber_image_model() - inverse check
- Added _create_chamber_auth_payload() - builds 80-byte auth
- Added _create_ssl_context() - SSL for self-signed certs
- Added read_chamber_image_frame() - single frame capture
- Added generate_chamber_image_stream() - persistent connection
- Added read_next_chamber_frame() - read from stream
- Updated capture_camera_frame() - uses correct protocol per model
backend/app/api/routes/camera.py
- Added generate_chamber_mjpeg_stream() - MJPEG from chamber protocol
- Renamed generate_mjpeg_stream() → generate_rtsp_mjpeg_stream()
- Updated camera_stream endpoint - chooses protocol based on model
- Updated stop_camera_stream - cleans up both stream types
- Added tracking for _active_chamber_streams
Protocol Matrix
| Model | Protocol | Port |
|-----------------------------|---------------|------|
| X1, X1C, X1E, H2C, H2D, P2S | RTSP | 322 |
| A1, A1MINI, P1P, P1S | Chamber Image | 6000 |
2025-12-25 07:44:53 +01:00