Можливості

Все що вміє BamDude

Self-hosted командний центр для одного принтера чи ферми - архів, черга, контроль, автоматизація, інтеграції в одному місці.

Моніторинг і керування

Бачити і керувати кожним принтером у реальному часі - з одного дашборду.

Підтверджені дії для вибраних принтерів

Паркуй осі, запускай підтримувані калібрування, записуй обслуговування, керуй чергами, режимом обслуговування та світлом вибраних принтерів. Переглянь отримувачів і пропуски, підтвердь дію та побач результат для кожного. Перед дією принтер перевіряється знову; рух потребує підтвердження порожньої плити й свіжого стану простою.

Параметри друку для кожної моделі нарізки

Задай кожній моделі в плані замовлення власне калібрування, таймлапс і попередній нагрів. Нові завдання зберігають параметри захопленого файла навіть при маршрутизації на сумісний принтер. Наявні завдання та профілі оператора не змінюються.

Автоскидання підготовленим файлом замовлення

Експериментальний режим для обладнання й завершального G-code, підготовлених оператором. Нові завдання зберігають власний режим і політику камери; за замовчуванням свіжий кадр перевіряє плиту перед наступним відправленням. BamDude не додає рухів скидання. Відмова від перевірки потребує двох попереджень, а звичайний чи невдалий попередній друк усе ще потребує ручного підтвердження плити.

Контрольований процес камер

З’єднання камер, знімки, живі трансляції та обробка відео працюють у локальному воркері під наглядом. Після збою камерний воркер може перезапуститися, не блокуючи друк і черги; стан видно на сторінці «Система». Апаратне прискорення й ліміти з’єднань браузера й далі залежать від хоста.

Монітор стану для другого дисплея

Принтери й Черга — однакові плитки з порядком за увагою, ETA поточного друку чи черги. Авто вміщує 50 принтерів на Full HD за звичайного масштабу й без групування; на менших екранах є прокручування. Окреме авторизоване вікно або відкличний ТВ-токен лише для станів, без камер, назв завдань і керування.

Live-статус через WebSocket

Температури, вентилятори, шари, AMS і поточні роботи надходять через WebSocket. Обмежені резервні запити покривають пропущені оновлення; приховані вкладки призупиняють читання ферми й надолужують його при відкритті.

Пропустити браковану деталь, зберегти плиту

Одна деталь відірвалась на плиті з двадцяти — і звична відповідь це Стоп, який викидає решту дев'ятнадцять. BamDude показує плиту згори з номерованою позначкою на кожному об'єкті, розкладеною з власних pick-даних слайсера: клік — і скасовується лише ця деталь. Уже пропущені лишаються видимими, тож нічого не зсувається під курсором, а лічильник браку в архіві йде за рапортом самого принтера, а не за нашою командою.

Керування рухом, як у Studio

Кругла панель для голови з кільцями 10 мм і 1 мм та Домом у центрі, поруч - зазор сопло-стіл, а нижче ручна подача й ретракт із екструдером, намальованим власною графікою Bambu Studio. BamDude читає з принтера, які осі запарковані, а не вгадує, і не дає рухати холодний екструдер нижче 170 градусів - зістругати лиску на філаменті досить один раз.

Задавати температури, а не лише читати

Сопло, стіл і камера, обидва сопла на двосоплових машинах, із межами, які повідомляє саме ваш принтер. X1 на 220 В приймає нижчу температуру стола, ніж на 110 В, а стеля камери різна за моделями - тож число перед вами і є те, яке машина виконає. Нуль завжди означає «вимкнено».

Керування вентиляторами й повітроводом на кожному принтері

Швидкість кожного вентилятора, режим повітроводу й фільтрація, і кожен вентилятор підписаний так, як його називає саме ваша машина. Принтери, що взагалі не описують повітровід - P1S, P1P, X1C, A1 - раніше показували три числа лише для читання; тепер вони отримують ті самі робочі контроли, зібрані з того, що вони таки повідомляють.

Таймлапс більше не обіцяють принтеру, який його не запише

Галочка раніше йшла будь-якому принтеру - зокрема тому, у якому картки немає: запит летів у нікуди, а друк закінчувався без відео й без пояснень. Тепер машина, яка не може записати, називається просто при виборі принтерів, і саме з тією з трьох причин, яка є, а черга принтера, у якого скінчилось місце, стає на паузу замість тихо викинути запис. Принтери з внутрішньою памʼяттю чи таймлапс-кітом про картку не питають узагалі.

Дашборд багатьох принтерів

Картки змінного розміру, групування за локацією, перехід до принтера в один клік.

Прогрес друку у вкладці браузера

Опційно, на кожен браузер окремо. Заголовок вкладки несе відсоток друку, який завершиться найшвидше, а іконка вкладки стає кільцем прогресу в кольорі твого акценту — вікно, залишене на іншому екрані, саме розповідає, як справи на фермі.

Кастомні sidebar-посилання + drag-to-reorder

Адміни додають wiki / helpdesk / Grafana / посилання на зовнішні принтери прямо в сайдбар, scoped в одну з шести nav-груп (Operations / Workshop / Resources / Care / System / Links). Drag-and-drop reorder всередині групи або переміщення цілих груп як блоку — групування не зламаєш випадково.

Стрімінг камери

Live MJPEG і знімки, плюс опційно зовнішні RTSP/USB камери.

Область перевірки за контуром плити

Залиш прямокутник або намалюй полігон на вихідному кадрі камери, щоб виключити раму й фон. Рухай вершини чи редагуй координати без заміни калібрувальних знімків. Якщо перевірка полігона недоступна, звичайний друк призупиняється для огляду, а плита не оголошується порожньою.

Camera Wall

Перемкни сторінку принтерів у Cam wall або відкрий /camwall на настінному екрані. Спочатку плитки показують знімки; натисни одну, щоб увімкнути живе відео, і натисни ще раз для повернення до знімків. Невидимі плитки стають на паузу, а видимі зберігають останній вдалий кадр і показують час його отримання. Ліміт живих трансляцій залежить від протоколу браузера: дві для HTTP/1 або невідомого, до 16 для підтвердженого HTTP/2 чи HTTP/3. Оверлеї стану та бейджі HMS залишаються на плитках. ТВ без входу працює за токеном Стіни камер, який не розкриває адреси принтерів і назви друків.

Вбудована діагностика камери

Кнопка Diagnose на в'ювері камери проганяє поетапну перевірку — доступність мережі, тоді реальний захват першого кадру — і показує, який саме етап впав, з підказкою як полагодити, тож проблема 'камера не працює' вирішується на екрані, а не в тикеті підтримки.

Довготривалі токени камери

Випуск багаторічних токенів для Home Assistant / Frigate / kiosk-дашбордів замість 60-хвилинних на сесію. Три окремі області дії — потік камери, Стіна камер, оверлей для стріму — які ніколи не розширюють одна одну, тож токен, виданий на відео, не перелічить твою ферму й не прочитає, що на столі.

OBS-оверлей

Готова URL-адреса для OBS — статус, ETA, AMS прямо в стрімі. OBS не має сесії логіну, тож автентифікується токеном Оверлея для стріму — один принтер, і нічого більше.

Калібрування з UI

Bed leveling, vibration, motor noise, nozzle offset, high-temp - з вебу або з Telegram, model-aware.

Діалог налаштувань принтера

Паритет з Bambu Studio — переключай ~15 print-time поведінок з kebab-меню: AI failure-детекції з Low/Medium/High чутливістю (spaghetti, pile-up, clumping, air-print, first-layer, monitoring), FOD + displacement, filament-tangle, nozzle-blob, open-door check (Off/Pause/Halt), purify air (Off/Inside/Outside), auto-recovery, prompt sound, snapshot, save-remote, plate marker + alignment. Per-model гейтинг приховує те, що твій принтер не підтримує; кожна зміна аудитується в printer_setting_audit.

Розшифровка HMS-помилок

Перекладає коди Bambu в людську мову, з історією на принтер — і показує ті самі кнопки-фікси, що й екран самого принтера (Resume, Stop, Ignore & Resume, Stop Drying…), в один клік прямо на принтер.

Вентилятори повітроводу на P2S і X2D

Другий допоміжний вентилятор — комплект-доповнення на P2S, заводський на X2D — ніколи не приходить як звичайне поле швидкості, тож показати його було нічим. Тепер він з'являється власним бейджем зі своєю швидкістю, і цю швидкість можна задати просто з бейджа. Назви беруться з власних визначень принтерів Bambu Studio, тож та сама позиція читається як Left на P2S і Right на X2D.

AMS-керування

Конфіг слотів, перечитка RFID, load / unload прямо з картки принтера, діалог налаштувань AMS (паритет з Bambu Studio — авто-RFID при вставці/увімкненні, оцінка залишку, резервне копіювання філаменту, виявлення друку в повітрі, калібрування AMS, перемикання прошивки A1 FULL↔LITE, перевпорядкування AMS на H2D), графіки сушіння, моніторинг вологості.

Сказати AMS, що кілька котушок — одна

На кожен принтер окремо, типово вимкнено: принтеру можна наказати подавати вручну призначені котушки під одним канонічним кольором та/або Generic-профілем їхнього базового матеріалу — і прошивка групує їх для автопідміни. Змінюється лише те, що сказано принтеру: сама котушка, її колір, бренд і облік лишаються як були, маршрутизація й диспетч і далі звіряються зі справжньою котушкою, а RFID-котушок це не торкається взагалі. У діалозі AMS Backup з'являється дія «застосувати до призначених слотів» із попереднім переглядом і причиною на кожен слот, і та сама кнопка повертає слоти назад. Єдиний доказ, що група справді утворилась, — як і раніше, групи резервування, які повідомляє сам принтер.

Файловий менеджер принтера

Перегляд SD-картки та, на X2D / P2S / H2, вбудованого сховища - один перемикач між ними, і перелік, завантаження, прев'ю пластин, Save-to-Library та видалення працюють на обох. Save-to-Library промоутить голий .3mf у .gcode.3mf, коли байти вже зрізані.

Друк без SD-картки

Принтерам із вбудованим сховищем більше не потрібна картка, щоб отримати завдання: коли картки немає, файл їде у вбудоване сховище власним файловим каналом принтера. Вставлена, але нечитабельна картка друк усе одно зупиняє, а не обходиться стороною.

Таймлапси з того носія, який їх записав

Принтер повідомляє повний шлях запису, який щойно дописав, тож файл чіпляється на імʼя, а не як «перший, якого раніше не було». У вбудованому сховищі він до того ж називає друк, якому належить кожен запис, і відео потрапляє до потрібного архіву напряму, а не вгадується за часом.

Сховище принтера перестає заповнюватись саме собою

Один надісланий файл - це кілька файлів на машині: BamDude заливає модель, а принтер робить власну копію в кеші картки і, якщо так налаштовано, ще й у вбудованому сховищі. Очистка після друку тепер прибирає їх усі, на обох носіях, і перед видаленням звіряє вміст кожного файлу - таку саму назву лишає по собі друк, надісланий напряму з Bambu Studio, і його ніхто не чіпає. Таймлапси можна прибирати так само, щойно BamDude їх забрав, але це лишається вимкненим, доки не попросите.

Куди писати таймлапс - вирішуєте ви

На принтері, що має і вбудоване сховище, і картку, діалог друку пропонує вибір носія - той самий, що Bambu Studio ховає за іконкою теки. Вибір їде разом з елементом черги й перепитується про картку на старті друку: картку вийняли за той час - запис піде у внутрішнє сховище, а не впаде разом з друком. Завдання, надіслане зі слайсера на віртуальний принтер, зберігає вибір, зроблений у слайсері.

Оновлення прошивки по LAN

Витягує firmware з Bambu CDN, льотить на SD-карту принтера по LAN-mode FTP, застосування — з екрана принтера, без cloud-акаунту. Онови один принтер або всю ферму за раз: сторінка Firmware групує принтери по моделі, качає кожну прошивку один раз, льотить паралельно, пропускає принтери в друці й веде журнал оновлень. Довговічне локальне сховище тримає кожну версію (можна відкотитись навіть після того, як Bambu прибрав її). curl_cffi-імперсонація Chrome обходить Cloudflare JA3-гейт; stale buildId self-heal-иться.

Mobile / PWA-інсталяція

Встанови BamDude як PWA на iOS / Android / desktop — standalone-вікно, оффлайн app shell, share-target uploads (Android), push-нотифікації (HTTPS).

Сушіння AMS за розкладом

Почніть зараз, після затримки, у заданий час, коли принтер вільний, або у вибрані дні з необов’язковою межею старту. Потрібні AMS і принтер із дистанційним сушінням; на P1 керування лишається на екрані принтера.

Вибір сопел стійки H2C

Оберіть R1–R6 для кожної групи філаментів зі стійки в діалозі друку. Непридатні позиції пояснюють причину; є автоматичний вибір, а ручний перевіряється знову перед відправленням.

Черга принт-ферми

Окремі черги на кожен принтер з паралельним диспатчем, поетапним стартом і підтримкою SWAP-режиму.

Дроп пачки, а не одного файла

Скільки завгодно файлів на принтер, його чергу чи авточергу. Що не піде на друк — скаже чому, поіменно. Неперевірене або несумісне призначення блокує звичайне додавання; постановка на очікування потребує явного підтвердження. Для відсутньої цільової моделі в авточерзі є окрема дія збереження на майбутнє. Очікування може затримати наступні завдання на вибраному принтері.

Черга зберігає власний перевірений файл

Прийняте завдання отримує одну перевірену незмінну копію точних байтів у сховищі BamDude. SMB може від’єднатися, ноутбук — заснути, а початковий файл бібліотеки чи архів можна перемістити або видалити без зміни вже поставленої роботи. Однакові байти мають одну копію, доки її не відпустить останнє завдання черги; портативний backup несе копії, названі його знімком бази.

Копіювання черги на інші принтери

Та сама модель, вибір елементів і цілей. Копії зберігають плиту, замовлення, групування та правила подачі й кольору. Спільні відповіді задаються одним діалогом на групу; ручний мапінг перевіряється для цільового принтера, а налаштування каналів файлу відкривають наступний файл для перевірки.

Нагрузити чергу з бібліотеки

Переглядайте, відмічайте файли в різних теках, ставте пачкою. Показано лише те, що справді піде на цьому принтері.

Паралельний фоновий диспатч

Кілька принтерів отримують завдання одночасно - DB-фаза під startup-lock, FTP і старт паралельно.

Черги на принтер

Кожен принтер має свою впорядковану чергу зі станами idle/printing/paused/error.

Групування, drag-reorder і сорт за ETA

Приборкай довгу чергу: збери елементи в згортаний batch, тягни рядок за ручку щоб переставити, і сортуй сторінку Printers за ETA — принтер, що завершить наступним, зверху.

Поставити термінове завдання наступним

Познач «Поставити наступним» у діалозі планування, щоб ASAP-завдання стало перед очікуючими на вибраному принтері. Фізичний друк не переривається; вибрані плити лишаються разом, а Авточерга зберігає власний порядок.

Авто-черга (router)

Розподільник перевіряє точну модель і кожен використаний канал філаменту проти AMS, зовнішньої подачі та сопел принтера. Виберіть автоматичну подачу, лише AMS або лише зовнішні котушки; вимагайте точні кольори загалом чи для окремого каналу. Форма розділяє принтери з AMS, без AMS і з невідомим станом, показує сумісні та готові. Багатоколірний друк підтримується; кількість копій не послаблює правил. Готові принтери мають перевагу, для порядку є SJF і захист від голодування.

Друк на сумісних моделях принтерів

Перш ніж призначити нарізаний файл іншому принтеру, BamDude перевіряє сумісність моделей за даними Bambu Studio. Ручний вибір сумісної моделі показує попередження; Авточерга може за окремим перемикачем узяти готовий сумісний принтер, якщо готового принтера точної моделі немає. Перевірки сопла й філаменту залишаються чинними.

Перебалансування між моделями принтерів

Роботу рядка замовлення ділять між моделями принтерів у момент постановки - і раніше вона там і лишалась: якщо P1S звільнялись раніше, копії для X1C так і чекали у своїй купці. З увімкненим перебалансуванням вільні принтери іншої моделі забирають ще не розподілені друки рядка щоразу, коли так рядок завершиться раніше, а плити й кількості перераховуються під стіл тієї моделі: плита на 6 деталей стає трьома друками по 2 на mini, дві деталі - одним друком на більшому столі з надлишком не більше однієї плити. Типово вимкнено; кнопка на рядку й панель авточерги запускають його на вимогу. Друки, вже віддані принтеру, заплановані, поставлені на ручний старт, прив'язані до слотів або локації, не рухаються ніколи.

Брак там, де стоїть оператор

Брак колись вводили в одному місці - в редакторі архіву, за три екрани від плити. Тепер кожна картка завершеного друку на сторінці замовлення показує, що зійшло з плити і скільки пішло в брак, і пропонує «Брак…»; на картці принтера лічильники завершеного друку стоять поруч із «Очистити стіл» і «Повторити», і будь-яка з відповідей несе їх із собою; у Telegram повідомлення про завершення пропонує «Брак…», а обидві відповіді на стіл ведуть до підказки «один тап на деталь». Статистика отримує «Брак по принтерах» - надруковано, брак і частку. Друк, який уже зарахували у вільний залишок, отримує поправку полиці, коли брак записали пізніше, - в обидва боки, з рядком у журналі залишку.

Кількість, яка каже, що означає

Число в діалозі друку означало «на кожен вибраний принтер» - три принтери по 4 давали дванадцять друків, а поле казало чотири. Тепер рядок під полем каже, що буде надруковано, а перемикач пропонує «На кожен принтер» або «Загальна»: загальна розкладається по колу між вибраними принтерами в порядку списку, 13 на три стає 5 / 4 / 4, і рядок називає, кому скільки. Вибір запам'ятовується у браузері; кількість в авточерзі завжди була загальною.

Авто-пауза на провалі

Принт упав - черга цього принтера зупиняється, ти вирішуєш що далі.

Cancel під час диспатчу = pause (не error)

Скасування під час вікна upload/start ставить чергу в paused (а не error), а елемент — у cancelled (а не failed): нічого не падало, ти просто передумав. Кнопка Restart на cancelled-елементі повертає його в кінець черги одним кліком.

Поетапний старт

Обмеж паралельне нагрівання на фермі - окремо на кожну фазу чи цех, якщо розбити ліміт за тегами чи розташуванням принтерів, а групі, якій треба, дай власний ліміт; watchdog температури столу не дасть просадити мережу.

Повторний друк із призначенням філаменту

Повторний друк обраної плити з поточними AMS або зовнішніми котушками цільового принтера. Правила подачі й кольору зберігаються; фізичні слоти перевіряються заново для іншого принтера. Призначення повторно перевіряється безпосередньо перед запуском.

Swap-режим (A1 swappers)

Вбудована підтримка Kit / STL / JobOx плейт-свопперів через макроси.

G-code макроси з ACK

Запуск макросів з картки принтера - MQTT-підтвердження виконання, статус у real-time.

Quick vibration check toggle

Тоглер на завдання, що коментує M970 у gcode 3MF і перераховує MD5-сайдкари.

Інжекція G-code на друк

Бібліотека сніпетів на модель принтера; тоглер Inject G-code на завдання вставляє start/end-сніпети прямо в gcode плити.

Налаштування слайсингу

Збережи налаштування слайсу один раз — printer + process + filament preset на слот + тип столу — і підставляй усі чотири в діалог Slice одним вибором замість того, щоб обирати їх заново. Пресет, який відтоді видалили, ніколи не підставляється мовчки: слот залишає свій автопідбір і потрапляє в попередження, тож ти не наріжеш тим, чого не обирав. Друк партії — робота авто-черги, а не pipeline.

Прогрів і heat-soak

Тримає стіл — а на принтерах з камерою й камеру — на температурі перед стартом друку інженерним філаментом: soak, потрібний ABS / ASA / PA / PC, на який firmware Bambu не чекає. Ціль камери виводиться per-print з типів завантажених філаментів AMS (редагована мапа), а три апаратні tier'и обробляються автоматично — активний нагрівач M141 (серія H2 / X2D / X1E), radiant-очікування лише з сенсором (X1C / P2S) чи таймер soak (P1S / A1). Вимкнено за замовчуванням, з per-print override у діалозі друку.

Архів друку

Кожен друк зберігається локально з оригінальним 3MF і повними метаданими. Шукається назавжди.

Автоматичне 3MF-архівування

Кожен принт із метаданими, прев'ю, gcode-хешем і runtime-даними.

3D-перегляд (Three.js)

Інспект кожної плити в браузері - multi-color прев'ю до реприну.

Іконка build-plate на картках архіву

Кожна картка показує OrcaSlicer-style bed-іконку поряд з назвою принтера/моделі — відображає плиту, під яку нарізали 3MF (Cool / SuperTack / Engineering / High Temp / Textured PEI / Smooth PEI). Hover-тултіп містить повну назву — щоб не відкривати source 3MF у слайсері просто щоб подивитися bed setting перед reprint-ом.

Повнотекстовий пошук + dedup

Source-hash chain-of-custody - патчені файли (M970-disabled) дедуплікуються правильно.

Фото і нотатки

Прикріплення фото фейлів, постобробки, вільні нотатки на архів.

Side-by-side порівняння

Порівняння 2–5 принтів (налаштування, пластик, час, вага) в одному вигляді.

Timelapse-редактор

Trim, speed, музика - готовий ролик з сирого камера-фідного матеріалу.

Авто-очистка з retention

Видаляй .3mf через N днів простою, метадані / прев'ю / енергія / нотатки залишаються.

Корзини бібліотеки + архіву

Soft-delete з вікном відновлення, scheduled-retention і reference-aware-видалення, що відмовляється стирати байти, на які ще посилається активний архів.

Фільтри Друкувалось / Не друкувалось

Чіпи на сторінці архіву ділять перші друки і реприни — швидкий шлях знайти файли, що ще не йшли на друк.

Великі файли теж архівуються

3MF друку читається назад через ту саму SD-картку, з якої друкує принтер, тож іде повільно — 22 МБ заміряно у понад вісім хвилин на зайнятому P1S. FTP-таймаут тепер обмежує застрягле зʼєднання, а не всю передачу, тож велика плита приземляється повністю, а не порожнім рядком без мініатюри, 3D-прев'ю і метаданих.

Recovery 3MF-завантаження

FTP впав на старті? Retry на старті системи, реконекті, кінці друку, або вручну.

Зберегти надрукований файл назад у бібліотеку

Обери теку — і 3MF з архіву читається так само, як завантаження: з метаданими, мініатюрою, деталями по плитах і бейджами. Зберегти той самий друк удруге не створює другу копію: бібліотека впізнає вміст і лишає ту, що вже є.

Дашборд аналізу фейлів

Ретроспективна аналітика по архіву — failure rate за принтером, матеріалом, часом доби, тривалістю друку. Drill у конкретні архіви в один клік.

Експорт CSV / XLSX

Bulk-експорт відфільтрованих архівів і статистики під білінг, QA-логи чи BI. UTF-8 BOM CSV, multi-sheet XLSX.

Виправити вагу філаменту архівного друку

Редагуйте витрату філаменту в грамах, зокрема коли 3MF не вдалося відновити. Її читають статистика, вартість і показники замовлення; ця правка не списує нічого з котушок.

Бібліотека файлів

Завантажуй, організовуй, друкуй напряму - без додаткового кола через слайсер.

Той самий файл не зберігається двічі

Кожен шлях, яким файл може прийти, спершу звіряється за хешем — завантаження, дроп, API, імпорт виробу, ваш слайсер і підключені теки на NAS.

Upload + папки

Drag-and-drop структура з detection дублікатів за хешем.

Галерея на плиту

Мульти-плейт 3MF показує кожну плиту з власною статою, пластиком, списком об'єктів.

STL-прев'ю

Рендериться при завантаженні - бачиш деталь, а не назву файлу.

STEP-прев'ю

STEP і STP теж отримують зображення форми - його у фоні робить ядро Open CASCADE, після нарізаних файлів і STL-прев'ю. Завелика чи не повністю прочитана модель пояснює, чому, замість показувати пів деталі. Docker-образ і Windows-інсталятор несуть CAD-компонент; на нативній установці - на твій вибір.

Зовнішні папки

Підмонтуй NAS-шару чи USB-диск read-only прямо в бібліотеку.

Друк напряму або в чергу

Файл → принтер (filter за моделлю) → Print Now або Add to Queue.

Запланувати ціле виділення

Познач будь-яку кількість нарізаних файлів і натисни Schedule: звичайне вікно планування відкриється для першого з позначкою 1/3, потім для наступного. Кожен файл зберігає повний набір виборів — принтери чи авто-черга, плити, мапінг філаменту, опції, кількість, час старту. Закрий будь-коли — те, до чого не дійшло, лишається виділеним.

Label-objects метадані

Skip-objects підтримка визначається при upload - кнопка вмикається лише коли слайсер реально це підтримує.

Імпорт з MakerWorld за URL

Встав посилання на модель з MakerWorld, обери плиту — BamDude скачає 3MF прямо в бібліотеку. Бейдж походження тримає лінк на оригінал.

Вкладка MakerWorld History + per-variant dedupe

Server-paginated 4-колоночна сітка усіх MakerWorld-імпортів з локально-кешованими обкладинками, пошуком по filename/title/author, сортуванням за датою/назвою/автором і per-variant 'already imported' бейджем плюс one-click deep-link View-in-Library на resolve-прев'ю — нікого не платиш за дубль-скачування.

MakerWorld Re-download

Автор пушнув update? Re-download перезаписує 3MF-байти + обкладинку + метадані на місці. library_file_id стабільний, тож елементи черги, project-link'и і архіви далі резолвляться на той самий рядок.

Метадані дизайну з MakerWorld

Назва, автор, ліцензія, sliced-for-принтер, повний список сумісності, матеріали, AMS-вимога і deep-link на оригінал — все пишеться в дочірню meta-таблицю на імпорті і драйвить History-сітку.

Серверний слайсинг

Кидай STL/3MF у контейнерний OrcaSlicer чи BambuStudio sidecar і отримуй готовий .gcode.3mf, не виходячи з апи.

Перенарізання під будь-який принтер

Перенаріж збережений 3MF під іншу модель — навіть через клас сопла (одне ↔ два сопла H2D/H2C/X2D). Обери цільовий профіль, і BamDude переставить об'єкти під новий стіл; «нарізати всі плити» зливає multi-plate проєкт в один файл.

Зберегти налаштування друку дизайнера

Моделі з MakerWorld часто свідомо відходять від стокового профілю — п'ять стінок, 100% заповнення, перший шар 0.1 мм, — і перенарізання раніше викидало все це. Тепер діалог Slice перелічує рівно ті параметри, які змінив автор, із чекбоксом на кожен: задум дизайну позначений, підлаштоване під машину (швидкості, прискорення, температури) — перелічене, але ні. Цей перелік у 3MF записує сам Bambu Studio, тож нічого не вгадується.

Slicer Preset Bundles (.bbscfg)

Імпорт BambuStudio Printer Preset Bundle один раз і подальше посилання на triplet'и (printer + process + filament) по імені — повністю обходить cloud / local / standard tier-резолюцію. Idempotent re-upload з ключем по hash; per-bundle Settings-панель з видаленням.

Per-user Bambu Cloud

Кожен користувач логіниться у власний Bambu Cloud-акаунт зі своєю регіональною зоною — без спільних кредів, без single-region lock-in. Токени Fernet-шифровані, sliding refresh, OIDC-style flow.

Синк і пуш профілів Orca Cloud

Одне парування device-кодом — під власною зареєстрованою ідентичністю BamDude, тож картка підтвердження називає того, хто справді питає — і твої синхронізовані профілі принтерів / процесів / філаментів з'являються у slice-діалозі та пікері AMS-слотів, вище за Bambu Cloud, локальні та стандартні. Повні метадані одразу, тож тип і колір філаменту підставляються безкоштовно. Авторські сім'ї філаменту пушаться назад в Orca Cloud, з явним вирішенням конфліктів, коли профіль змінили у хмарі. Per-user токени, just-in-time refresh.

Локальні OrcaSlicer-пресети

Кидай .orca_filament / .bbscfg / .bbsflmt / ZIP-бандли напряму — BamDude резолвить inheritance пресетів з upstream OrcaSlicer. Cloud-free шлях для шопів без Bambu-акаунтів.

Надрукований файл можна повернути в бібліотеку

На прохання користувача. Обираєте теку — і 3MF архіву копіюється туди, прочитаний так само, як при завантаженні: з метаданими, тамбнейлом, поплитними даними й бейджами, а не безіменним файлом. Зберегти той самий друк двічі не створює другої копії: бібліотека впізнає однаковий вміст, лишає наявний і каже про це.

Підготовка файлів має власну панель стану

Завантаження й сканування підключених тек готують метадані 3MF у керованому локальному воркері. Повільне читання не блокує вебсервер; Система показує підготовку файлів окремо від прев’ю моделей, камер і аналізу філаменту.

Telegram-бот

Повноцінний бот для керування і черги. Мультичат із ролями.

Повне керування принтером

Пауза, відновлення, стоп, лампа, швидкість, знімок - все з чату.

Пропустити об'єкт прямо з чату

Бот надсилає плиту, знято згори, з номерованою позначкою на кожній деталі й клавіатурою з тих самих номерів. Натиснув, підтвердив за назвою — і решта плити друкується далі. Позначки розкладає той самий код, що й у браузері, тож номер означає ту саму деталь в обох.

Кнопки керування під знімком камери

Смикнув знімок, побачив, що друк іде в повітря, і відреагував у тому ж повідомленні. Пауза, відновлення, стоп і пропуск деталі приходять разом із фото — і з кнопки, і з /camera. Без VPN і без браузера. Стоп перепитує.

Надіслати файл боту

Кидаєш 3MF у чат — він потрапляє в бібліотеку з тими самими перевірками, мініатюрами й виявленням дублікатів, що й веб-завантаження, і одразу пропонує надрукувати або поставити в чергу.

Мультичат із ролями

Кожен Telegram-чат отримує роль з гранулярними правами на ресурс.

Actionable-кнопки

Clear plate, відмітити обслуговування, pause/stop на прогресі - прямо з нотифікації.

Print from Library

Огляд файлів, вибір принтера (за моделлю), Print Now або Add to Queue.

Керування чергою

Пагінований список, деталь, move up/down, скасування - з MarkdownV2-форматуванням.

Add Printer через SSDP

Вводиш IP → бот авто-знаходить serial/name/model → access code → готово.

Калібрування з чату

Запуск bed leveling, vibration, nozzle offset, motor noise, high-temp.

Quiet hours на чат

Daily digest, фільтр подій, quiet-hour вікна - окремо на кожен чат.

Нотифікації

Вісім каналів, один редактор, одна конфігурація маршрутизації.

Вхідні в застосунку — ще до будь-якого каналу

Кожна подія ферми — провалений друк, скінчений філамент, тривога AMS, проблема з чергою, сенсор за межею — потрапляє у дзвіночок на бічній панелі, у вхідні кожного, хто на неї підписаний: живий лічильник непрочитаних, прочитане/непрочитане окремо в кожного, фільтри за рівнем, принтером і періодом. Вони наповнюються навіть на фермі, де не налаштовано жодного зовнішнього провайдера, — у цьому й суть: тривозі про залізо раніше не було куди подітись, поки хтось не підніме бота чи поштовий сервер. Кожен обирає свої події, за замовчанням — лише попередження й помилки; термін зберігання історії — налаштування ферми, 30 днів із коробки. Перемикачі пошти на користувача, які раніше й були всією сторінкою нотифікацій, тепер — одна вкладка всередині центру.

10 каналів доставки

Telegram, Discord, Email (SMTP), Pushover, ntfy, Bark, CallMeBot, Signal CLI API, Home Assistant, кастомні webhooks.

Скоуп принтерів на кожному каналі

Всі, один чи кілька принтерів — на провайдер і на Telegram-чат, де скоуп обмежує й самого бота: списки принтерів, камери, чергу та керування. Чат адміна бачить всю ферму, чат напарника на тому ж боті — лише свої машини.

Проміжний прогрес лише для довгих друків

Глушіть повідомлення 25/50/75% для друків, коротших за N хвилин — по-чатово і по-провайдерно: чат, якому цікаві й півгодинні джоби, і чат лише для нічних друків співіснують на одному боті.

Bark — для збою о третій ночі

Безкоштовний iOS-застосунок для push, узагалі без акаунта: встанови, встав device key. Його рівень Critical доставляється крізь Silent mode і крізь Focus, тож друк, який став уночі, справді когось розбудить; Time Sensitive пробиває заплановані зведення, не заходячи так далеко. Публічний релей або власний bark-server.

Опції push для Home Assistant

Поле Data (JSON), яке йде просто у виклик сервісу — туди ж, куди його кладе автоматизація: priority: high і ttl: 0, щоб приходило негайно, а не коли телефон наступного разу прокинеться, channel — щоб алерти принтерів мали власний звук. Перевіряється при збереженні й ще раз при надсиланні.

Редактор шаблонів MarkdownV2

Тулбар форматування, шаблон на подію, live-прев'ю до збереження.

Фото на завершенні друку

Знімок камери в нотифікацію успіху, з деталями використання пластику.

HMS + bed-cooled алерти

Сповіщення при HMS-помилці або коли стіл достатньо охолов щоб зняти деталь.

Події черги

Нотифікації waiting / skipped / failed - лише ті події, які хочеш бачити.

Пріоритет ntfy на подію

Окремий ntfy-пріоритет (default / high / urgent) для кожного типу подій — щоб успіх не верещав, а провал кричав.

Pause / Resume з класифікованою причиною

Переходи RUNNING↔PAUSE генерують окремі нотифікації з нормалізованою причиною (двері / філамент скінчився / presence-check / G-code pause / AI defect / об'єкти на платі / user / HMS-other) і лічильником paused-for на resume. Картки принтерів показують живий PauseChip з тією ж причиною + mm:ss-таймером під час паузи — щоб з одного погляду було видно чи оператор вже в курсі.

Замовлення і вироби

Що замовили і кому, з чого зроблений кожен виріб і що друкувати далі, щоб його закрити.

Замовлення - це список того, що попросили, а не тека з файлами

Кожен рядок - це виріб × кількість: для якого замовника, за яку ціну, з датою і пріоритетом на самому замовленні. Матеріал у рядку - жорстка вимога, колір - лише підказка поруч. Прогрес рахується в готових одиницях із деталей, які друки справді дали, а найдефіцитніша деталь одразу каже, скільки одиниць можна зібрати вже сьогодні. Замовники - окремий список: усі замовлення людини й підсумки по них. Замовлення й далі несе обкладинку та посилання на MakerWorld, Printables чи репозиторій.

Виріб описує, як його зроблено

Які друковані й куповані деталі складають одну одиницю і які нарізані плити їх дають. Прив'язка файлу бібліотеки або цілої теки заповнює плити й деталі сама, з того, що лежить усередині файлу: назва об'єкта, якої виріб ще не знав, стає його деталлю. Вихід плити не кешується, а перечитується щоразу, тож переслайсований файл дає інший вихід, а не застаріле число. Один виріб живе в багатьох замовленнях, і саме виріб і є шаблоном - окремих шаблонів, які треба тримати в синхроні, більше немає.

Кожна деталь має власну картинку

Кожна друкована деталь виробу отримує картинку, яку сервер рендерить із нарізаного G-code в кольорах її філаменту - не всю плиту, а саму деталь. Для деталі з кількох плит можна вибрати потрібний екземпляр, а будь-якій деталі - поставити власне фото. Картинки стоять поруч із назвами деталей у виробі, у рядках і плані замовлення, на складі й у видачі, а образ Docker та інсталятор Windows несуть закріплений Node.js, потрібний рендеру.

«Що друкувати далі» - пораховано для кожного рядка

Під кожним рядком стоїть план: плити, які закрили б те, чого ще бракує, відсортовані за придатними деталями на годину, із відніманням усього, що вже надруковано, друкується, стоїть у черзі чи взяте зі складу - тож наполовину відправлений план більше не просить того, що вже відправлено. У кожному рядку - час, пластик і собівартість на один друк поруч із кількістю, яку можна змінити, а надлишок і підсумки йдуть за цим числом просто під час набору. Один рядок їде в авточергу, увесь план - одним натиском, або звичайний діалог друку ставить рядок на конкретний принтер. Перед постановкою перевіряються справжня плита й усі використані канали; обраний файл, кількість і рядок замовлення зберігаються.

Дві моделі принтерів, два файли, один план

Деталь, нарізана під дві машини, - це два файли бібліотеки з однаковим виходом, і план, який вибрав один із них, робив другий невидимим для половини ферми. Тепер у кожному рядку є перемикач файлу з підписом моделі принтера, під яку його нарізали: вибір переобчислює час, пластик і собівартість рядка, а кількість лишається на місці. «Розділити між файлами» ділить кількість одного рядка між ними - авточерга розводить кожен елемент за моделлю, яку називає його файл, тож так можна розподілити роботу одного рядка між моделями принтерів; поділ, який не сходиться в суму, не відправиться зовсім, а не відправить тихцем не те.

Друк, запущений звідки завгодно, лягає під замовлення, якому він потрібен

Друк або постановка файлу в чергу - із файл-менеджера, з картки принтера, зі сторінки черги чи з авточерги - показує поле «Замовлення»: відкриті замовлення, яким цієї плити ще бракує, скільки друків кожному бракує й для якого виробу, і перше з них уже обране. Нічого не обрали - нічого й не підшилось. Друк, запущений з екрана самого принтера, підшивають постфактум зі сторінки замовлення, а плита, що несе деталі двох виробів, годує кожен рядок, якому вона підходить, а не лише перший.

Зайві деталі лягають на полицю, а не в кошик

Плита дала чотири кришки, а замовленню треба було три. Кнопка «Списати надлишок у залишок» переносить четверту кришку у вільний залишок свого виробу: скільки цілих комплектів на полиці, баланс кожної деталі й журнал того, як кожна туди потрапила. Друк, що завершився без замовлення, зараховується сам, а якщо потім підшити його під замовлення - зарахування заберуть назад. Найбільше це дає при повторному замовленні того самого виробу: «Зі складу» резервує комплекти під рядок, і потреба, прогрес і план рахують їх як зроблені - рядок, закритий із полиці, не просить жодного друку.

Готова продукція й вільні деталі в одному розділі

«Склад» — окремий розділ під «Проєктами». Позиція готової продукції показує кожну конфігурацію виробу: наявність, резерв, доступну кількість і мінімум. Одиниці можна прийняти, перерахувати, зібрати з вільних деталей, зарезервувати під замовлення та видати з пронумерованою накладною. Вільні деталі мають власну полицю й кількість комплектів за конфігураціями; журнал гортає рухи обох книг сторінками.

Браковані деталі віднімаються від замовлення

Замовлення на сорок придатних деталей не закрите тому, що сорок зійшло з плит. Пропуск об'єкта під час друку сам відносить брак на ту деталь, а редактор архіву дає позначити, які саме деталі вийшли поганими, замість одного числа на всю плиту. Замовлення рахує те, що лишилось.

Картка моделі весь час лежала всередині 3MF

Опис, автор, ліцензія, звідки модель, картинки, специфікація й інструкція зі складання, які поклав дизайнер, - виріб читає це все з будь-якого прив'язаного файлу і ніколи не пише жодного байта назад у файл бібліотеки. Картинки стають галереєю, яку можна перевпорядкувати й розгорнути на весь екран, а одна з них - обкладинкою виробу. А сам виріб експортується в ZIP - картка, склад, вкладення, обкладинка й усі прив'язані файли - й інший BamDude його імпортує, впізнаючи наявні файли за вмістом, а не дублюючи їх.

Повторне замовлення в один клік

Дублювання замовлення переносить рядки, замовника, ціну, нотатки й вкладення під новою назвою і відкриває копію активною. Історія з ним не їде ніколи - вона лишається з друками, які справді були, - а повторне замовлення нічого не резервує зі складу, бо копія не має тихо спорожнювати полицю.

Каталог конфігурацій

Товари мають SKU, версії, категорії та групи варіантів. Рядок замовлення зберігає обрану конфігурацію; готовий склад і накладні теж вказують її.

П’ять виглядів замовлень, один процес

Картки, таблиця, канбан, робочий простір і дедлайни показують ті самі замовлення. Етапи, відповідальні, підрахунок контролю якості й прогноз готовності допомагають визначити пріоритет; неповний прогноз пояснює, чого бракує.

Додати файл бібліотеки до замовлення

Відкрийте «Додати до замовлення…» з файлу або галереї плит, оберіть активне замовлення й створіть разовий рядок із уже вибраним файлом. Замовлення, Товари, Замовники й Склад мають окремі права.

Резервування окремих складських деталей

«Взяти зі складу» резервує окремі деталі, навіть коли немає повного комплекту. План просить лише відсутні компоненти; оприбуткування поєднує резерв і надруковані деталі без повторного зарахування складу.

Планування збереженого відсотка запасних деталей

Друковані деталі BOM можуть додавати відсоток запасу з округленням угору один раз на рядок замовлення. Рядок зберігає своє налаштування після зміни каталогу. Базовий склад комплекту не змінюється; додаткові деталі плануються, оприбутковуються й видаються окремо, а замовлення із замовником мають видати їх до закриття.

Котушки й філамент

Облік пластику - від котушки на полиці до грама в друку.

Вбудований інвентар

Додавай котушки з виробником, кольором, вагою, ціною; призначення слоту AMS на принтер.

Масові дії на вкладці Філаменти

Познач потрібні котушки - рядок, цілу групу, видиму сторінку або все, що збігається з поточним фільтром - і зроби редагування, друк етикеток, скидання витрат, архівування, відновлення чи видалення одним заходом. Однаково працює у вбудованому режимі та в режимі Spoolman. Руйнівні дії спершу перепитують, а виділення саме скидається при зміні фільтра чи вкладки, тож масове видалення не прилетить на рядки, яких ти вже не бачиш.

Авто-облік витрати

Пластик з принта віднімається з призначеної котушки - без ручного підрахунку.

Журнал списань усієї ферми - одним списком

Режим History поруч із Table і Cards: усі записи списань, які є - що друкувалось, з якої котушки, на якому принтері, скільки грамів і скільки коштувало. Пошук, фільтри за принтером, матеріалом, брендом, статусом, діапазоном дат чи станом самої котушки, сортування за будь-якою колонкою і пагінація - усе рахує сервер, тож рік друку не коштує браузеру нічого. Підсумок рахується по всьому фільтру, а не по сторінці на екрані, тож дізнатись, скільки коштував місяць - це один діапазон дат. Котушки, які ти заархівував чи видалив, зберігають свої рядки - позначені, а не сховані: їхні грами все одно були надруковані.

Ціна і lot-номери

Ціна на котушку, дата покупки, діаметр, lot-номер для пакетів.

Spoolman: синхронізація + повноцінний інвентарний UI

Двостороння синхронізація з Spoolman, якщо інвентар уже там ведеться. Плюс повний BamDude-сторінковий інвентарний flow на Spoolman-mode інсталах: структуровані slot-присвоєння на (printer, AMS, tray) переживають рестарт, K-профайли по котушці їдуть між інсталами BamDude, що ділять один Spoolman, а колонка storage_location видна на кожній картці.

Каталог кольорів

Розпізнавання назв з урахуванням виробника (Bambu виграє для співпавшого hex).

Градієнти багатоколірного пластику

Dual-Color котушки рендеряться як hard-split смуги (а не плавний blend), Multicolor — як conic-gradient color-wheel, gradient залишається 135° linear blend, а Sparkle / Wood / Marble / Glow / Matte / Silk overlay-и видимо малюються на картках. У формі котушки live-preview, тож ефект видно до збереження.

Малюйте власні наліпки для котушок

Наліпка — це список коробок із координатами в міліметрах, а не макет, вшитий у код, — тож ви малюєте її мишею в Налаштування → Філамент → Маркування. Текст, QR, штрихкод (EAN-13, Code 128, Code 39, EAN-8, UPC-A, ITF) і блок кольору котушки прямокутником, колом чи скругленим прямокутником. Вміст пишеться плейсхолдерами — {brand}, {remaining_pct}, {deeplink} — тим самим словником, що й ваше налаштування назви котушки. Коробки прилипають одна до одної та до країв і центру наліпки, а картинка посередині — не малюнок вашої наліпки: її віддає той самий рендерер, що робить файл на друк, тож ви бачите саме те, що вийде. Дизайни, які йдуть із BamDude, — це початкова точка, яку можна перемалювати, а не фіксований набір.

Будь-яка наліпка на будь-якому папері

Аркуші — окрема від дизайнів річ: аркуш заявляє розмір сторінки, сітку, поля й проміжки — і нічого про те, що буде в комірці. Тож ви обираєте папір, а потім дизайн: по одній наліпці на сторінку, макет Avery або власну геометрію, яку самі виміряли, на A4, A5 чи US Letter. Прев'ю сторінки розкладає дизайн по всіх комірках до того, як щось потрапить на клейку основу; сітку, що виходить за межі паперу, не дадуть зберегти; а дизайн, завеликий для комірки, показується неактивним із обома розмірами, а не стискається тихцем — наліпка, стиснена «щоб влізло», більше не сканується.

Друк на принтері етикеток біля вас

Сервер у контейнері не дістане до USB-принтера на чиємусь комп'ютері, тож BamDude і не пробує: він малює наліпку, кладе в чергу, а застосунок BamDude Bridge на тому комп'ютері приходить і забирає. Нічого не виставляється назовні й жоден порт не відкривається. Дизайни заявляють, для якого типу принтера намальовані: блок кольору пропонується там, де друк іде як PDF і може потрапити на струменевий чи лазерний, і не пропонується там, де однобітна термоголовка його ніколи не надрукує. Принтер, у якому заряджена стрічка менша за дизайн, каже про це до того, як ви його натиснете.

Copy Spool — дублювати котушку

Дублює котушку в один клік: попередньо заповнює форму всім окрім weight_used (скидається в 0). Вихідний рядок не чіпається; нова отримує власний id. Працює і в локальному, і в Spoolman-режимі.

Pre-load призначення (зважив-призначив до завантаження)

Призначай свіжу котушку в слот AMS до того, як завантажиш філамент. Призначення зберігається одразу; printer-side конфігурація auto-fire-ить в момент, коли слот стає завантаженим (триггер — AMS load-state, тож сторонні котушки без читабельного RFID теж тригерять replay). Тост чесно каже, що конфігурація pending, а не бреше про success — firmware Bambu тихо відкидає filament-setting команди для незавантажених слотів.

Призначення повних котушок зі складу при завантаженні

Увімкніть для потрібного принтера й виберіть точну групу філаменту у вбудованому інвентарі. Вставлення нової повної котушки без RFID у порожній слот AMS призначає найраніше додану придатну невикористану котушку; RFID і ручне призначення мають пріоритет. На зовнішньому тримачі потрібні підтверджений runout і ваше відновлення друку. Стару часткову котушку після runout спершу призначте вручну.

Прогноз запасів + Логістика

Реорда-інтелект на рівні SKU, побудований на реальній історії витрати. Експоненційно зважений темп (період напіввитрати 30 днів), 95%-довірчий запас безпеки, прогноз днів-до-нуля, дата повторного замовлення, топ-5 stacked-area діаграма з ROP-маркерами. Інлайн-редактори lead-time, запасу безпеки (дні|грами), снуз сповіщень. Список покупок проводить SKU через pending → purchased → received і автоматично створює stock-котушки при отриманні. Нові перемикачі сповіщень для замовлень і ризику закінчення (наразі лише UI). Прихована в режимі Spoolman.

Сім'ї філаментів — як у слайсерах

Одна ідентичність за кожним філаментом: вбудований каталог, дистильований з Bambu Studio та OrcaSlicer, плюс ваші хмарні пресети, віддзеркалені у фоні. Котушки, слоти AMS, K-профілі та нарізання ключуються на сім'ю — кастомний філамент нарешті знаходить власну калібровку, а не сплющується на Generic.

Створіть власний філамент і пушніть у Bambu Cloud

Виробник + тип + серія, точно як у діалозі Create Filament у Bambu Studio, з сумісною ідентичністю і пресетом на кожен відмічений профіль принтера. Пушніть у свій Bambu-акаунт — десктопний слайсер побачить його на наступному синку; або створіть із вкладки Bambu Cloud, і він народиться просто у хмарі.

Runout закриває книги рівно в нуль

Runout філаменту - єдиний момент, коли реальність повідомляє точну цифру: 0 г. BamDude ріже друк по runout-шару між витраченою котушкою та її заміною (пошарова G-code-точність, включно з автоперемиканням AMS і заправкою в той самий слот), а потім закриває витрачену котушку рівно на вазі етикетки - дрейф більше не накопичується. Застрягання ніколи не сприймаються за runout, нотифікація підказує призначити заміну, а картка принтера показує «філаменту вже» наживо під час друку.

Категорія + low-stock на котушку

Тегай котушки за категорією (PETG / ABS / TPU…) і перевизначай глобальний low-stock поріг на конкретній котушці.

Архівувати котушку після підтвердженого runout

Необов’язковий, типово вимкнений перемикач архівує котушку після закриття runout і переходу принтера на резервну або замінну. Працює з вбудованим інвентарем і Spoolman; повторно вставлена для продовження друку котушка лишається активною.

Використати решту аркуша етикеток

Вкажіть першу вільну етикетку на частково використаному аркуші. Перша сторінка починається з неї, наступні — з початку; етикетки зберігають розмір макета.

Сортування згрупованого філаменту

Заголовки впорядковують групи й котушки всередині за ID, лотом, датою придбання, розташуванням, вагою етикетки, нетто й відсотком залишку. Групи сортуються до пагінації; вагові колонки груп беруть суми.

Калібрування філаменту

Вбудований майстер калібрування з паритетом Bambu Studio — жоден інший софт для керування Bambu не проганяє калібрувальні тести за тебе.

Покроковий майстер калібрування

Відкривається з kebab-меню будь-якої картки принтера: Pressure Advance (PA Line / PA Pattern / PA Tower), вежі Temperature / Volumetric Speed / VFA / Retraction, і двопрохідний тест Flow Rate — усе крок за кроком, з паритетом Bambu Studio. Lidar-driven Auto калібровка викочується окремо. Сусідня модалка Calibration History показує кожен збережений результат.

Нарізка під твої власні пресети

Не фіксований, заздалегідь нарізаний 3MF. Для кожного режиму майстер ріже скаффолд-геометрію під твої активні пресети принтера / процесу / філаменту через підключений сайдкар OrcaSlicer чи Bambu Studio — точно як BS-desktop wizard — спершу застосувавши per-mode preset-оверрайди (wall loops, line width, spiral mode, initial-layer speed). Нарізаний 3MF FTP-иться на принтер і друкується як звичайний друк через нормальний dispatch — тож плате-чейндж макроси і MQTT-дії на світло спрацьовують і для калібрувальних друків.

Pressure Advance — end to end

PA Line / Pattern / Tower зведені slice → FTP → друк → діалог збереження → K-профіль. Gcode гребеня + K-цифр PA Pattern і нумерований стек рядів PA Line регенеруються під власні start/end/step оператора через Python-порти BS-функцій `CalibPressureAdvancePattern::generate_custom_gcodes` / `CalibPressureAdvanceLine::print_pa_lines`. Виміряне K пишеться у калібрувальний рядок, пушиться в 16-слотову K-профіль історію принтера по MQTT і біндиться до AMS-слота, тож наступний друк використає його автоматично.

Вежі Temperature, швидкості, VFA та Retraction з калькулятором результату

Вежа Temperature опускає сопло на 5 °C кожні 10 мм бенду (старт/кінець підставляються під матеріал завантаженого філаменту); вежі Volumetric Speed і VFA розганяють швидкість зовнішньої стінки вгору по спіральній вежі; вежа Retraction подовжує ретракт кожен 1 мм висоти по двостовповому тесту на стрінги. Пошаровий рамп пост-патчиться у нарізаний g-code — це GUI-only прапорець движка, який сайдкар не несе. Це тести «надрукуй і подивись оком», тож фінальний крок дає калькулятор: вводиш виміряну висоту, BamDude застосовує per-mode формулу і показує значення для копіювання у твій slicer. Save записує його в історію калібрувань як per-printer фермовий запис.

Двопрохідна калібровка Flow Rate

Калібрує filament_flow_ratio — множник екструзії. Прохід 1 друкує 9 квадратів з модифікаторами ±20 % навколо поточного `filament_flow_ratio` твого філамент-пресета (підставляється автоматично з обраного пресета; можна перебити на 1.0, щоб тестувати «з нуля», не редагуючи slicer-профіль). Обираєш найрівніший квадрат — BamDude автоматично нарізає, FTP'ить і запускає прохід 2 з 10 точніших квадратів навколо твого coarse-piku. Двопрохідний диспатч end-to-end; не виходиш з майстра. Фінальний ratio = `coarse × (100 + fine modifier) / 100` записується в історію калібрувань як per-(принтер, філамент, сопло) запис, який оператор копіює у свій slicer.

Кеш per-принтер, авто-бінд, H2D dual-extruder

Результати кешуються по ключу (принтер, філамент, сопло, екструдер) — два однакових X1C у фермі тримають незалежні K-значення. Активна калібровка авто-біндиться на кожен старт друку — пере-зіставляє живий cali_idx принтера за стабільною ідентичністю, тож переставлення AMS-слотів і RFID-перетеггання не можуть тихо відкотити профіль до невірного K. H2D / H2D Pro калібрують кожен екструдер на власній вкладці. Модалка Calibration History робить set-active / delete / refresh-from-printer по кожному рядку.

Обслуговування

Лічильники на принтер, model-aware задачі, відмітка з будь-де.

Режим обслуговування на принтер

Постав принтер «out of service», не видаляючи його — він випадає з диспатчу черги, планувальника, авто-сушіння й метрик і показує янтарний Maintenance-пілл, поки не повернеш. Перемикається з ⋮-меню принтера.

Архівувати принтер

Вивів принтер у відставку — продав, списав, замінив? Заархівуй замість видалення: він зникає зі сторінки Printers, з кожного пікера, черг, диспатчу й MQTT, а повна історія друку зберігається. Архівування блокується під час друку і скасовує pending-елементи черги принтера; відновити (чи видалити назавжди) можна в Settings → Printing. Відрізняється від Режиму обслуговування, який лише тимчасово паркує принтер.

Типи задач за моделлю

Кожна модель має ті задачі обслуговування, які реально потрібні (наприклад, протирка стержнів на X1).

Лічильники з overdue-алертами

Нагадування за годинами + календарем; бейджі в UI і нотифікації.

Mark done з бота

Тицькаєш actionable-кнопку в Telegram - лічильники миттєво ресетяться.

Історія + Excel-експорт

Кожна подія з оператором, датою, годинами; експорт у таблицю.

Автоматизація

Розумні розетки, віртуальний принтер, AI-детекція фейлу - вмикай те що треба.

Керування розумними розетками

Zigbee, Tasmota, Home Assistant, MQTT, REST/webhook — авто-увімкнення/вимкнення з принтом.

Zigbee-розетки без прошарку

BamDude сам керує Zigbee-донглом — без Home Assistant, без Zigbee2MQTT, без нічого поруч. Спаруйте розетку прямо з інтерфейсу, прив'яжіть до принтера — і енергія кожного друку йде з власного лічильника розетки.

Датчики середовища на тій самій рації

Спаруйте Zigbee-датчик температури й вологості з донглом, який уже тримає ваші розетки. Покази видно в бічній панелі й поруч із принтерами, що стоять у цьому місці, а історію за тиждень — на графіку.

Тривоги, коли приміщення виходить за межі

Задайте найменше та/або найбільше значення для будь-якої величини датчика, включно з його власним зарядом. Вам скажуть, коли показ вийде за межі, і коли повернеться; запас не дає значенню, що коливається на межі, дзвонити раз за разом. Датчик, який перестав звітувати, повідомляється теж — інакше сіла батарейка виглядає точно як тиха кімната.

Розетки-аксесуари знають своє місце

Позначте, яка розетка справді живить принтер. Вимикайте фільтр камери, підсвітку чи сушарку — принтер лишається онлайн і далі бере роботу з черги.

Облік енергії

kWh з розетки на кожен друк + сумарна енергія на ферму за період.

Режими віртуального принтера

File Manager (черга на перевірку), Print Queue (слайсер → конкретний принтер), Auto-Queue (слайсер → розподіл за повними вимогами до філаменту й подачі), Proxy (TLS relay). VP черги з конкретною ціллю може зберігати фізичний вибір AMS зі слайсера з перевіркою перед стартом; авточерга визначає джерела для обраного принтера.

Slicer-as-remote у non-proxy режимах

Коли VP має target-принтер, слайсер бачить живий стан AMS / FTS / типу сопла / k-profiles і отримує живу камеру через VP — повноцінний slicer-as-remote без втрати черги / архіву / диспетчеризації BamDude.

Живий прогрес друку в слайсері

Device-таб слайсера показує справжню стадію, відсоток, шар і час до кінця з target-принтера — а кнопка Send лишається активною весь час, тож наступну роботу можна ставити в чергу, поки друкується поточна.

Proxy для віддаленого друку

Друк звідусіль через TLS-релей - без VPN, без port-forward, end-to-end шифрування.

VP-картка з Tailscale

Показує tailnet-IP та MagicDNS-хостнейм хоста для paste-into-slicer, коли BamDude доступний через Tailscale; copy-to-clipboard в один клік.

Джерело імені архіву VP

Обери, звідки VP бере print_name архіву — з 3MF-метаданих чи назви файлу. Налаштування на інсталяцію.

Obico AI-детекція фейлу

Опційна ML-детекція з відповідями notify / pause / pause-and-power-off. Кожна картка принтера несе бейдж AI — сірий, поки нічого не спостерігається, далі зелений, бурштиновий чи червоний у міру класифікації друку, — тож стежити можна, не покидаючи сторінку Printers.

Home Assistant і спільні прив’язки датчиків

Прив’яжіть числові або бінарні HA-датчики до принтерів чи зберігання котушок з окремими тривогами й історією. Один Zigbee-датчик теж може обслуговувати кілька місць. Необов’язкова тривога принтера затримує старти з черги; застарілі чи недоступні дані HA знімають затримку, тому це операційне правило, а не захисне блокування.

Авторизація і інтеграції

Always-on авторизація з MFA, OIDC, LDAP - і REST/MQTT/Prometheus для всього іншого.

Гранулярні дозволи

80+ permissions resource:action, три дефолтні групи (Admin / Operator / Viewer).

TOTP + Email OTP + backup codes

Двофакторка з backup-кодами; enrollment на користувача, admin може скинути.

MFA + OIDC секрети шифровані at-rest за замовчуванням

Авто-bootstrap Fernet-ключа (env → файл → згенерований, режим 0600) — кожен TOTP-секрет + OIDC client_secret шифрований на диску без ручного env-кроку. Status-дашборд показує джерело ключа, лічильники encrypted vs legacy plaintext, alert якщо decryption-broken. Backup ZIP пакує ключ поряд з БД, тож відновлений інстал на свіжому хості далі дешифрує.

OIDC SSO + Azure Entra ID

PKCE + state + nonce + JWKS з SSRF-захистом на issuer URL, конфігурований email_claim (preferred_username / upn) для Microsoft 365 / Entra ID.

SSO, оголошений у змінних середовища

Для інсталяцій на compose / Helm / GitOps, де «один раз клікнути в Settings» не є частиною деплою. Постав чотири змінні BAMDUDE_OIDC_* — і провайдер створюється на старті та перезастосовується при кожному рестарті; у Settings він показаний read-only, бо редагування було б прийняте й тихо скасоване. Прибрати змінні — це вимкнути його, а не видалити: прив'язані акаунти зберігають прив'язку.

LDAP / Active Directory

LDAP-логін з мапінгом груп - для команд з готовою ідентичністю.

Sliding-session refresh

Ротуючі refresh-токени, OWASP reuse detection, HttpOnly-cookie + 1h access JWT.

API-ключі з cloud-access scope

Per-user `bd_*` токени, scoped до підмножини прав власника. Opt-in cloud-access scope для маршрутів Bambu Cloud. X-API-Key або Authorization: Bearer — обидва. Hashed at rest, last_used_at для аудиту.

REST + WebSocket API

Повний REST API з API-ключами + WebSocket для live-інтеграцій.

Prometheus метрики

Виділений /metrics endpoint з лічильниками на ферму і принтер.

Trace ID на запит

Кожен HTTP-запит отримує X-Trace-Id у відповіді й логи — щоб скорелювати одну дію користувача через HTTP / MQTT / scheduler.

Зв'язок із BamDude Cloud (опційний)

Спарте ферму з порталом cloud.bamdude.top — і вона звітує назовні: які з опублікованих вами принтерів друкують, наскільки просунулись, події, варті уваги, і один кадр з камери на запит. Однобічний за задумом: з порталу нічого не друкується, список запитів зафіксований у встановленій версії, а зв'язок розривається з будь-якого боку — з місяцем історії, щоб питання «коли ферма зникла з очей» мало відповідь.

MQTT publishing

Передача стану принтера на твій MQTT-брокер для Home Assistant / Node-RED.

Git-бекап

Авто-бекап конфігу в GitHub, GitLab, Gitea чи Forgejo за розкладом — реставрація з будь-якого коміта. Per-backend `git_providers/` пакет тримає розбіжності API (Forgejo грає Gitea-shape; GitHub Issues vs GitLab Issues тощо).

Імпорт OrcaSlicer-пресетів

Закидай локальні Orca-профілі пластику в BamDude в один клік.

Bug report з UI

Плаваюча кнопка Bug на кожній сторінці — описуєш проблему, опційно вкладаєш скріншот, клацаєш Start Debug Logging, відтворюєш баг, потім Stop & Submit. Санітизовані логи (імена принтерів / серійники / IP / паролі / email / API-ключі замаскуються) + скріншот + структурований support-snapshot постяться на bamdude.top-релей, який створює GitHub-issue. Релей тримає PAT, BamDude — ні.

In-app апдейтер зі stable + beta каналами

Settings → System → Install Update робить повну послідовність (git fetch --tags, reset --hard на tag, pip install, npm build) не виходячи з UI. Опційний Include beta updates toggle показує `vX.Y.ZbN` релізи теж — beta-детекція dual-signal (version-name convention АБО GitHub prerelease flag). Docker-інсталам auto-apply не дозволяється (git/pip/npm у запущеному контейнері — recipe для розбитого image), натомість UI показує і image-pull і source-build команди з resolved-тегом pre-filled — з beta-специфічним hint що `:latest` бети не трекає, тож явний `image: kainpl/bamdude:0.4.5b1` обов'язковий.

API-ключі за принтерами й приватні медіа

Обмежте API-ключ вибраними принтерами для читання, керування та їхніх черг; обмежений ключ не може використовувати авточергу. Мініатюри й таймлапси потребують доступу за правами, окремого від камерних токенів. Фото завершених друків у сповіщеннях лишаються публічними.

Розгортання

Працює там, де стоять твої принтери — контейнер, служба Windows або звичайна Linux-машина.

Один Docker-контейнер

SQLite із коробки; коли переростеш — PostgreSQL: або вбудований (BamDude веде його сам), або твій власний сервер. `--network host` лишає SSDP-автопошук принтерів робочим.

Нативний інсталятор для Windows

`.exe` для Windows 10/11 — без Docker, без WSL, без окремого Python. Несе вбудований Python і ffmpeg, реєструє BamDude як службу Windows, що стартує при завантаженні, і тримає твої дані в `C:\ProgramData\BamDude` — вони переживають і оновлення, і видалення.

Linux і macOS нативно

Скрипт встановлення налаштовує systemd або launchd — коли контейнер це на один шар більше, ніж треба.

Reverse proxy і HTTPS

Стає за nginx, Caddy чи Traefik; secure-куки підлаштовуються під схему автоматично.

Ставиться на телефон як застосунок

PWA — додай дашборд на домашній екран, і він відкривається як нативний застосунок, без жодного стору.

Запусти за 5 хвилин

Безкоштовно, open source, AGPL-3.0. Ніякого cloud-lock-in. Ніколи.