Skip to content

RealShade/print-db

Repository files navigation

Банка

Print DB

Органайзер для роботи з 3D друком.

https://print-db.realshade.me
Наразі реєстрація вільна, без очікування підтвердження адміністратором
Проєкт у розробці, тому можуть бути баги, а функції реалізовуватимуться поступово.

Що працює:

  • Реестр завдань
  • Реестр частин
  • Реестр принтерів
  • Керування запасами філаменту (ручне, кольорі не працюють)
  • API події "перед друком", "після друку" та "друк зупинено"
  • Ручне додавання поточного друку з ручним завершенням (друк додається до надрукованого)
  • Автоматизація поточного друку при використанні API
  • Інструмент перевірки назви файлу на валідність

Загальна ідея:

  • Організувати роботу з 3D принтером в плані ведення обліку друку та запасів філаменту
  • Облік завдань та частин, які потрібно надрукувати, яки в процессі друку та які вже надруковані.
  • Автоматизувати процес підрахунку кількості надрукованих частин, а також автоматично створювати завдання та частини, які потрібно надрукувати, на основі даних з API.

Реалізація (та її ідеї):

  • Використовувати API для отримання даних про завдання та частини, які друкуються.
  • Зв'язок між даними з API та даними в системі здійснюватиметься через назви файлів, які будуть містити інформацію про завдання та частини, що друкуються
  • Зробити зручне ручне керування друком, завданнями та частинами через веб-інтерфейс, щоб можна було користуватися без API.
  • Зробіти облік філаменту, ручне та автоматичне керування його витратою
  • Звісно кожен користувач бачить лише свої завдання та частини, які він створив
  • Лог друку, лог витрат філаменту
  • У якості аватару використовується gravatar
  • Стек: php8.3, laravel 12, mysql, redis, nginx. Bootstrap 5, SweetAlert2

Угода щодо понять:

  • Завдання - це певна кількість комплектів, які потрібно надрукувати
  • Комплект - це певна кількість різних частин (може бути одна частина, може бути різна кількість різних частин у комплекті)
  • Частина - окрема модель, яка має свою назву та версію, та може входити до декількох завдань
  • Статуси:
    • "нова" - завдання, яке ще не почало друкуватися. Це початковий статус створеного вручну завдання. Статус змініться автоматично на "в процесі" при находженні на API пов'язаної з цим завдання події
    • "в процесі" - завдання, яке вже почало друкуватися. Це початковий статус завдання, створенного автоматично. Статус зміниться автоматично на "надруковано" при досягненні потрібної кількості надрукованих частин (можливо, це буде опціонально)
    • "надруковано" - завдання, яке вже повністю надруковане. Цей статус не змінюється автоматично. Тако ж завдання з цим статусом все ще вважаються відкритими, і можуть приймати події з API. Цей статус потрібно вручну змінити на "виконано" після того, як завдання буде повністю надруковане та відправлено замовнику
    • "виконано" означає, що завдання повністю надруковано та відправлено замовнику

API запити:

/print-start
/print-end
/print-stop

  • API приймає як POST, так і GET запити
  • Аутентифікація можлива через bearer (-H Authorization: Bearer токен) або токен у запиті (token=токен)
  • токен створюється у налаштуваннях на сайті
  • приймаються 2 параметри - filename (обов'язкове) та printer_id (якщо принтер створено всього один, то можна опустити)
  • ! не працює без створених принтерів
  • print-start бере дані з назви файлу та створює закріплений за принтером поточний друк визначених моделей. Не змінює кількість надрукованого, існує виключно для інформації
  • print-stop очищає закріплений за принтером поточний друк. Не змінює кількість надрукованого
  • print-end як і print-start, бере з назви файлу дані, але одразу додає до надрукованого та очищає закріплений за принтером поточний друк. Подія не додає автоматично поточний друк, а наново перевіряє назву файлу та обчислює дані. Таким чином можна працювати без print-start, а тільки з print-end, як єдиною точкою автоматизації
  • шаблон для назви файлу можна подивитися в формі завдання або в формі кожної закріпленої за завданням моделі
  • шаблон може бути присутнім будь-де у назві файлу
  • може бути присутніми декілька шаблонів, якщо на столі декілька моделей навіть з різних завдань
  • перевірити назву файлу можна на сторінці інструментів на сайті
  • на формі завдання та формі прив'язаної моделі є готовий шаблон для додавання в назву файлу, в слайсері достатньо додати його у назву пластини

Назва файлу містить:

(tid_9999(x1))

  • tid_ади завдання
  • (xкількість) - скільки комплектів наразі друкується. За замовчуванням 1
  • шукається завдання з таким айді серед незавершених, якщо не знайдено - помилка (сповіщення)
  • якщо знайдено та не вказано кількість, вважати як 1 повний комплект

(pid_8888(x1)_9999)

  • pid_айді частини
  • (xкількість) - скільки екземплярів частин наразі друкується. За замовчуванням 1
  • айди завдання
  • шукається частина зі завданням з таким айді серед незавершених, якщо не знайдено завдання, або частина не належить завданню - помилка (сповіщення)

About

Органайзер 3D друку

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project