Услуги Кейсы Подход Обо мне Обсудить задачу
← Все кейсы
Промышленная автоматизацияBizerba BRAIN2REST APIWebSocket

Весовое оборудование Bizerba — дашборд цеха в реальном времени

Цех фасовки с десятью линиями Bizerba, скудная документация вендорского API и задача, которую обычно решают «когда-нибудь потом»: показать руководству, что происходит на производстве прямо сейчас.

10
линий на одном сервере BRAIN2, определяются автоматически
2 сек
частота обновления живого дашборда
0
дополнительных баз данных — единственный источник правды остался у заказчика
~5
дней на рабочий прототип

01 — Постановка задачиBizerba даёт доступ к данным. Но не даёт инструкцию

У BRAIN2 действительно есть REST API — это плюс. Но вся документация, которую можно было найти, свелась к короткому учебному курсу на несколько шагов: авторизация, один пример запроса, пара скриншотов Swagger. Ни списка реально доступных фильтров, ни описания структуры устройств, ни единого слова про то, как правильно опрашивать сервер, если нужно не «посмотреть одну запись», а построить работающий сервис.

Часть вещей, которые оказались критичными для работы, пришлось не читать, а вычислять экспериментально:

  • Список подключённых устройств не был задокументирован — рабочий эндпоинт нашли только методом проб через Swagger заказчика.
  • Каждая запись о выпуске «безлична» — принадлежность к конкретной линии приходится вычислять из вложенного технического поля, а не из отдельного параметра запроса.
  • Фильтр по датам подтверждён только в одну сторону («не позже такой-то даты») — вторую границу пришлось выводить логикой постраничного обхода, а не готовым параметром API.
  • При больших объёмах истории — десятки тысяч записей за смену — наивный постраничный запрос либо не долистывает до конца, либо съедает секунды на каждое обращение, если не продумать стратегию заранее.
Показательный момент

На одном из этапов дашборд стабильно занижал итог за смену ровно на 800 упаковок — не случайное число, а размер страницы внутреннего кэша. Причина нашлась не с первой попытки: защитный механизм от разрастания памяти срабатывал раньше, чем должен был, и обнулял то, что уже было корректно посчитано. Такие вещи не видны на глаз — только по логам и повторной сверке цифр с сырыми данными сервера.

Иллюстрация
Дашборд мониторинга выпуска — десять линий Bizerba в реальном времени, обновление раз в 2 секунды.

02 — АрхитектураНичего не копируем — читаем напрямую

Соблазн в таких задачах — завести отдельную базу данных и складывать туда всю историю «на всякий случай». Мы сознательно этого не делали. У BRAIN2 уже есть свой SQL-сервер, который ничего не удаляет — дублировать его целиком нет смысла, это лишняя точка рассинхронизации.

Вместо этого — лёгкий сервис-посредник:

  • Раз в две секунды опрашивает BRAIN2 и обновляет «живую» картину по каждой линии — вес, счётчик, номенклатура.
  • Автоматически определяет, какие линии вообще существуют, прямо из потока данных — без ручного списка IP-адресов.
  • Передаёт обновления в браузер по WebSocket — дашборд обновляется сам, без перезагрузки страницы.
  • Отчёт за смену или за произвольный период строится не из локального архива, а прямым запросом к BRAIN2 в момент нажатия кнопки — данные всегда актуальны, второй источник правды не создаётся.

03 — Детали, которые обычно опускаютСмена — это не полночь

Мелочь, которая на практике решает, доверяют отчёту или нет: на производстве смена начинается не в 00:00, а в 08:00. Формальный «календарный день» никому не нужен — важен реальный рабочий цикл. Дашборд и отчёты синхронизированы именно с этой границей, а не с часами операционной системы.

Такая же дисциплина — в разбивке по номенклатуре. Одна линия за смену нередко успевает переключиться между несколькими SKU. Наивный подход — показать «текущий» артикул и приписать ему весь накопленный вес линии — даёт красивую, но неверную картину. Вклад каждой номенклатуры считается отдельно, поэтому итоговый отчёт не расходится с тем, что реально видно на экране.

Иллюстрация
Полная разбивка выпуска по номенклатуре за смену — без «слипшихся» SKU.

04 — ИтогЧто это дало

Руководство получило то, чего раньше не было в принципе: открыл браузер — увидел, что происходит в цехе прямо сейчас, по каждой линии, без звонков и личных обходов. Отчёт за смену или за произвольный период — один клик, готовый Excel с разбивкой по линии и номенклатуре, а не ручной подсчёт по бумажным журналам.

Отдельная ценность этого кейса — не в самом дашборде, а в том, что подобная интеграция принципиально возможна практически с любым промышленным оборудованием, у которого есть хоть какой-то API, даже если производитель не даёт по нему внятной документации. Обычно это вопрос нескольких дней вдумчивой работы, а не отдельного дорогого проекта интеграции.

Похожая задача на вашем производстве?

Если данные уже собираются, но не связаны между собой в реальном времени — разберём, что можно сделать без покупки отдельного продукта под задачу.

Обсудить задачу →