Загородное производство 47 РМ: автоматизация на ESP32 + Zabbix за 280 тыс ₽
В августе 2025-го к нам обратилась производственная компания 47 РМ — Дмитровский район Московской области, 73 километра от МКАД, дорога с грунтовыми участками, ближайший магазин в 11 километрах. Типичная история загородного производства. За один месяц — три простоя подряд: упало давление в компрессоре, перегрелся холодильник в складе сырья, отключилась одна фаза в электрощите. Каждый раз проблему обнаруживали уже после того, как производство встало. Никакого мониторинга не было вообще. Была тётя-вахтёр, которая раз в смену записывала в журнал температуру в офисе — и всё. В этой статье расскажу, как мы за 28 дней развернули у них Zabbix + ESP-датчики + LTE-канал, что именно собирали, как передавали через MQTT и почему 280 тысяч ₽ хватило с запасом.
Что было до нас: три простоя за месяц
Директор клиента позвал меня в августе и сказал прямо: «Нам нужна автоматизация». Первое, что я попросил — три вещи: журнал простоев за полгода, схему производства и техкарту критичных узлов. Через два дня всё лежало у меня на почте. Картина сложилась сразу, без лишних вопросов:
- Простой 14 июля. 6 часов простоя цеха. Причина: упало давление в воздушной линии до 3 бар (норма 6-8). Компрессор Atlas Copco отработал положенный срок ресурса по фильтрам, ремкомплект не закупали. Никто не знал, что пора менять, пока пневмоинструменты не перестали работать.
- Простой 23 июля. 4 часа простоя склада сырья. Причина: вышел из строя один из двух холодильников, температура в боксе пошла с 4°C до 18°C, часть сырья пришлось списать (потеря 92 тысячи ₽). Холодильник, скорее всего, начал «греться» за 2-3 дня до отказа, но никто этого не видел.
- Простой 6 августа. 8 часов простоя цеха. Причина: пропала одна из фаз в электрощите (вышел из строя автомат на 63А). Без одной фазы продолжали работать большинство станков, но трёхфазный пресс встал. Никто не понимал, что произошло, вызывали электрика из райцентра 4 часа.
Три простоя — суммарный прямой убыток около 480 тысяч ₽. Это только потерянная выручка. Сверху — штрафы от двух клиентов за срыв сроков: ещё 145 тысяч ₽. Итого за один месяц — 625 тысяч ₽. И это без учёта нервов, репутационных потерь и того, что творилось с настроением внутри команды.
Директор сел и пересчитал сам. Если простои идут с той же частотой, годовая стоимость этой «слепоты» — около 7 миллионов ₽. Мне стало очевидно: даже мониторинг за миллион ₽ отбился бы за два месяца. Согласовали бюджет в 280 тысяч ₽ и расписали план на 28 дней.
Что мы спроектировали: 4 ESP-узла + Zabbix в Москве
Архитектура сложилась из четырёх частей. Датчики на ESP32 — прямо на объектах. MQTT-брокер — принимает все данные. LTE-канал — связь с интернетом. И Zabbix-сервер — хранение, визуализация, алертинг. Каждый блок делает своё и не мешает остальным.
Почему ESP32, а не промышленные модули
Меня всегда немного раздражает, когда говорят категорично: «Для производства — только промышленные PLC». Если речь об управлении — да, это правда. Когда устройство реально открывает клапан или запускает привод, там нужна надёжность другого уровня. Но мониторинг — это другая задача. Считать значение и отправить его в облако — с этим ESP32 справляется ничуть не хуже промышленного контроллера. А стоит в 8–10 раз меньше.
Для этого проекта взяли ESP32-WROOM-32D в металлическом корпусе IP65 от AKS с DIN-rail креплением. Одно готовое устройство с корпусом — 4 200 ₽. Для сравнения: Siemens LOGO 8.4 с аналогичным набором входов стоит от 38 до 45 тысяч ₽. Разница в 9 раз. Для задач чистого мониторинга — это просто нецелесообразно.
Какие датчики на каких узлах
Мы спроектировали 4 узла, каждый закрывает свою зону:
- Узел 1 — цех. SHT35 (температура и влажность с точностью ±0.2°C и ±2% RH), BMP280 (атмосферное давление, для трендов погоды и контроля климата). Размещён под потолком на высоте 4 метра, питание от резервного блока.
- Узел 2 — склад сырья. DHT22 (бюджетная замена SHT35 для подвального бокса, где требований к точности нет), MQ-2 (газовый датчик, детектирует углеводороды на случай утечки топлива из стоящего рядом дизель-генератора).
- Узел 3 — компрессорная. Три BMP280 на разных точках воздушной магистрали: на выходе из компрессора, на входе в цех, на конечной точке. Это позволяет видеть не только текущее давление, но и потери на линии (если разница «вход - выход» растёт, значит есть утечка).
- Узел 4 — электрощит. Три PZEM-004T (модули измерения переменного тока) на каждой из трёх фаз. Передают напряжение, ток, мощность, потребление в кВт·ч. Сразу видно, если одна фаза «провалилась» или нагрузка на одной фазе ушла в перекос.
Связь между узлами и сервером
Все четыре ESP32 подключились к локальной сети цеха по Wi-Fi. Покрытие обеспечили четыре точки доступа TP-Link EAP265 HD, расставленные равномерно по территории. Трафик из локальной сети уходит через MikroTik RB CAP ac-LTE — две SIM-карты: Мегафон M2M как основная, Теле2 в резерве. От этого MikroTik мы пробросили WireGuard-туннель до Zabbix-сервера в дата-центре МТС на Авиамоторной.
Конфигурация ESP32: что прошито внутри
На каждом ESP32 — прошивка на Arduino IDE. Библиотеки под конкретные датчики плюс MQTT-клиент PubSubClient. Датчики опрашиваются раз в 30 секунд, данные уходят в MQTT-брокер по топику /factory/{node}/{sensor}. Перед отправкой всё пишется в локальное хранилище LittleFS — чтобы при разрыве связи данные не терялись.
// ESP32 прошивка — узел 1 (цех)
// ITfresh, 2025-08-22
#include
#include
#include
#include
#include
#include
#define WIFI_SSID "FACTORY-OPS"
#define WIFI_PASS "***"
#define MQTT_HOST "10.20.30.5" // tunnel-side IP сервера
#define MQTT_PORT 8883
#define NODE_NAME "cex-01"
#define SAMPLE_MS 30000 // 30 секунд
Adafruit_SHT31 sht = Adafruit_SHT31();
Adafruit_BMP280 bmp;
WiFiClientSecure net;
PubSubClient mqtt(net);
void publishSensor(const char* sensor, float value) {
char topic[64];
snprintf(topic, sizeof(topic), "factory/%s/%s", NODE_NAME, sensor);
char payload[16];
snprintf(payload, sizeof(payload), "%.2f", value);
if (mqtt.connected()) {
mqtt.publish(topic, payload);
} else {
// Локальный буфер LittleFS — до 72 часов
File f = LittleFS.open("/buffer.log", "a");
f.printf("%lu %s %s\n", millis(), topic, payload);
f.close();
}
}
void loop() {
if (!mqtt.connected()) reconnectMqtt();
mqtt.loop();
static unsigned long last = 0;
if (millis() - last > SAMPLE_MS) {
last = millis();
publishSensor("temp", sht.readTemperature());
publishSensor("hum", sht.readHumidity());
publishSensor("press", bmp.readPressure()/100.0); // hPa
publishSensor("uptime", millis()/1000.0);
publishSensor("rssi", WiFi.RSSI());
}
}
Несколько вещей в этом коде принципиальны. TLS-соединение с сервером — порт 8883, сертификат вшит во flash. Локальная буферизация при потере связи — данные не уходят в никуда. Отдельная телеметрия о состоянии самого устройства: uptime, RSSI. И watchdog-таймер каждые 2 секунды — в примере кода выше он не показан, чтобы не перегружать листинг.
Как мы передаём данные через MQTT в Zabbix
На серверной стороне в Москве крутится Mosquitto MQTT broker плюс коннектор, который преобразует MQTT-сообщения в Zabbix-айтемы. Таких коннекторов у нас два варианта. Здесь мы использовали mqtt2zabbix — написан на Python и доработан нами под конкретные нужды клиента.
# /etc/mosquitto/mosquitto.conf — конфиг MQTT-брокера
# ITfresh, 2025-08-25
listener 8883 0.0.0.0
protocol mqtt
allow_anonymous false
password_file /etc/mosquitto/passwd
acl_file /etc/mosquitto/acl
# TLS — наш собственный CA для устройств клиента
cafile /etc/mosquitto/ca.crt
certfile /etc/mosquitto/server.crt
keyfile /etc/mosquitto/server.key
require_certificate true
use_identity_as_username true
# Persistence на случай рестарта
persistence true
persistence_location /var/lib/mosquitto/
# Каждое сообщение пишется в Zabbix через bridge-плагин
log_dest file /var/log/mosquitto/mosquitto.log
log_type all
# Bridge на локальный Zabbix-trapper
connection zabbix-bridge
address 127.0.0.1:10051
topic factory/# both 2
В Zabbix — шаблон «Factory ESP32 node». Шесть элементов данных, четыре триггера. Триггеры срабатывают при выходе значения за пороги или если данные не приходят больше 3 минут — последнее означает, что упало либо устройство, либо связь.
Что мы сделали с MikroTik и LTE-каналом
Почему именно MikroTik RB CAP ac-LTE
MikroTik RB CAP ac-LTE — формально младшая модель в линейке LTE-роутеров MikroTik, но для нашего проекта подошла точно. Cat 4 LTE: до 150 Мбит/с теоретически, реально на этом адресе мы получали 25–40 Мбит/с. Две SIM-карты с автопереключением, гигабитный коммутатор, два Wi-Fi радио — 2.4 ГГц и 5 ГГц одновременно. Для задачи телеметрии — с запасом.
Само устройство — 14 800 ₽. Антенна Mikrotik mANT LTE 5o, внешняя направленная, MIMO 2×2, 10 dBi — 6 200 ₽. Ближайшая вышка Мегафон — в Дмитрове, 8 километров от объекта. Наш инженер поднялся на крышу цеха и прицелил антенну за полдня.
Конфигурация автопереключения SIM
Очень удобная вещь в MikroTik RouterOS 7.14 — встроенный netwatch. Он сам проверяет доступность каналов и переключается между SIM-картами без какого-либо вмешательства с нашей стороны. Вся настройка заняла минут 15, не больше:
# MikroTik /etc — конфигурация LTE-переключения
# RouterOS 7.14, на устройстве в цехе
/interface lte
add name=lte1 apn=internet.mts band=3,7,20 sim-slot=up
add name=lte2 apn=m2m.tele2.ru band=3,7,20 sim-slot=down disabled=yes
/ip address
add interface=lte1 address=dhcp
/system scheduler
add name=lte-watchdog interval=1m on-event=/system/script/run lte-failover
/system script
add name=lte-failover source={
:local pingResult [/ping 8.8.8.8 count=3 interface=lte1]
:if ($pingResult < 2) do={
:log warning "LTE1 down, switching to LTE2"
/interface lte set [find name=lte1] disabled=yes
/interface lte set [find name=lte2] disabled=no
:delay 30s
# Уведомить ITfresh
/tool fetch url="https://itfresh.ru/api/lte-failover?factory=dmitrov" mode=https
}
}
# WireGuard на ITfresh-сервер
/interface wireguard
add name=wg-itfresh listen-port=51820 \
private-key="***"
/interface wireguard peers
add interface=wg-itfresh public-key="***" \
endpoint-address=mon.itfresh.ru endpoint-port=51820 \
allowed-address=10.20.30.0/24 persistent-keepalive=25s
За 8 месяцев резервная SIM срабатывала 7 раз. Каждый раз — кратковременно, от 10 до 90 минут, и всегда по одной причине: плановые работы Мегафон на ближайшей соте. Теле2 в эти моменты держала канал, мониторинг не прерывался. Клиент вообще ничего не почувствовал.
Реальная стоимость и сроки
Финальная смета на 280 000 ₽ сложилась из следующих позиций:
- Железо. 4 ESP32 в корпусе IP65 — 16 800 ₽. Датчики (3 SHT35, 1 DHT22, 3 BMP280 + три на компрессорной = 6, 3 PZEM-004T, 1 MQ-2) — суммарно 18 200 ₽. MikroTik RB CAP ac-LTE с антенной — 21 000 ₽. Wi-Fi-точки доступа TP-Link EAP265 HD (4 шт) — 23 600 ₽. Кабельные работы (SFTP cat6, 320 метров) — 9 800 ₽. Резервные ИБП SVC-650 на каждый узел (4 шт) — 11 600 ₽. Железо итого: 101 000 ₽.
- Услуги (работа инженеров ITfresh). Проектирование и согласование — 35 000 ₽. Прошивка ESP32 + настройка Wi-Fi — 28 000 ₽. Монтаж на месте (инженер 3 дня на объекте) — 42 000 ₽. Настройка MikroTik и LTE-канала — 18 000 ₽. Настройка Zabbix-сервера и Grafana-дашбордов — 24 000 ₽. Обучение операторов и шеф-инженера — 12 000 ₽. Услуги итого: 159 000 ₽.
- SIM-карты M2M. Подключение Мегафон М2М (тариф «Производство»): 4900 ₽/мес × оплата за 2 месяца вперёд = 9 800 ₽. Теле2 резерв (тариф «Минимум»): 1 200 ₽/мес × 2 = 2 400 ₽. Связь итого: 12 200 ₽.
- Хостинг Zabbix. На нашем гипервизоре в МТС — виртуальная машина 2 vCPU / 4 ГБ RAM / 50 ГБ SSD. По себестоимости для клиента — 7 800 ₽ за два месяца вперёд.
По деньгам: 101 000 + 159 000 + 12 200 + 7 800 — итого 280 000 ₽ ровно. По срокам всё выглядело так: 3 дня ушло на согласование сметы, 8 дней — на закупку оборудования, 14 дней — на монтаж и наладку, ещё 3 дня — на обучение. От подписания договора до сдачи объекта — 28 дней.
Результат: 0 простоев за 8 месяцев
Клиенту систему сдали 19 сентября 2025 года. К 12 мая 2026-го — то есть за 8 месяцев работы — ни одного полноценного простоя цеха не было. Система выдала 14 предупредительных алертов, и каждый раз клиент успевал провести профилактику до того, как что-то реально останавливалось:
- 3 раза давление в воздушной линии начинало плавно падать — успели заменить фильтры в компрессоре до того, как показатели дошли до критической отметки.
- 2 раза температура в боксе склада сырья начинала ползти вверх — проверили холодильное оборудование, обнаружили проблему с конденсатором на одном из агрегатов.
- Четыре раза подряд фиксировали перекос фаз в электрощите. Вызвали электрика. Нашли подгоревший контакт внутри автомата — вот и вся причина.
- Влажность в цехе дважды уходила за допустимую норму. Покопались в вентиляции — оказалось, заслонка подвисла и система начала тянуть воздух с улицы вместо нужного направления.
- Детектор газа MQ-2 на складе трижды поднимал тревогу — фиксировал повышение уровня. Долго не могли понять, в чём дело. В итоге выяснили: рядом проезжали грузовики на солярке, и при определённом направлении ветра выхлопы затягивало прямо через приточную вентиляцию.
Прикинул экономию за эти 8 месяцев — получилось от 4,5 до 5,2 млн ₽ только за счёт отсутствия простоев. Но есть и кое-что, что в деньги не переводится: люди перестали приходить на работу с мыслью «что сегодня сломается?». Атмосфера в цехе поменялась. ROI системы стоимостью 280 000 ₽ — порядка 17–18 раз за восемь месяцев. Честно говоря, мы и сами не ожидали такой цифры.
FAQ: что чаще всего спрашивают клиенты
Зачем ESP32, если есть промышленные модули PLC?
ESP32 дешевле самого бюджетного PLC уровня Siemens LOGO в 6–10 раз. Для задач мониторинга — именно мониторинга, не управления — этого достаточно. На нашей практике ESP32 у производственных клиентов работают уже по 14–18 месяцев без единого отказа: температура от 5 до 35°C, влажность до 80%. Промышленный PLC реально нужен там, где есть управление приводами с обратной связью и жёсткие требования по сертификации. Всё остальное — зачастую переплата.
Почему LTE, а не нормальный оптический интернет?
Производство клиента — 8 километров от ближайшей деревни. Оптический провайдер — в 12 км. Тянуть оптику: от 850 до 1 200 тысяч ₽ и 6–9 месяцев только на согласования. Мы поставили LTE-роутер MikroTik с симкой Мегафон М2М. Стабильные 25–40 Мбит/с за 4 900 ₽/мес, работает с первого дня без нареканий. Трафик мониторинга — около 50 МБ в сутки. Запас по каналу — колоссальный.
Что если LTE упадёт — как мы про это узнаем?
Резервирование сделали в два уровня. Первый — вторая SIM Теле2 на том же MikroTik, резервный GPRS-канал поднимается автоматически. Второй — Zabbix-агент на ESP-датчиках буферизует данные локально до 72 часов и досылает их, как только связь восстанавливается. Ну и на совсем крайний случай, если упадут оба канала сразу, у инженера клиента в кабинете директора лежит Yota-роутер в чемоданчике. За 8 месяцев двойного отказа не было ни разу.
Сколько займёт развёртывание такой системы на типовом производстве?
Стандартные сроки по нашим проектам — 28–45 рабочих дней. Разбивка такая: проектирование (расстановка датчиков, пороги тревоги) — 5–7 дней; закупка оборудования — 7–14 дней; монтаж и пусконаладка — 10–14 дней; обучение операторов и шеф-инженера — 3–5 дней; сдача с контрольными алертами — 3–5 дней. Клиент в Дмитровском районе уложился в 28 дней.
Сколько стоит такая система под ключ для производства 30-50 РМ?
По состоянию на май 2026 года: для типового производства с 30–50 рабочими местами и 10–15 точками измерения система обходится в 250–380 тысяч ₽ под ключ. Внутри этой суммы — ESP32-датчики, корпуса IP65, сервер Zabbix на нашем гипервизоре в Москве, LTE-роутер MikroTik с антенной, проектирование, монтаж и пусконаладка. Ежемесячная поддержка в рамках аутсорсного договора — 8–12 тысяч ₽.
Итог
Загородное производство с 47 рабочими местами реально превратить из «чёрного ящика, где постоянно что-то ломается» в управляемый процесс. 280 000 ₽ и 28 дней — вот что для этого понадобилось. Инструменты несложные: ESP32 плюс датчики на 18 000 ₽, LTE-канал MikroTik с двумя SIM-картами, Zabbix на нашем московском сервере, MQTT для передачи данных, Grafana для визуализации. Результат за 8 месяцев — ноль простоев, 14 предупредительных алертов, экономия около 5 млн ₽. На нашей практике в сегменте IoT для МСБ в Москве и Московской области это одно из самых быстроокупаемых решений.
Похожая задача в вашей компании?
Расскажите, что у вас сейчас — пришлю план работ и оценку в течение рабочего дня.
Написать в Telegram или +7 903 729-62-41
Семёнов Е.С., руководитель ITfresh
