КДПВ
КДПВ

В начале был RDP

Шел 2014 год, в моем поселке люди сидят на водозаборе и управляют по RDP скважинами удаленно.

Система работает круглые сутки и на мониторе уже видна "тень" красных и зеленых индикаторов.

Но у этой системы был минус, необходимость поддержания хорошего соединения, а управляющий компьютер находится в лесу и интернет там так себе.

На тот момент Wi-Fi был малораспространен и вся сеть была построена на двух направленных друг на друга антеннах Wi-Fi, одну поставили на водонапорную башню, а вторую на мачту в лесу.
И это отлично работало, пока не появился завод, да, прямо между скважинами и водозабором построили завод.

Связь стала значительно хуже и система не могла так же хорошо выдавать несколько мегабит, а часто просто падала из за отсутствия сигнала.

Я даже попытался написать скрипт на C#, который бы перезапускал компьютер и все вокруг, если сеть упала, но со скриптом не задалось и поздно вечером я грустный ехал в лес, чтобы отключить этот скрипт.

А все потому, что скрипт не успевал дождаться, пока сеть появится отправлял компьютер в ребут через 30 секунд. Больше я такие скрипты не писал.

Мы пойдем другим путём

Решили поставить 3G модем и усилитель сигнала, помогло это только на время, потому что через некоторое время организации работающие вокруг начали так же пользоваться "свистками" и связь заметно ухудшилась.

RDP-соединение начало рваться, но это была не единственная проблема.

Проблемы только начинаются

Контроллер который подключался с помощью USB к компьютеру не был защищен от помех и стабильно зависал, если запустить скважину рядом с которой он находится.

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

А еще здание, в котором находился компьютер, находилось на окраине леса, что прибавляло проблем с насекомыми, которые очень любят теплые компьютеры и вентиляторы.

Компьютер решили погрузить в трансформаторное масло, да, жестко, но выбора не было.

Страшно, очень страшно, мы не знаем что э��о такое...
Страшно, очень страшно, мы не знаем что это такое...

Блоки питания слева на картинке выполняют роль индикаторов фазы

Сняли кулеры, аккуратно закрепили провода и опустили его в короб с маслом.

Блок питания погружать не стали, просто положили на короб, все-таки 220 вольт, а вдруг пробьет на материнскую плату.

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

Хотя руки после этого масла пахнут еще неделю.

Но мы же сможем?

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

На тот момент ESP8266 были не так распространены, а я уже знал про Arduino Mega с Ethernet-shield

Я выбрал на основе чего мы сделаем эту систему, брат съездил в Нижний Новгород за Arduino и мы всю ночь собирали новую систему.

Помните блоки питания слева от компьютера?
Я не нашел решения, как определять наличие фазы, поэтому решили воспользоваться уже готовым решением. Эти блоки питания были на 12 вольт, от каких-то бытовых устройств.

Поэтому, пока я писал прошивку для Arduino, брат распаивал стабилизаторы 5v, чтобы блок питания точно не подал больше 5 вольт на аналоговый вход Arduino.

А еще, если неправильно установить Ethernet Shield, то он замыкает свои контакты на USB порт и Arduino зависает.
Узнал я об этом через неделю после установки, подложили картонку, работает до сих пор.

Чтобы сэкономить трафик и не зависеть от скорости, я решил сделать систему в виде JSON "клиент-сервера".

Написал первую версию HTTP сервера, который отвечал JSON данными,
сделал простенькую веб-панель для отправки запросов и на этом всё, больше ничего не требуется.

Фото Arduino в сборе
Фото Arduino в сборе

Это все заменило два компьютера, один на водозаборе, а второй на скважине.

Еще я добавил датчик движения, датчик температуры и дисплей для вывода информации.

Дисплей не пригодился, потому что на него никто не смотрел, а вот датчик температуры помогал, иногда в здании было больше 30 градусов и я настроил включение запасного выхода реле при превышении температуры.

Это реле включало вентилятор, который продувал небольшую площадь за несколько минут.

Теперь в качестве клиента я мог использовать даже планшеты, они как-раз в то время начали появляться в продаже по хорошим ценам.

Выглядит безопасно

Как подключиться к Arduino, если она в лесу и за 3G модемом? Белый IP.

Белый IP на модеме уже был, а Hamachi был настолько медленным, что проще было опять включить Wi-Fi антенну, выбор пал на прямое соединение.

Да, белый IP это плохо, но я подошел к вопросу основательно.

  1. Нестандартный порт после 20000, что-то вроде 28572

  2. Firewall на роутере, ограничивающий доступ только с определенного IP

Конечно для Firewall пришлось использовать сервер, но сайт компании я уже сделал и с этим проблем не возникло.

В принципе для безопасности достаточно, а для доступа к сайту все-равно требовался уникальный хеш в запросе.

Но даже если кто-то подберет хеш к серверу, он все-равно не узнает, какие команды ну��но отправлять, чтобы получить хотя бы байт информации, ведь я не не писал документацию.
Никогда.

Это своего рода защита от взлома, сейчас удобно, открыл /api/swagger.json и вот тебе вся информация, ломай-круши.

Панель управления АСУС
Панель управления АСУС

А что теперь?

Эта система отработала уже 11 лет и пора бы её менять

Да, в первый год приходилось ездить и проверять, почему она опять не включает какую-то скважину.
Но обычно все решалось просто, мы с братом приезжали на объект, выливали воду из ящика с Arduino, вытаскивали всех мошек, пчел, ос и она опять работала без перебоев.

Да, вода ей не мешала, только контакты немного замыкала и сотрудники на водозаборе переживали, что кнопка иногда моргает, хотя скважина отключена.

В последнюю поездку мы даже насверлили дырок, чтобы вода сама уходила и поставили Arduino на стойки от материнской платы.

Перебои с интернетом, электричеством и т.д. я не учитываю, за это я не могу отвечать

На данный момент планируется замена Arduino на более современный ESP32 с аналоговым мультиплексором для блока реле, но это уже другая история...

На этом исторический пост окончен, спасибо за внимание!