Сегодня расскажем про проект, который мы реализовали для и совместно с компанией Ресэнерго.
TDCloud — облачная диспетчерская.
Сервис облачной теледиспетчеризации TDCloud позволяет получать и обрабатывать данные с измерительных устройств через web-интерфейс без вложений в инфраструктуру.
Начальные работы по проекту были довольно хаотичны и растянуты во времени. Связано это с двумя факторами. Первый — экспериментальный характер первых шагов. Нашей совместной задачей было — понять, с какой связкой технических решений и набором функционала реально получить полезный для клиентов продукт. Включенность требовалась двухсторонняя, так как мы хорошо понимали часть, связанную с вебом, а у Ресэнерго экспертиза была на стороне счетчиков и сбора данных. В итоге, нам тоже пришлось погрузиться немного в их область. До счетчиков не добрались, но с серверами сбора данных повозились в удовольствие.
Получив подтверждения гипотез и обрисовав основные функции, мы приступили к разработке демо. Цель была простая: без всяких излишеств вывести для конкретного клиента данные по его счетчикам в виде графиков и в табличном виде с возможность фильтрации по типам данных и времени. Результаты и вопросы согласовывали в основном в переписке и проекте basecamp. Итоги подводили на редких личных встречах. Ресэнерго демонстрировало результаты своим непосредственным клиентам, таким образом проверяя их заинтересованность.
Ускорение коммерческому запуску проекту дала неожиданная возможность презентации на выставке лучших инновационных проектов в рамках форума Селигер 2014. За несколько дней мы получили от Ресэнерго простые и приятные макеты дизайна, а также согласовали список доработок и фич, которых явно не хватало для первой полноценной версии. В итоге практически за полторы недели TDCloud оформился и ожил.
Посмотрим, что представляет из себя сервис TDCloud изнутри.
У конечных клиентов стоят счетчики для снятия интересующих показаний, условно текущий расход или накопленный объем воды в резервуарах. Счетчики отправляют показания серверу, используя протокол Modbus, для обмена используется tcp/ip соединение. На сервере происходит преобразование и обработка данных в удобный для последующей обработки вид. В качестве сервера используется Lectus Modbus server.
Наша задача по сути состояла из следующих частей:
Modbus сервер работает на базе Windows, реализуя DDE (Dynamic Data Exchange) протокол для получения данных с него. Для нас это был неподходящий вариант, так как мы живем в nix среде. Поэтому мы использовали дополнительную возможность сервера — отправлять данные через ODBC (Open Database Connectivity) напрямую SQL серверу, в данном случае мы используем PostgreSQL. Таким образом, у нас есть доступ к набору показаний, которые остается обработать и показать красивым образом.
Пользовательское веб-приложение построено на Ruby on Rails. В контексте количества данных речь идет о показаниях одновременно с десятков счетчиков, присылающих значения каждые 5-10 секунд, поэтому объем данных для обработки получается довольно внушительный. Обрабатываются и консолидируются они с помощью гема celluloid. Из других интересных инструментов, использующихся на сайте:
После запуска, как это часто бывает, на проекте возникла пауза. Ресэнерго собирали обратную связь от своих клиентов, периодически обращаясь к нам за минорными доработками и фиксами. В 2017 году мы собрались опять, и сейчас идёт работа над добавлением функционала мнемосхем и связи их с непосрдественным оборудованием на объектах.
Проведите конкурс среди участников CMS Magazine
Узнайте цены и сроки уже завтра. Это бесплатно и займет ≈5 минут.