
Кейс: машиностроительный цех с десятками станков, где загрузка оборудования долгие годы оценивалась «на глаз». Мастер обходил производство и делал заметки в бумажном журнале, но точных данных о том, сколько времени станок реально резал металл, а сколько работал вхолостую, не было.
В статье рассматривается практическое решение на базе беспроводной Zigbee-сети — недорогой и простой мониторинг без прокладки кабелей, построенный на полностью открытом программном стеке.
Главное возражение производственников: «В цехе сильные помехи для Wi-Fi, придётся тянуть слаботочные линии, возможно, останавливать оборудование и привлекать электриков для питания роутеров». Это означает затраты времени и денег еще до первого измерения. Плюс классическая ситуация с проприетарными SCADA-системами: оборудование от одного вендора, ПО от другого, и они работают только в связке, а стоимость обновлений сравнима с начальной интеграцией.
На каждый станок устанавливается компактный промышленный компьютер на базе NapiLinux (дистрибутив на основе Buildroot), монтируемый на DIN-рейку. В устройство встроен трансформатор тока (CT), который надевается на питающий кабель станка без разрыва цепи. Монтаж одной точки занимает 5–10 минут.
Измеряемые параметры каждого узла:
Частота опроса - 1 Гц, что избыточно для простого определения факта работы станка. Порог срабатывания «вкл/выкл» настраивается индивидуально для каждого станка однократно и в дальнейшем не требует корректировки.
Питание устройства - 220 В от встроенного источника. Кабели передачи данных отсутствуют полностью.
Внутри контроллера для связи вычислительного модуля с датчиком используется Modbus RTU. Пакет modlink опрашивает Modbus-регистры по расписанию и передаёт значения в Zigbee-передатчик через последовательный интерфейс. Прошивка Zigbee-модуля (PTVO, ptvo.info) преобразует произвольные числовые данные в стандартные Zigbee-кластеры ZCL, которые понимает любой координатор Zigbee2MQTT.
Этот вопрос возникает у большинства читателей.
Wi-Fi 6 выглядит очевидным кандидатом, но промышленный цех - это металлические корпуса, экранирующие перегородки и множественные отражения сигнала. На частотах 2.4 ГГц и 5 ГГц сеть деградирует и работает нестабильно. К тому же Wi-Fi требует управления IP-адресами, аутентификации и дополнительной нагрузки на корпоративную сеть. Для 30-50 датчиков это ещё управляемо, но в перспективе становится проблемой для обслуживания. Дополнительный фактор — возможные требования региональных служб (например, МЧС) отключать Wi-Fi на производственных объектах на длительное время. В некоторых отраслях установка промышленного Wi-Fi требует специального разрешения службы безопасности.
LoRa/LoRaWAN на частоте 868 МГц хорош для датчиков с редкими передачами (раз в минуту и реже) и большими расстояниями. Но частота 1 Гц при десятках устройств создаёт конкуренцию за эфир, а избыточная дальность (до нескольких километров) не нужна в пределах одного цеха.
Zigbee — протокол для энергоэффективных сетей с низкой скоростью передачи данных, широко применяемый в IoT и системах «Умный дом». Он медленный, но надежный.
Ключевые преимущества Zigbee в этом проекте:
Zigbee использует тот же диапазон 2.4 ГГц, что и Wi-Fi, но меньшая мощность передатчика и ячеистая сеть компенсируют провалы покрытия. В цехе площадью ~2000 м² сеть из 15-20 устройств работает без дополнительных ретрансляторов, но при необходимости любой маршрутизирующий узел автоматически становится им.
Ключевое архитектурное решение — полное отсутствие проприетарного ПО. Весь стек работает в Docker-контейнерах на локальном сервере (или Edge-компьютере в цеху).
Слои системы:
| Слой | Компонент | Назначение |
| Датчик | NapiLinux + modlink | ОС датчика; пакет опрашивает Modbus-регистры и передаёт данные в Zigbee |
| Zigbee-сеть | PTVO firmware | Прошивка модуля; преобразует данные в стандартные Zigbee-кластеры |
| Координатор | Zigbee2MQTT + Mosquitto | Принимает данные со всех устройств и публикует в MQTT |
| Транспорт | Telegraf | Читает MQTT-топики и записывает временные ряды в InfluxDB |
| База данны | InfluxDB 2.x | Хранит временные ряды с минутным разрешением по каждому станку |
| Визуализация | Grafana | Дашборды, графики, алерты |
Путь данных:
Станок → FCU3308PZ → Zigbee mesh → координатор Napi-C → Zigbee2MQTT → Mosquitto → Telegraf → InfluxDB → Grafana
Zigbee2MQTT + Mosquitto
Zigbee2MQTT — открытый мост между Zigbee и MQTT. Координатор подключается через USB или UART, а Zigbee2MQTT публикует данные в топики вида:
text
zigbee2mqtt/станок-01/current → 12.4
zigbee2mqtt/станок-01/power → 2720
Каждое устройство отображается в веб-интерфейсе Zigbee2MQTT с указанием статуса, качества сигнала (LQI) и времени последнего обновления - это важно для диагностики.
Mosquitto — лёгкий MQTT-брокер с минимальной конфигурацией (порт 1883, опционально TLS).
Telegraf
Подписывается на MQTT-топики через плагин inputs.mqtt_consumer и передаёт данные в InfluxDB. Если база временно недоступна, буферизует данные и отправляет после восстановления.
InfluxDB 2.x
Оптимальное хранилище для временных рядов. Поддерживает политики хранения (автоматическое удаление старых данных) и агрегацию через Flux-запросы.
Пример запроса для расчета машинного времени за смену (порог тока 5 А):
flux
from(bucket: "machines")
|> range(start: -8h)
|> filter(fn: (r) => r._measurement == "mqtt_consumer" and r._field == "current")
|> filter(fn: (r) => r.topic =~ /станок-01/)
|> map(fn: (r) => ({ r with value: if r.value > 5.0 then 1.0 else 0.0 }))
|> aggregateWindow(every: 1m, fn: mean)
|> sum()
Результат - количество минут работы за 8 часов.
Grafana
Финальный слой визуализации с типовыми панелями:
Алерты настраиваются через Alerting → Alert rules (например, отклонение тока от среднего на 20%). Уведомления — в Telegram, Email или webhook.
| Слой | Компонент | Лицензия |
| Датчик | NapiLinux + modlink | GPL / проприетарная прошивка |
| Zigbee firmware | PTVO | Freeware |
| Координатор | Zigbee2MQTT | GPL-3.0 |
| Брокер | Mosquitto | EPL-2.0 |
| Транспорт | Telegraf | MIT |
| БД | InfluxDB 2.x | MIT (core) |
| Визуализация | Grafana | AGPL-3.0 |
Все компоненты, кроме прошивки самого устройства, имеют открытый исходный код. Данные локальны — нет облачной зависимости и абонентской платы.
Сразу после запуска система показала:
Zigbee — сеть легко масштабируется: новый датчик автоматически встраивается в mesh-топологию, конфигурация Zigbee2MQTT обновляется без перезапуска.
FCU3308PZ поддерживает Modbus RTU/TCP, что позволяет подключать любые стандартные датчики — давления, температуры, вибрации, расхода охлаждающей жидкости. Все данные попадают в общую систему.
Для интеграции с ERP или MES используются MQTT-топики, доступные любому сервису в сети (Node-RED, Python-скрипты, микросервисы).
Система решает три ключевые задачи:
Данные остаются на предприятии, стек поддерживается инженером, знакомым с Linux и Docker. Mesh-топология Zigbee обеспечивает отказоустойчивость - потеря одного узла не обрывает остальные. Открытый протокол MQTT на выходе координатора позволяет интегрировать любые downstream-системы.
Ключевые преимущества:
FCU3308PZ производится в России, PTVO — прошивка для Zigbee, остальное — стандартные open source проекты.