diff --git a/backend/app/services/spoolman.py b/backend/app/services/spoolman.py index b47ce0aba..3e3de5976 100644 --- a/backend/app/services/spoolman.py +++ b/backend/app/services/spoolman.py @@ -42,7 +42,7 @@ class SpoolmanFilament: class AMSTray: """Represents an AMS tray with filament data from Bambu printer.""" - ams_id: int # 0-3 for regular AMS, 128-135 for external spool + ams_id: int # 0-3 for regular AMS, 128-135 for AMS-HT, 254+ for external spool tray_id: int # 0-3 tray_type: str # PLA, PETG, ABS, etc. tray_sub_brands: str # Full name like "PLA Basic", "PETG HF" @@ -620,7 +620,7 @@ class SpoolmanClient: """Parse AMS tray data into AMSTray object. Args: - ams_id: The AMS unit ID (0-3 for regular, 128-135 for external) + ams_id: The AMS unit ID (0-3 for regular, 128-135 for AMS-HT, 254+ for external) tray_data: Raw tray data from MQTT Returns: @@ -678,15 +678,20 @@ class SpoolmanClient: """Convert AMS ID and tray ID to human-readable location. Args: - ams_id: AMS unit ID (0-3 for regular AMS, 128-135 for external) + ams_id: AMS unit ID (0-3 for regular AMS, 128-135 for AMS-HT, 254+ for external spool) tray_id: Tray ID within the AMS (0-3) Returns: - Location string like "AMS A1", "AMS B2", "External" + Location string like "AMS A1", "AMS-HT A1", "External Spool", etc. """ - if ams_id >= 128: + if ams_id >= 254: return "External Spool" + if 128 <= ams_id <= 135: + # AMS-HT units use IDs 128-135 + ht_letter = chr(ord("A") + (ams_id - 128)) + return f"AMS-HT {ht_letter}{tray_id + 1}" + ams_letter = chr(ord("A") + ams_id) return f"AMS {ams_letter}{tray_id + 1}"