mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-09-30 03:01:21 +02:00
Fix chamber temp showing on A1/P1S in multi-printer setups
The REST API endpoint GET /printers/{id}/status was returning raw
temperatures without filtering based on printer model. WebSocket
broadcasts correctly filtered chamber temp via printer_state_to_dict(),
but the REST endpoint built its own response and bypassed this filter.
When users added a second printer, the frontend would fetch initial
status via REST API, causing chamber temp to reappear on printers
that don't have a chamber sensor (A1, A1Mini, P1P, P1S).
Changes:
- Import supports_chamber_temp in printers.py
- Filter chamber/chamber_target/chamber_heating in get_printer_status()
Fixes #82
This commit is contained in:
@@ -2,6 +2,15 @@
|
||||
|
||||
All notable changes to Bambuddy will be documented in this file.
|
||||
|
||||
## [0.1.6b14] - 2026-01-17
|
||||
|
||||
### Fixed
|
||||
- **Chamber temp showing on printers without sensor in multi-printer setups** - Fixed regression where A1/P1S chamber temperature would appear after adding a second printer:
|
||||
- Root cause: REST API `/printers/{id}/status` endpoint wasn't filtering chamber temp by model
|
||||
- WebSocket broadcasts filtered correctly, but initial REST fetch didn't
|
||||
- Now both REST and WebSocket consistently filter chamber temp for P1P/P1S/A1/A1Mini
|
||||
- Fixes [#82](https://github.com/maziggy/bambuddy/issues/82) (multi-printer regression)
|
||||
|
||||
## [0.1.6b13] - 2026-01-16
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -30,7 +30,7 @@ from backend.app.services.bambu_ftp import (
|
||||
get_storage_info_async,
|
||||
list_files_async,
|
||||
)
|
||||
from backend.app.services.printer_manager import get_derived_status_name, printer_manager
|
||||
from backend.app.services.printer_manager import get_derived_status_name, printer_manager, supports_chamber_temp
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
router = APIRouter(prefix="/printers", tags=["printers"])
|
||||
@@ -338,6 +338,14 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db)
|
||||
tray_now = state.tray_now
|
||||
logger.debug(f"Using tray_now directly as global ID: {tray_now}")
|
||||
|
||||
# Filter out chamber temp for models that don't have a real sensor
|
||||
# P1P, P1S, A1, A1Mini report meaningless chamber_temper values
|
||||
temperatures = state.temperatures
|
||||
if not supports_chamber_temp(printer.model):
|
||||
temperatures = {
|
||||
k: v for k, v in temperatures.items() if k not in ("chamber", "chamber_target", "chamber_heating")
|
||||
}
|
||||
|
||||
return PrinterStatus(
|
||||
id=printer_id,
|
||||
name=printer.name,
|
||||
@@ -350,7 +358,7 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db)
|
||||
remaining_time=state.remaining_time,
|
||||
layer_num=state.layer_num,
|
||||
total_layers=state.total_layers,
|
||||
temperatures=state.temperatures,
|
||||
temperatures=temperatures,
|
||||
cover_url=cover_url,
|
||||
hms_errors=hms_errors,
|
||||
ams=ams_units,
|
||||
|
||||
Reference in New Issue
Block a user