Автоматизация загородного производства 47 РМ: Zabbix + ESP32 + LTE за 280 тыс ₽
Схема автоматизации производства: 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 креплением. Одно готовое устройство с корпусом — 4 200 ₽. Для сравнения: Siemens LOGO 8.4 с аналогичным набором входов стоит от 38 до 45 тысяч ₽. Разница в 9 раз. Для задач чистого мониторинга — это просто нецелесообразно.

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

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

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

Все четыре 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 ₽ сложилась из следующих позиций:

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

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

Клиенту систему сдали 19 сентября 2025 года. К 12 мая 2026-го — то есть за 8 месяцев работы — ни одного полноценного простоя цеха не было. Система выдала 14 предупредительных алертов, и каждый раз клиент успевал провести профилактику до того, как что-то реально останавливалось:

Прикинул экономию за эти 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

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

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

Письмо придёт в течение минутыНе нашли его во «Входящих» — загляните в папку «Спам» или «Промоакции» и нажмите «Не спам». Так все следующие выпуски будут приходить прямо в основную почту.
Реквизиты оператора персональных данных

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