Сегодня мы расскажем про еще один проект, запущенный для наших клиентов летом этого года: TDCloud — облачная диспетчерская. Проект был реализован для и совместно с компанией Ресэнерго.

О проекте

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

Сервис облачной теледиспетчеризации TDCloud позволяет получать и обрабатывать данные с измерительных устройств через web-интерфейс без вложений в инфраструктуру.

Как работает TDCloud?

  • Измерительные устройства подключаются к модулю передачи данных (далее по тексту «Модуль»).
  • Модуль передает данные с измерительных устройств на сервер TDCloud.
  • На сервере происходит регистрация, обработка и защищенное хранение данных.
  • Полученные данные доступны в личном кабинете на сайте http://tdcloud.ru в виде графиков и таблиц.
  • Журнал учета для предоставления в контролирующие органы формируется на сервере и печатается в один клик.

Организация работы

Стоит признать, начальные работы по проекту были довольно хаотичны и растянуты во времени. Связано это с двумя факторами. Первый — экспериментальный характер первых шагов. Нашей совместной задачей было — понять, с какой связкой технических решений и набором функционала реально получить полезный для клиентов продукт. Включенность требовалась двухсторонняя, так как мы хорошо понимали часть, связанную с вебом, а у Ресэнерго экспертиза была на стороне счетчиков и сбора данных. В итоге, нам тоже пришлось погрузиться немного в их область. До счетчиков не добрались, но с серверами сбора данных повозились в удовольствие.

Получив подтверждения гипотез и обрисовав основные функции, мы приступили к разработке демо. Цель была простая: без всяких излишеств вывести для конкретного клиента данные по его счетчикам в виде графиков и в табличном виде с возможность фильтрации по типам данных и времени. Результаты и вопросы согласовывали в основном в переписке и проекте 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. Из других интересных инструментов, использующихся на сайте:

  • prawn — гем для генерации pdf-отчетов
  • axlsx — выгрузка данных в формет Excel
  • raphael и morris.js — отрисовка графиков

Текущая работа

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