Схема автоматизации производства: ESP32 + MQTT + Zabbix + LTE Производство 47 РМ в Дмитровском районе — мониторинг по MQTT 280 000 ₽ под ключ · 28 дней внедрения · 0 простоев за 8 месяцев Цех в Дмитровском районе 47 РМ · 580 м² · 12 ТСД ESP32 #1 · цех SHT35 (T+H), BMP280 (давление) точность: ±0.2°C / ±2% ESP32 #2 · склад DHT22 (T+H), MQ-2 (газ) подвал 8°C-22°C ESP32 #3 · компрессорная BMP280 ×3 (давление воздуха) 6-8 бар работа ESP32 #4 · электрощит PZEM-004T (V, I, P, Wh) контроль фаз MQTT/TLS :8883 MikroTik LTE RB CAP ac-LTE SIM 1: Мегафон M2M 25-40 Мбит/с SIM 2: Теле2 backup авт.переключение антенна Mikrotik mANT LTE 5o WireGuard :51820 Zabbix Server МТС ЦОД Авиамоторная Zabbix 6.4 LTS Mosquitto MQTT broker Grafana 11.2 dashboard PostgreSQL 16 + Timescale Алерты: Telegram + СМС Уровень эскалации L1-L3 Алерты → Telegram директор → Telegram шеф-инженер → СМС дежурный → Telegram ITfresh эскалация по 4 уровням
Архитектура автоматизации производства в Дмитровском районе МО — ESP32-датчики + MQTT + LTE + Zabbix в нашем дата-центре.
· 19 мин чтения · Семёнов Е.С., руководитель ITfresh

Загородное производство 47 РМ: автоматизация на ESP32 + Zabbix за 280 тыс ₽

Загородное производство 47 РМ: автоматизация на ESP32 + Zabbix за 280 тыс ₽

К нам в августе 2025 года пришла производственная компания 47 РМ из Дмитровского района Московской области (это 73 километра от МКАД, дорога с грунтовыми участками, ближайший магазин в 11 километрах). У них типовая боль загородного производства: три простоя за месяц подряд из-за того, что технические проблемы (упало давление в компрессоре, перегрелся холодильник в складе сырья, отключилась одна фаза в электрощите) обнаруживались только тогда, когда работа уже встала. Никакого мониторинга у них не было — была одна тётя-вахтёр, которая раз в смену записывала в журнал температуру в офисе. В этой статье — как мы за 28 дней развернули у них Zabbix + ESP-датчики + LTE-канал, что собирали, как передавали через MQTT, и почему 280 тысяч ₽ оказалось более чем достаточно для всего.

Что было до нас: три простоя за месяц

Помню, в августе директор клиента позвал меня и прямо сказал: «Нам нужна автоматизация». Моим первым делом было попросить три вещи, без которых никак: журнал простоев за полгода, схему производства и, конечно, техкарту критичных узлов. Он прислал всё буквально через два дня. И знаете, картина сразу стала предельно ясной:

Представьте себе: суммарный убыток всего за три простоя составил около 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 креплением. Одно такое готовое устройство с корпусом обошлось нам в 4200 ₽. А теперь сравните: PLC уровня Siemens LOGO 8.4 с похожим набором входов стоит от 38 до 45 тысяч ₽. Согласитесь, разница в 9 раз для простых задач мониторинга – это просто нерационально, я считаю.

Какие датчики на каких узлах

Мы спроектировали 4 узла, каждый отвечает за свою зону:

Связь между узлами и сервером

Все наши четыре ESP32 подключились к локальной сети цеха по Wi-Fi – для этого мы использовали 4 точки доступа 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» с 6 элементами данных и 4 триггерами. Триггеры срабатывают при выходе значения за пределы или при отсутствии данных более 3 минут (это сигнал, что устройство или связь упали).

Что мы сделали с MikroTik и LTE-каналом

Почему именно MikroTik RB CAP ac-LTE

MikroTik RB CAP ac-LTE, хоть и считается младшей моделью LTE-роутеров от MikroTik, для нашего проекта подошёл идеально. Я считаю, что его возможностей вполне хватает. Он поддерживает Cat 4 LTE (это до 150 Мбит/с теоретически, а реально на этом адресе мы получали 25-40 Мбит/с), имеет две SIM-карты с функцией автоматического переключения, встроенный коммутатор на 1 Гбит и может одновременно работать с двумя 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 тысяч ₽ распалась так:

Давайте подведём итог по деньгам: 101 000 + 159 000 + 12 200 + 7 800, итого получилось ровно 280 000 ₽. А что по срокам? Согласование сметы заняло 3 дня, закупка железа – 8 дней, монтаж и наладка – 14 дней, а на обучение ушло 3 дня. В общем, мы уложились в полный срок от подписи договора до сдачи, который составил 28 дней.

Результат: 0 простоев за 8 месяцев

Мы сдали систему клиенту 19 сентября 2025 года. И вот, за 8 месяцев работы – по состоянию на 12 мая 2026 – представляете, не было ни одного полноценного простоя цеха! При этом система выдала 14 предупредительных алертов, благодаря которым клиент успевал провести профилактику ещё до того, как что-то могло реально остановиться:

Я подсчитал, что за эти 8 месяцев клиент сэкономил примерно 4.5-5.2 миллиона ₽ только за счёт того, что простоев не было. Плюс ко всему, значительно улучшилось настроение команды – теперь никто не приходит на работу с тревожной мыслью «что сегодня сломается?». ROI этой системы, которая обошлась в 280 тысяч, составил около 17-18 раз всего за восемь месяцев. По-моему, это очень круто!

FAQ: что чаще всего спрашивают клиенты

Зачем ESP32, если есть промышленные модули PLC?

ESP32, как я уже говорил, в 6-10 раз дешевле даже самого бюджетного PLC уровня Siemens LOGO, и для задач мониторинга – подчеркну, именно мониторинга, а не управления – этого вполне хватает. Могу сказать из своего опыта: у наших производственных клиентов ESP32 работают уже по 14-18 месяцев без единого отказа, причём в самых разных условиях – температура от 5 до 35°C и влажность до 80%. Промышленные PLC, на мой взгляд, действительно нужны только там, где речь идёт о реальном управлении приводами с обратной связью и где есть очень жёсткие требования по сертификации.

Почему LTE, а не нормальный оптический интернет?

Представьте себе: производство клиента находится в 8 километрах от ближайшей деревни, а ближайший оптический провайдер – и вовсе в 12 километрах. Провести туда оптику стоило бы от 850 до 1200 тысяч ₽, и это заняло бы от 6 до 9 месяцев только на согласования! Вместо этого мы выбрали LTE MikroTik с симкой Мегафон М2М, который даёт стабильные 25-40 Мбит/с всего за 4900 ₽/мес и работает без проблем с первого дня. Для трафика мониторинга, который составляет около 50 МБ/сутки, этого, поверьте, с огромным запасом.

Что если LTE упадёт — как мы про это узнаем?

Мы предусмотрели целых два уровня защиты. Первый – это резервный GPRS-канал, который работает через вторую симку другого оператора (в нашем случае это Теле2) на том же самом MikroTik. Второй уровень – 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 тысяч ₽ и 28 дней! Инструменты, которые мы используем, довольно просты: это ESP32 плюс датчики на 18 тысяч, надёжный LTE-канал MikroTik с двумя SIM-картами, Zabbix на нашем сервере в Москве, MQTT для передачи данных и Grafana для удобной визуализации. Посмотрите на результаты: за 8 месяцев у клиента – ноль простоев, 14 предупредительных алертов и экономия около 5 миллионов ₽. Могу с уверенностью сказать, по моему опыту, это одно из самых высокоокупаемых решений на рынке IoT для сегмента МСБ в Москве и Московской области.

Похожая задача в вашей компании?

Расскажите, что у вас сейчас — пришлю план работ и оценку в течение рабочего дня.

Написать в Telegram  или  +7 903 729-62-41

Семёнов Е.С., руководитель ITfresh

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.