ИБП и генераторные установки
Состояние батарей и нагрузки снимается непрерывно, тестовый пуск запускается из панели без выезда на объект.
Телеметрия промышленного оборудования
Агент Selion не ждёт входящих подключений: он сам держит открытый запрос к очереди команд и получает ответ в момент, когда команда появилась. Белый IP, VPN и проброс портов на объекте не нужны.
Как устроен обмен
Ниже — реальная картина запросов четырёх агентов за полторы минуты. Полоса означает открытый запрос: агент уже отправил его, но ответ ещё не пришёл, потому что команды для устройства пока нет.
cdn.selion.ru и просит очередь команд подождать до 30 секунд, если команд нет.
seq, действительный только для этого агента и только один раз.
Кэширование
Транспортный контур устроен так, что каждый ответ существует ровно в одном экземпляре и предназначен ровно одному устройству. Это не упущение в настройке заголовков, а условие корректной работы: кэш здесь означал бы чужую команду на чужом объекте.
В теле лежит команда для конкретного серийного номера. Отдача такого ответа второму устройству из кэша означала бы выполнение чужой команды на чужом объекте, поэтому ядро ставит no-store на каждый ответ очереди.
Запрос висит открытым до 30 секунд и завершается либо командой, либо пустым 204. Один и тот же URL за минуту даёт разные ответы — кэшировать нечего, повторно использовать нечего.
Каждый агент держит одно соединение и переоткрывает его сразу после ответа. Тысяча устройств на объекте — это примерно 33 запроса в секунду круглосуточно, при среднем ответе в 240 байт.
Статика панели, схемы объектов и файлы прошивок из /firmware/ отдаются с immutable и живут в кэше месяцами. Поэтому доля попаданий по домену в целом низкая: основной объём запросов приходится на очередь команд.
Применение
Состояние батарей и нагрузки снимается непрерывно, тестовый пуск запускается из панели без выезда на объект.
Температурные журналы по каждой точке, оповещение при отклонении и удалённая корректировка уставок.
Показания приборов, диагностика связи и перезапуск контроллера командой из очереди, если узел перестал отвечать.