Привет, Хабр! Эта статья — продолжение цикла материалов «Интеграция с инфраструктурой NB-IoT МТС». Вот первая, вторая и третья части. Сегодня поговорим о сервере приложений, его функциях и возможностях. Кроме того, расскажем и о том, что мы в МТС используем для создания тестового сервера приложений и как это работает. Самое интересное — под катом!   Как задачи, так и функции сервера зависят от конкретной реализации IoT-приложения. Как минимум сервер приложений должен уметь принимать сообщения от SCEF с данными, полученными от устройств, а также статусом переданных команд. Ещё одна важная функция — отправка на устройство команды управления через SCEF. Функционал может быть расширен такими возможностями, как хранение данных, их обработка и визуализация, а также приём и обработка данных о мониторинге устройств. Что использовать в качестве сервера приложений? Вариантов достаточно много. Например, это системы АСКУЭ («Пирамида»), системы ERP («1С»), классические облачные IoT-платформы (такие как Microsoft IoT Hub, Azure, MTS IoT Hub и другие). К серверу есть несколько требований, которым он должен соответствовать. Ключевых требований два: первое — платформы должны быть достаточно гибки; второе — у них должна быть возможность настройки распознавания и интерпретации входящего потока данных. На этапе создания и отладки устройств имеет смысл использовать тестовые серверы приложений с минимальным функционалом, но максимально гибкие и прозрачные.  В компании МТС многие годы для тестирования и отладки устройств используется Node-RED, позволяющий создать тестовый сервер приложений буквально за несколько минут. Это потоковый инструмент разработки для визуального программирования, первоначально разработанный компанией IBM для соединения аппаратных устройств, API и онлайн-сервисов как часть интернета вещей. Node-RED предоставляет веб-браузер-редактор потока, который можно использовать для создания функций JavaScript. Элементы приложений можно сохранять либо же делиться ими для повторного использования. Среда выполнения построена на Node.js. Потоки, созданные в Node-RED, хранятся с использованием JSON-структур. В 2016 году IBM предоставила Node-RED как открытый исходный код, проект JS Foundation. Node-RED — кросс-платформенный инструмент, он может работать под управлением операционных систем Windows, Linux, Android. Инструмент нетребователен к ресурсам и может быть установлен как на одноплатный ПК вроде Raspberry Pi и Orange Pi, так и на ноутбук или десктоп с различной архитектурой. Также Node-RED можно установить на виртуальную машину в облаке. Ещё одна возможность — использование Node-RED в облаке IBM. Инструкции по установке и настройке Node-RED, а также огромное количество учебных материалов и примеров можно найти на официальном сайте проекта. Давайте попробуем запустить несложный сервер приложений. Самый простой сервер такого рода можно создать с помощью Node-RED всего за пару минут. Он включает в себя два HTTP-эндпоинта: один служит для получения данных от устройства через SCEF. URL этого эндпоинта: http://192.168.1.25:1880/Data; второй принимает данные о мониторинге состояния устройств MONTE. Его URL: http://192.168.1.25:1880/MONTE.  Данные, полученные этими двумя входными узлами, отображаются в окне отладки. Кроме того, SCEF получает ответ с кодом 200. Поток простейшего тестового сервера приложений представлен на рисунке выше. Текст этого потока, который можно непосредственно импортировать в Node-RED, представлен ниже: На этом всё. Сегодня статья небольшая, но всё по делу (впрочем, как и всегда). Если у вас есть вопросы, предложения, пишите в комментариях — обсудим.