Download the PHP package hopex/bambulab-sdk without Composer
On this page you can find all versions of the php package hopex/bambulab-sdk. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download hopex/bambulab-sdk
More information about hopex/bambulab-sdk
Files in hopex/bambulab-sdk
Package bambulab-sdk
Short Description Typed PHP SDK for local control and monitoring of Bambu Lab 3D printers.
License MIT
Homepage https://github.com/Hopex-Development/bambulab-sdk
Informations about the package bambulab-sdk
Bambu Lab API для PHP
Полностью типизированный PHP 8.4 SDK для локального управления принтерами Bambu Lab.
Пакет предоставляет типизированный API для работы с состоянием принтера, заданиями печати, файлами, камерой, температурой, вентиляторами, подсветкой, прошивкой, HMS-сообщениями и событиями в реальном времени.
Проект является неофициальным SDK сообщества и не связан с Bambu Lab.
Возможности
- MQTT
- FTPS
- Camera
- Printer State
- Events
- Firmware
- HMS
- Files
- Temperature
- Fans
- Light
- Automatic reconnect
Требования
- PHP 8.4 или новее;
- расширение
ext-curl; - расширение
ext-json; - расширение
ext-openssl; - доступ к принтеру по локальной сети;
- включённый LAN Mode;
- действующий Access Code принтера.
SDK использует несколько локальных сервисов принтера:
- MQTT для команд и состояния;
- FTPS для работы с файлами;
- отдельное TLS-соединение для камеры.
Поддержка конкретных возможностей зависит от модели принтера и версии прошивки.
Установка
Настройка принтера
Перед использованием SDK:
- Подключите принтер и PHP-приложение к одной локальной сети.
- Включите LAN Mode в настройках принтера.
- Получите Access Code.
- Определите локальный IP-адрес принтера.
- Получите серийный номер принтера.
Не рекомендуется открывать MQTT, FTPS и порт камеры напрямую в интернет.
Быстрый старт
Жизненный цикл клиента
Подключение
По умолчанию клиент активирует MQTT-подписку и запрашивает полное состояние принтера.
Подключение без автоматического запроса состояния:
Обработка входящих сообщений
Одна итерация MQTT-цикла:
Блокирующий цикл:
Остановка активного цикла:
Отключение
Состояние принтера
PrinterState хранит накопленное состояние принтера.
Принтер часто отправляет только изменившиеся поля. SDK рекурсивно объединяет частичные сообщения с ранее полученным состоянием.
Получение полного накопленного payload:
Текущее задание печати
Текущее задание представлено объектом CurrentPrintJob.
Доступные вспомогательные методы:
При локальном запуске облачные идентификаторы, например taskId и projectId, могут отсутствовать.
Состояния G-code
Состояние печати представлено enum GcodeState.
Вспомогательные методы:
Состояние FAILED может означать как реальную ошибку, так и ручную отмену задания.
Ожидание состояния
Ожидание запуска печати:
Ожидание одного из нескольких состояний:
Ожидание пользовательского условия:
Управление печатью
Запуск задания
Файл должен быть предварительно загружен на принтер.
Пауза
Продолжение
Остановка
После ручной отмены принтер обычно сообщает состояние FAILED.
Запрос полного состояния
G-code
Отправка одной команды:
Отправка нескольких команд:
Произвольный G-code может запустить движение механизмов, нагрев и другие опасные операции. Проверяйте команды перед отправкой.
Подсветка
Включение:
Выключение:
Получение текущего состояния:
Температура
Температура сопла:
Температура стола:
Получение текущих значений:
Настроенные ограничения SDK:
Корректная безопасная температура зависит от модели принтера, сопла, стола и используемого материала.
Вентиляторы
Управление вентиляторами выполняется через FanApi.
Альтернативно можно использовать проценты.
Остановка вентилятора:
Перед использованием дополнительного вентилятора рекомендуется проверить возможности принтера:
При использовании заведомо отсутствующей возможности SDK может выбросить UnsupportedCapabilityException.
Файлы
Работа с файловой системой принтера выполняется через FTPS.
Типизированный список
Только файлы
Только директории
Только модели 3MF
Фильтрация по расширению
Можно передавать расширение с точкой или без неё:
Поиск элемента
Проверка существования
Пользовательская фильтрация
Загрузка
Скачивание
Удаление
Файловые операции используют собственное FTPS-соединение и не зависят от активного MQTT-цикла.
Камера
Получение одного JPEG-кадра:
Сохранение кадра:
Дополнительные представления:
Поддержка камеры зависит от модели принтера и используемого локального протокола.
Текущая реализация TcpCameraTransport предназначена для совместимых локальных TLS-потоков камеры.
Информация об устройстве
Состояние периферии:
Возможности принтера
Возможности определяются по фактическому состоянию, полученному от принтера.
До полной синхронизации некоторые значения могут быть равны null.
Прошивка
Запрос актуальной информации:
Получение основной версии:
Получение модулей:
Получение состояния обновления:
Первая версия API прошивки предназначена только для чтения данных. Установка и откат прошивки не поддерживаются.
HMS
HMS содержит сообщения диагностики, предупреждения и аппаратные ошибки принтера.
Предупреждения:
Ошибки:
Проверки:
Не все прошивки передают человекочитаемое описание и уровень сообщения. В таком случае SDK сохраняет исходные данные и использует уровень UNKNOWN.
События
Обработчики событий вызываются синхронно во время tick(), run() или runWithReconnect().
Начало печати
Пауза и продолжение
Завершение и отмена
Определение ручной отмены является эвристическим, поскольку принтер обычно использует состояние FAILED.
Изменение задания
Изменение прогресса и слоя
Оставшееся время
Температура, свет и HMS
Отмена подписки
Удаление всех подписок:
Автоматическое переподключение
Для длительно работающих процессов можно использовать runWithReconnect().
Параметры политики переподключения
| Параметр | Значение |
|---|---|
| attempts | количество попыток |
| delayMilliseconds | задержка между попытками |
| subscriptionWarmupMilliseconds | ожидание после подписки |
| synchronizeAfterReconnect | запрос полного состояния |
| clearStateBeforeReconnect | очистить накопленный PrinterState |
После успешного переподключения клиент:
- создаёт новое MQTT-соединение;
- повторно активирует подписку;
- запрашивает полное состояние;
- сохраняет зарегистрированные обработчики событий;
- продолжает цикл обработки сообщений.
Одна итерация с автоматическим восстановлением:
Явное переподключение:
Пользовательские реализации
Основные механизмы SDK построены на контрактах.
MQTT-транспорт
Файловый транспорт
Транспорт камеры
Это позволяет заменить стандартную реализацию, например при интеграции с другим MQTT-клиентом, файловым шлюзом или собственным сервисом камеры.
Исключения
Все исключения SDK наследуются от:
Общая обработка:
Основные группы исключений:
- ошибки подключения и транспорта;
- ошибки переподключения;
- ошибки сериализации MQTT;
- ошибки файловых операций;
- ошибки камеры;
- ошибки G-code;
- попытка использовать неподдерживаемую возможность.
Исключения разнесены по соответствующим feature-модулям.
Совместимость и ограничения
- SDK ориентирован на локальное управление принтером.
- Поведение протокола может отличаться между моделями и прошивками.
- Некоторые поля состояния могут отсутствовать.
- Не все функции протестированы на всех сериях Bambu Lab.
- AMS API пока не является приоритетным модулем.
- Потоковое видео камеры пока не поддерживается.
- Обновление и откат прошивки не поддерживаются.
- HMS может возвращать только код без текстового описания.
FAILEDне всегда означает аппаратную неисправность.- SDK не предоставляет облачную авторизацию Bambu Lab.
Документация
Полная документация по каждому модулю будет доступна отдельно:
Планируемые разделы:
- начало работы;
- клиент и подключение;
- состояние принтера;
- управление печатью;
- G-code;
- файлы;
- камера;
- температура;
- вентиляторы;
- подсветка;
- устройство;
- прошивка;
- HMS;
- события;
- переподключение;
- исключения;
- расширение SDK;
- архитектура.
Безопасность
Не публикуйте в репозитории:
- Access Code;
- серийный номер принтера;
- внутренний IP-адрес, если это нежелательно;
- файлы конфигурации с учётными данными.
Используйте переменные окружения:
Не открывайте локальные сервисы принтера напрямую в интернет.
Статус проекта
SDK находится в активной разработке.
Перед выпуском стабильной версии рекомендуется зафиксировать:
- поддерживаемые модели;
- поддерживаемые версии PHP;
- список протестированных прошивок;
- правила обратной совместимости;
- формат версионирования.
Участие в разработке
Сообщения об ошибках и Pull Request приветствуются.
Перед отправкой изменений:
- проверьте соответствие структуры feature-first архитектуре;
- сохраняйте строгую типизацию;
- добавляйте документацию на русском языке;
- не добавляйте зависимость от Laravel в основной пакет;
- не ломайте существующие публичные контракты без необходимости.
Лицензия
Проект распространяется по лицензии MIT.
All versions of bambulab-sdk with dependencies
ext-curl Version *
ext-json Version *
ext-openssl Version *
php-mqtt/client Version ^2.3