TTIoT: краткое описание
TTIOT Broker использует протокол MQTT для взаимодействия с устройствами. Он может применяться в таких областях, как сбор данных, мониторинг энергии, умный дом, умная промышленность, сельское хозяйство и управление водными ресурсами.
Он обеспечивает надёжное соединение и обмен данными с большим количеством устройств, поддерживает сбор данных с устройств в облаке и M2M-коммуникацию. TTIOT не требует внедрения сторонних сервисов и предоставляет API для событий, что позволяет удалённо управлять устройствами. Кроме того, TTIOT планирует продолжать разработку открытых IoT-решений, включая мультипротокольные движки, системы управления устройствами, механизмы правил и инструменты анализа данных.
Broker-компонент TTIot преобразует протоколы TCP/IP в пул событий, позволяя разработчикам сосредоточиться на программировании событий.
Важные обновления версии 2.1
Важные обновления версии 2.0
Пример запроса с использованием HTTP для отправки сообщения устройству:
Headers:userName //имя устройства
tenantId //идентификатор арендатора
password //пароль устройства
Body:
{
"mqttQos": 1, //качество обслуживания сообщений
"payload": { //тело сообщения
"rule": "chat",
"content": "hello"
},
"retain": false, //флаг сохранения сообщения
"topic": "/m" //тема сообщения
}
Функции
Все события, обрабатываемые TTIoT, автоматически проверяются на наличие авторизации. Неавторизованные устройства блокируются. Для этого достаточно добавить аннотацию @Eventor(auth = true) к соответствующему классу.
Устройства в TTIoT принадлежат определённому арендатору. Идентификаторы устройств уникальны для каждого арендатора и состоят из идентификатора арендатора, имени устройства и уникального идентификатора. Клиентские идентификаторы формируются по схеме: tenantId-devName-xxxx (где xxxx — зарезервированное поле). Также предоставляется интерфейс для регистрации устройств.
В TTIoT отказались от использования сторонних фреймворков IOC и создали собственный облегчённый контейнер, который управляет всеми слушателями при запуске проекта.
Эта модель подходит для любых сетевых условий, особенно для сетей с низкой пропускной способностью.
TTIot предоставляет возможность гибкой подписки на темы с помощью подстановочных знаков:
Это позволяет устройствам гибко подписываться на интересующие их темы.
TTIot предлагает два способа контроля сердцебиения:
определение на уровне сервера:
TTiot:
heartbeatTimeout: 10
установка на уровне клиента через переменный заголовок keepAliveTimeSeconds.
Только одна тема может иметь сохранённое сообщение. Брокер сохраняет последнее сохранённое сообщение для каждой темы. Клиенты, подписанные на тему, сразу получают сохранённое сообщение после подписки. Чтобы отправить сохранённое сообщение, необходимо установить флаг retain в значение true.
LWT (Last Will and Testament) — механизм, позволяющий брокеру отправлять сообщение клиенту в случае его отключения. Когда клиент подключается к брокеру, он может указать LWT-сообщение. Если клиент неожиданно отключается, брокер отправляет указанное сообщение в указанную тему.
Использование
Конфигурационные файлы следуют стилю yaml и имеют имя TTIotBootstrap.yml. Они должны быть добавлены в каталог resources модуля.
Пример конфигурации:
TTiot:
port: 8726 #порт
heartbeatTimeout: 10 #интервал сердцебиения
netty:
bossGroupCount: -1 #-1 означает, что количество потоков зависит от процессора
workerGroupCount: -1 #-1 означает, что количество рабочих потоков зависит от процессора, этот параметр определяет рабочие потоки netty и основные потоки TTIot
redis: #конфигурация redis
Для запуска проекта используется команда:
new ServerLauncher().launch();
Необходимо реализовать интерфейс DbHelper и добавить источник данных в плагин. По умолчанию TTIot использует Redis в качестве источника данных. Пример кода:
new ServerLauncher().dbHelper(new RedisDbHelper(new RedisSourceProvider())).launch();
Можно создать собственный обработчик исключений, унаследовав ExceptionHandlerAdapter или реализовав интерфейс Thread.UncaughtExceptionHandler. Затем добавить обработчик в проект с помощью команды:
new ServerLauncher().exceptionHandler(new ExceptionHandlerDemo()).launch();
Поскольку слушатели управляются TTIot, существует два уровня внедрения зависимостей. Необходимо добавить аннотацию @Inject к объектам, которые требуется внедрить.
@Listener(asynchronous = true)
public class LoginLogListener extends MqttApplicationListener<MqttConnectEvent> {
@Inject
private SessionService sessionService;
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )