diff --git a/backend/app/services/camera.py b/backend/app/services/camera.py index ecd8e328e..5f3e4d709 100644 --- a/backend/app/services/camera.py +++ b/backend/app/services/camera.py @@ -66,12 +66,25 @@ def supports_rtsp(model: str | None) -> bool: RTSP supported: X1, X1C, X1E, H2C, H2D, H2DPRO, H2S, P2S Chamber image only: A1, A1MINI, P1P, P1S + + Note: Model can be either display name (e.g., "P2S") or internal code (e.g., "N7"). + Internal codes from MQTT/SSDP: + - BL-P001: X1/X1C + - C13: X1E + - O1D: H2D + - O1C: H2C + - O1S: H2S + - O1E: H2D Pro + - N7: P2S """ if model: model_upper = model.upper() - # These models support RTSP on port 322 + # Display names: X1, X1C, X1E, H2C, H2D, H2DPRO, H2S, P2S if model_upper.startswith(("X1", "H2", "P2")): return True + # Internal codes for RTSP models + if model_upper in ("BL-P001", "C13", "O1D", "O1C", "O1S", "O1E", "N7"): + return True # A1/P1 and unknown models use chamber image protocol return False diff --git a/backend/app/services/printer_manager.py b/backend/app/services/printer_manager.py index ee7645636..4a956649e 100644 --- a/backend/app/services/printer_manager.py +++ b/backend/app/services/printer_manager.py @@ -10,8 +10,10 @@ from backend.app.services.bambu_mqtt import BambuMQTTClient, MQTTLogEntry, Print # Models that have a real chamber temperature sensor # Based on Home Assistant Bambu Lab integration # P1P/P1S and A1/A1Mini do NOT have chamber temp sensors +# Includes both display names and internal codes from MQTT/SSDP CHAMBER_TEMP_SUPPORTED_MODELS = frozenset( [ + # Display names "X1", "X1C", "X1E", # X1 series @@ -20,6 +22,14 @@ CHAMBER_TEMP_SUPPORTED_MODELS = frozenset( "H2D", "H2DPRO", "H2S", # H2 series + # Internal codes (from MQTT/SSDP) + "BL-P001", # X1/X1C + "C13", # X1E + "O1D", # H2D + "O1C", # H2C + "O1S", # H2S + "O1E", # H2D Pro + "N7", # P2S ] ) diff --git a/backend/tests/unit/services/test_printer_manager.py b/backend/tests/unit/services/test_printer_manager.py index d0a2160e5..dbff3358e 100644 --- a/backend/tests/unit/services/test_printer_manager.py +++ b/backend/tests/unit/services/test_printer_manager.py @@ -839,6 +839,34 @@ class TestSupportsChamberTemp: assert supports_chamber_temp("X1c") is True assert supports_chamber_temp("p1s") is False + def test_internal_model_codes_supported(self): + """Verify internal model codes from MQTT/SSDP are recognized.""" + # X1/X1C + assert supports_chamber_temp("BL-P001") is True + # X1E + assert supports_chamber_temp("C13") is True + # H2D + assert supports_chamber_temp("O1D") is True + # H2C + assert supports_chamber_temp("O1C") is True + # H2S + assert supports_chamber_temp("O1S") is True + # H2D Pro + assert supports_chamber_temp("O1E") is True + # P2S + assert supports_chamber_temp("N7") is True + + def test_internal_model_codes_not_supported(self): + """Verify A1/P1 internal codes are NOT supported.""" + # P1P + assert supports_chamber_temp("C11") is False + # P1S + assert supports_chamber_temp("C12") is False + # A1 + assert supports_chamber_temp("N2S") is False + # A1 Mini + assert supports_chamber_temp("N1") is False + class TestGetDerivedStatusName: """Tests for get_derived_status_name function."""