MQTT
MQTT (Message Queue Telemetry Transport, перенос телеметрии в очередь сообщений) - это открытый протокол передачи сообщений, используемый для взаимодействий компьютер-компьютер, который позволяет передавать телеметрические данные в форме сообщений из переносных устройств с высокой задержкой или ограниченных сетей на сервер или в брокер микросообщений. Переносные устройства могут варьироваться от датчиков и исполнительных механизмов до мобильных телефонов, встроенных систем в транспортных средствах или ноутбуков и полномасштабных компьютеров.
MQTT работает в архитектуре публикации/подписки. Для MQTT требуются брокер сообщений и устройства связи. Устройства связи можно называть клиентами. Брокер и клиенты могут публиковать параметр, называемый "темой", и подписываться на него. Можно защитить связь через MQTT с помощью SSL.
Расширение MQTT обеспечивает возможность подключения для небольших электронных устройств и датчиков и позволяет им взаимодействовать с ThingWorx.
Можно использовать любой стандартный брокер для MQTT в соответствии с требованиями организации. Дополнительные сведения о настройках управления пользователями см. в документации продукта для брокера, который вы собираетесь установить.
* 
В операционной системе Windows брокер выполняется как сервис после установки.
Импорт MQTT
* 
Модель поддержки расширений ThingWorx недавно изменилась. Большинство расширений больше не будет доступно на странице загрузки. Дополнительные сведения см. в этой статье.
Ознакомьтесь с разделом Импорт расширений и импортируйте файл MQTT_Extension.zip в ThingWorx. При установке расширения в списке Шаблоны вещей появится следующее:
MQTTConnection
Позволяет установить совместно используемое соединение для вещей MQTTSubscriber.
MQTTSubscriber
Позволяет создать подписки на одну или несколько тем на сервере MQTT. Добавьте свойства из раздела "Конфигурация" > "Свойство" в раздел сопоставлений тем MQTT.
При редактировании вещи MQTTSubscriber перезапустите связанную вещь MQTTConnection, чтобы обновить ее.
MQTT
Позволяет использовать все приведенные выше конфигурации в одной вещи.
Конфигурирование MQTT
В следующем разделе описано, как сконфигурировать параметры в MQTT после установки расширения в ThingWorx и установить соединение с брокером.
1. Запустите брокер, установленный на компьютере.
2. В ThingWorx создайте новую Вещь, выберите MQTT как Шаблон вещи и щелкните Сохранить.
3. Щелкните представление Свойства и предупреждения, и отобразится следующий экран:
На приведенном выше рисунке выноски 1 и 2 показывают следующее:
Выноска
Описание
1
Зеленый значок показывает, что созданная вещь связана с брокером. Он отображается красным цветом, когда вещь отсоединена.
2
Для свойства isConnected задается значение ИСТИНА в поле Значение, когда установлено соединение между вещью и брокером. При разъединении в поле Значение задается значение ЛОЖЬ.
Для этого свойства задается значение false, если у одноэлементного узла в среде ThingWorx HA имеются проблемы с подключением к брокеру. Однако другие узлы продолжат публиковать сообщения, даже если для этого свойства установлено значение false.
4. Щелкните Добавить, чтобы добавить свойство.
5. Появится следующий экран:
6. Введите наименование свойства, базовый тип и другие необходимые сведения.
7. Сохраните информацию, относящуюся к свойству.
8. Щелкните представление Конфигурация, появится следующий экран:
В следующей таблице описаны различные параметры, которые можно найти в представлении Конфигурация.
JDBC Settings
Описание
clientIdFormat
Наименование клиента, зарегистрированного с помощью брокера MQTT.
* 
Оно должно быть уникальным для конкретного брокера MQTT.
Лексема {s} относится к имени сервера ThingWorx Platform. Она получает значение, указанное в конфигурации Federation Subsystem для наименования сервера.
Лексема {t} относится к текущему наименованию вещи. Если требуется, чтобы различные платформы были соединены с одним брокером и имели вещи с одинаковым наименованием, рекомендуется указать имя сервера в конфигурации подсистемы объединения.
useSSL
Выберите эту опцию, если брокер поддерживает безопасные соединения.
serverName
Имя хост-компьютера, на котором выполняется брокер MQTT.
* 
Оставьте поле пустым, если брокер выполняется на том же компьютере, что и ThingWorx Platform.
serverPort
Порт для брокера MQTT. Значение по умолчанию: 1883.
userId
Имя пользователя для соединения с брокером.
Password
Пароль пользователя для userId.
Timeout
Время ожидания для выполнения запроса на публикацию в миллисекундах. Значение по умолчанию: 5000 мс.
ConnectTimeout
Время в миллисекундах для ожидания установки соединения между ThingWorx Platform и брокером MQTT.
retryInterval
Интервал времени в миллисекундах для попытки повторного соединения, если соединение с брокером MQTT разорвано.
Механизм повторной попытки работает только в случае, если соединение было установлено в некоторый момент времени и после было разорвано.
retryAttempts
Число выполняемых повторных попыток соединения.
Например, если установленное соединение разорвано из-за сетевых помех или из-за других проблем, число попыток восстановить соединение задается значением, введенным в этом поле. Каждая повторная попытка отделяется интервалом retryInterval, указанным выше.
pingInterval
Время в миллисекундах для периодической проверки статуса соединения между ThingWorx Platform и брокером MQTT.
Значение по умолчанию: 45 секунд. Каждые 45 секунд сообщение обмена пакетами (ping) отправляется брокеру MQTT для проверки наличия ответа. Ответ брокера означает, что соединение является действующим.
connectionIdleTimeout
Период ожидания в миллисекундах для соединения.
Если соединение бездействует дольше заданного времени, это показывает, что в канале не было обмена сообщениями, и вещь помечается как отсоединенная.
Если свойства не публикуются или на них нет подписки, то pingInterval продолжает обновление с последнего активного времени, чтобы вещь не отсоединилась.
qos
Это значение задает уровень приоритета связи между брокером и его клиентами.
В таблице конфигурации AutoMapping имеются настройки для автоматического сопоставления свойств для публикации или подписки. Если автоматическое сопоставление включено, нет необходимости указывать таблицу для Mappings. Любое свойство, которое создается в вещи, автоматически сопоставляется с этим свойством. Наименование раздела определяется опцией format, указанной ниже.
AutoMapping
Описание
format
Формат наименования раздела, который соответствует свойству.
Лексема {s} предназначена для имени сервера, {t} - для наименования вещи, а {p} - для имени свойства.
enabled
Можно выбрать функцию автоматического сопоставления.
9. Чтобы сопоставить свойства вещи с разделами MQTT вручную, щелкните Добавить в разделе Mappings.
Появится следующий экран:
В следующей таблице перечислены опции конфигурации, доступные для каждого сопоставления.
Subscribe
Подписывается на свойство для получения опубликованных изменений в указанном разделе из брокера MQTT.
Publish
Публикует изменения значения свойства в брокере MQTT с использованием указанного раздела.
Retain
Сохраняет последнее опубликованное значение свойства в брокере MQTT. Когда новое устройство или клиент подписывается на раздел с сохраненным сообщением, брокер автоматически отправляет сообщение, содержащее последнее опубликованное значение. Значения из сохраненного сообщения могут быть полезны, если клиенту требуется начальное значение. Вместо задания начального значения местозаполнителя и ожидания следующего сообщения отправляется сохраненное значение.
Имя
Наименование свойства вещи, с которым будет сопоставлен брокер MQTT.
Раздел
Наименование раздела для публикации или подписки на брокер MQTT.
10. Введите имя свойства, которое было добавлено на шаге 6 здесь, и наименование раздела и выберите, нужно ли Подписаться, Опубликовать или Сохранить. Свойство публикуется или подписывается на раздел, наименование которого вы вводите.
11. Щелкните Добавить.
12. В представлении Properties and Alerts щелкните Задать значение.
13. Появится следующий экран:
Введите значение свойства в поле и сохраните его.
14. Выполняйте команды запуска, специфичные для брокера, установленного на компьютере, и проверьте, как выполняются задачи публикации и подписки между свойствами вещи и брокером.
Было ли это полезно?