1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cloudSj-TTIot

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

TTIoT: краткое описание

TTIOT Broker использует протокол MQTT для взаимодействия с устройствами. Он может применяться в таких областях, как сбор данных, мониторинг энергии, умный дом, умная промышленность, сельское хозяйство и управление водными ресурсами.

Он обеспечивает надёжное соединение и обмен данными с большим количеством устройств, поддерживает сбор данных с устройств в облаке и M2M-коммуникацию. TTIOT не требует внедрения сторонних сервисов и предоставляет API для событий, что позволяет удалённо управлять устройствами. Кроме того, TTIOT планирует продолжать разработку открытых IoT-решений, включая мультипротокольные движки, системы управления устройствами, механизмы правил и инструменты анализа данных.

Broker-компонент TTIot преобразует протоколы TCP/IP в пул событий, позволяя разработчикам сосредоточиться на программировании событий.

Важные обновления версии 2.1

  • Добавлена поддержка SSL-шифрования с использованием протоколов https, wss и tls. В конфигурационном файле необходимо указать следующие параметры:
    • ssl:
      • enabled: true
      • certificateType: PKCS12
      • certificatePath: /Users/shijun/Desktop/TTIOT/ca/server/3938.pfx
      • certificatePassword: 5J7HDiJM

Важные обновления версии 2.0

  • Поддержка мультипротокольного преобразователя — один порт поддерживает три протокола HTTP, WebSocket и TCP. При этом используется тот же протокол MQTT. Поддерживается взаимодействие между клиентами, использующими разные протоколы (см. раздел «Использование» п. 10).

Пример запроса с использованием HTTP для отправки сообщения устройству:

Headers:userName //имя устройства
tenantId //идентификатор арендатора
password //пароль устройства
Body:
{
"mqttQos": 1, //качество обслуживания сообщений
"payload": {  //тело сообщения
    "rule": "chat",
    "content": "hello"
},
"retain": false, //флаг сохранения сообщения
"topic": "/m" //тема сообщения
}
  • Поддержка механизма маршрутизации сообщений @Ruler — позволяет определять правила для обработки сообщений (см. раздел «Использование», п. 12).

Функции

  1. Аутентификация и авторизация (auth)

Все события, обрабатываемые TTIoT, автоматически проверяются на наличие авторизации. Неавторизованные устройства блокируются. Для этого достаточно добавить аннотацию @Eventor(auth = true) к соответствующему классу.

  1. Многопользовательский доступ (saas)

Устройства в TTIoT принадлежат определённому арендатору. Идентификаторы устройств уникальны для каждого арендатора и состоят из идентификатора арендатора, имени устройства и уникального идентификатора. Клиентские идентификаторы формируются по схеме: tenantId-devName-xxxx (где xxxx — зарезервированное поле). Также предоставляется интерфейс для регистрации устройств.

  1. Инверсия управления (IOC)

В TTIoT отказались от использования сторонних фреймворков IOC и создали собственный облегчённый контейнер, который управляет всеми слушателями при запуске проекта.

  1. Подписка и публикация сообщений (QoS)
  • Поддерживаются три уровня качества обслуживания (QoS):
    • Qos0 — однократная передача;
    • Qos1 — хотя бы однократная передача;
    • Qos2 — только однократная передача.

Эта модель подходит для любых сетевых условий, особенно для сетей с низкой пропускной способностью.

  • Используются подстановочные знаки и понижение уровня сообщений.

TTIot предоставляет возможность гибкой подписки на темы с помощью подстановочных знаков:

  • одиночный символ * — соответствует любому символу в указанной позиции;
  • символ + — соответствует одному или нескольким символам в указанной позиции;
  • символы # — соответствуют нулю или более символам в указанном диапазоне позиций.

Это позволяет устройствам гибко подписываться на интересующие их темы.

  1. Контроль сердцебиения (Idle)

TTIot предлагает два способа контроля сердцебиения:

  • определение на уровне сервера:

    TTiot:
      heartbeatTimeout: 10
  • установка на уровне клиента через переменный заголовок keepAliveTimeSeconds.

  1. Сохранение сообщений и завещания (LWT)
  • Только одна тема может иметь сохранённое сообщение. Брокер сохраняет последнее сохранённое сообщение для каждой темы. Клиенты, подписанные на тему, сразу получают сохранённое сообщение после подписки. Чтобы отправить сохранённое сообщение, необходимо установить флаг retain в значение true.

  • LWT (Last Will and Testament) — механизм, позволяющий брокеру отправлять сообщение клиенту в случае его отключения. Когда клиент подключается к брокеру, он может указать LWT-сообщение. Если клиент неожиданно отключается, брокер отправляет указанное сообщение в указанную тему.

Использование

  1. Конфигурационный файл

Конфигурационные файлы следуют стилю yaml и имеют имя TTIotBootstrap.yml. Они должны быть добавлены в каталог resources модуля.

Пример конфигурации:

TTiot:
  port: 8726 #порт
  heartbeatTimeout: 10 #интервал сердцебиения
  netty: 
    bossGroupCount: -1  #-1 означает, что количество потоков зависит от процессора
    workerGroupCount: -1 #-1 означает, что количество рабочих потоков зависит от процессора, этот параметр определяет рабочие потоки netty и основные потоки TTIot
  redis: #конфигурация redis
  1. Запуск проекта

Для запуска проекта используется команда:

new ServerLauncher().launch();
  1. Пользовательские источники данных

Необходимо реализовать интерфейс DbHelper и добавить источник данных в плагин. По умолчанию TTIot использует Redis в качестве источника данных. Пример кода:

 new ServerLauncher().dbHelper(new RedisDbHelper(new RedisSourceProvider())).launch();
  1. Пользовательский обработчик исключений

Можно создать собственный обработчик исключений, унаследовав ExceptionHandlerAdapter или реализовав интерфейс Thread.UncaughtExceptionHandler. Затем добавить обработчик в проект с помощью команды:

new ServerLauncher().exceptionHandler(new ExceptionHandlerDemo()).launch();
  1. Внедрение зависимостей

Поскольку слушатели управляются TTIot, существует два уровня внедрения зависимостей. Необходимо добавить аннотацию @Inject к объектам, которые требуется внедрить.

  • Сервисное внедрение:
@Listener(asynchronous = true)
public class LoginLogListener extends MqttApplicationListener<MqttConnectEvent> {
 @Inject
 private SessionService sessionService;
 }
  • Внедрение DAO:

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

TTIoT — облачные IoT-компоненты для интернета вещей; ориентированы на JAVA; netty; mqtt; асинхронная отправка; на основе событий; обеспечивают безопасное и надёжное соединение и обмен данными для устройств. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/cloudSj-TTIot.git
git@api.gitlife.ru:oschina-mirror/cloudSj-TTIot.git
oschina-mirror
cloudSj-TTIot
cloudSj-TTIot
master