Мой блог
Как теплотехник в 50 лет создал универсальный SCADA-движок на Flutter с помощью ИИ
Приветствую! Меня зовут Сергей Багров. В свои 50 лет, обладая многолетним опытом инженера-теплотехника, я столкнулся с профессиональным выгоранием и решил перешагнуть привычные границы КИПиА. Используя современные нейросети в качестве цифрового ассистента, я разработал универсальное мобильное приложение на Flutter/Dart для управления шкафами автоматики без необходимости глубокого погружения в профессиональное кодирование.
Когда рутинные алгоритмы автоматизации и типовые экраны панелей управления превращаются в бесконечный конвейер, мозг начинает искать нестандартные вызовы. Вместо того чтобы заказывать разработку уникального интерфейса под каждый новый проект блочного теплового пункта, я решил объединить свой богатый опыт в проектировании и программировании контроллеров с возможностями искусственного интеллекта, создав кроссплатформенный софт под любые задачи.









Идея: Зачем потребовалось создавать собственное мобильное приложение
Первоочередная причина заключалась в колоссальном удобстве настройки оборудования. Значительная часть наших шкафов управления комплектуется компактными реле вроде ПР200, которые оснащаются лишь скромным двухстрочным дисплеем. Настраивать сложную систему через такое примитивное меню — настоящее испытание, а передавать подобные инструкции сторонним наладчикам и вовсе рискованно. Смартфон в руках инженера полностью меняет сценарий взаимодействия с техникой.

Второй важнейший аспект — удобство проведения пусконаладочных работ. Зачастую наладку приходится выполнять в одиночку: требуется одновременно визуально контролировать состояние самого шкафа, замечать срабатывание световых индикаторов на дверце и отслеживать реакцию реле. Беспроводное подключение смартфона по Wi-Fi решает эту проблему раз и навсегда, позволяя свободно перемещаться по объекту.

Наконец, конвейерная специфика производства заставляла искать масштабируемое решение. Создавать отдельный проект под каждый объект с уникальным количеством контуров и набором датчиков выглядело неразумно. Мне требовался универсальный инструмент на все случаи жизни, что и предопределило архитектурный выбор.
Архитектура системы: Концепция «JSON-Конструктор»
В качестве технологической базы я выбрал фреймворк Flutter и язык Dart. Это позволило получить быструю кроссплатформенную систему, одинаково плавно функционирующую на любых Android-смартфонах и планшетах, а также легко адаптируемую под ноутбуки с операционной системой Windows при минимальных доработках кода.

Динамический парсер JSON как сердце движка
Интерфейс мобильного клиента не зашит жестко в программный код. На старте утилита считывает внешний конфигурационный файл в формате JSON, где детально описана вся логика конкретного объекта. В нем фиксируются количество технологических систем (например, отопление, горячее водоснабжение или подпитка), перечень контролируемых параметров вроде температур и давлений, адреса Modbus-регистров, а также типы данных и аварийные уставки.
Получая этот файл, движок на лету генерирует необходимые экраны, элементы управления, переключатели и цифровые индикаторы. Для нового объекта больше не нужно пересобирать приложение — достаточно подготовить текстовый файл конфигурации. Предусмотрена возможность генерации удобных QR-кодов со ссылками на скачивание как самого ПО, так и конкретных конфигураций, а также быстрое переключение между десятками сохраненных объектов.

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

- Контур 1 («Полевой хардкор»): Modbus RTU через USB-OTG. Если на объекте полностью отсутствует интернет, а дорогостоящий Wi-Fi модуль для контроллера не предусмотрен, в смартфон втыкается OTG-кабель, соединяющий его напрямую с преобразователем интерфейсов или USB-портом передней панели ПР200. Приложение выступает в роли Master-устройства.
- Контур 2 («Локальный комфорт»): Modbus TCP по Wi-Fi. При наличии локальной беспроводной сети или точки доступа шлюза пакеты передаются по протоколу TCP/IP, избавляя инженера от необходимости стоять вплотную у шкафа.
- Контур 3 («Глобальный контроль»): HTTP REST API к облачному сервису OwenCloud. Это решение обеспечивает удаленный мониторинг параметров в реальном времени и доступ к архивам с возможностью выгрузки таблиц в CSV-формате.
Итоговая структура интерфейса
Интерфейсная часть приложения спроектирована максимально логично. Главный экран отображает основные системы, текущие тренды, исторические данные из облака, меню выбора типа подключения, настройки безопасности по PIN-коду и функцию мгновенного создания комплексного PDF-отчета по всем параметрам теплового пункта.
Из главного меню можно провалиться в экран конкретной системы, где сгруппированы подсистемы, исполнительные механизмы, датчики и аварийные индикаторы. Отдельные экраны отведены под детальный мониторинг датчиков, а встроенный лог-трекер помогает эффективно отслеживать возможные сбои и ошибки связи.

Разработка в тандеме с искусственным интеллектом
Конечно, базовый синтаксис Dart я освоил самостоятельно, но попытка погрузиться с нуля в асинхронное программирование, потоки Streams и низкоуровневую работу с USB-портами Android могла занять годы. Искусственный интеллект выступил в роли высокопроизводительного цифрового подмастерье, взявшего на себя рутинное написание кода.
Моя роль носила исключительно архитектурный характер. Я самостоятельно проектировал структуры JSON-документов и объяснял нейросети физику технологических процессов: например, формулировал задачу на отправку Modbus-запроса функции 0x03, чтение пары регистров, их объединение в формат Float и привязку к переменной давления. ИИ мгновенно генерировал чистый код и подбирал профильные библиотеки.

Тестирование готовых модулей я проводил на реальном тестовом стенде у себя дома. При возникновении ошибок тайм-аутов сети или некорректном парсинге массивов я не тратил часы на изучение документации Flutter, а просто возвращал лог ошибки нейросети с описанием контекста для оперативной доработки алгоритма.

Практические выводы и результаты
Реализация этого проекта позволила успешно преодолеть профессиональный кризис и воплотить давнюю задумку. Пройдя за годы карьеры все этапы от подбора оборудования и руководства заводом до программирования промышленных контроллеров Siemens, Carel и Овен, я создал собственный гибкий SCADA-движок. Пусть на текущем месте работы разработка не нашла прямого применения и осталась для меня ценным хобби, результат превзошел ожидания.

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