Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для поддержки взаимодействия между протоколами Центр Интернета вещей определяет общий набор функций обмена сообщениями, доступных во всех протоколах, подключенных к устройству. Эти функции можно использовать как в сообщениях между устройствами, так и в сообщениях из облака на устройство.
Примечание.
Некоторые функции, упоминаемые в этой статье, например обмен сообщениями между облаком и устройством, двойники устройств и управление устройствами, доступны только для Центра Интернета вещей уровня "Стандартный". Дополнительные сведения о базовых и стандартных и бесплатных уровнях Центра Интернета вещей см. в разделе Выберите нужный уровень и размер Центра Интернета вещей для вашего решения.
Для реализация отправки сообщений с устройства в облако Центр Интернета вещей использует модель потоковой передачи сообщений. Сообщения Центра Интернета вещей, передаваемые через облако, больше похожи на событияЦентров событий, чем сообщенияслужебной шины, в том, что существует большой объем событий, передаваемых через службу, которую может читать несколько читателей.
Сообщение Центра Интернета вещей состоит из следующих компонентов.
Предопределенный набор системных свойств , как описано далее в этой статье.
Набор свойств приложения. Словарь свойств строки, которые приложение может задать и использовать без необходимости десериализации текста сообщения. Центр Интернета вещей никогда не изменяет эти свойства.
Текст сообщения, который может быть любым типом данных.
Каждый протокол устройства реализует свойства параметров различными способами. Дополнительные сведения см. в разделе "Обмен данными с центром Интернета вещей" с помощью протокола MQTT и взаимодействия с центром Интернета вещей с помощью протокола AMQP.
При отправке сообщений с устройства в облако с помощью протокола HTTPS или отправки сообщений из облака в устройство имена свойств и значения могут содержать только буквенно-цифровые символы ASCII, а также ! # $ % & ' * + - . ^ _ ` | ~
.
Отправка сообщений с устройства в облако с помощью Центра Интернета вещей имеет следующие характеристики:
Сообщения, отправляемые с устройства в облако, устойчивы и хранятся в конечной точке по умолчанию messages/events Центра Интернета вещей до семи дней.
Сообщения из устройства в облако могут составлять не более 256 КБ и группироваться в пакетах для оптимизации отправки. Размер пакетов не может превышать 256 КБ.
Центр Интернета вещей не допускает произвольное секционирование. Сообщения, отправляемые с устройства в облако, секционируются по исходному идентификатору deviceId.
Как описано в разделе "Управление доступом к Центру Интернета вещей" с помощью идентификатора Microsoft Entra, Центр Интернета вещей обеспечивает проверку подлинности на устройстве и управление доступом.
Можно пометить сообщения данными, которые будут передаваться в свойства приложения. Дополнительные сведения см. в разделе "Обогащение сообщений" для сообщений Центра Интернета вещей в облаке.
Примечание.
Каждый протокол Центра Интернета вещей предоставляет свойство типа контента сообщения, которое учитывается при маршрутизации данных в пользовательские конечные точки. Чтобы данные правильно обрабатывались в месте назначения (например, JSON, обрабатываемый как строка синтаксического анализа вместо двоичных данных в кодировке Base64), укажите соответствующий тип контента и набор символов для сообщения.
Чтобы использовать текст сообщения в запросе маршрутизации в Центре Интернета вещей, укажите допустимый объект JSON для сообщения и задайте для свойства типа контента сообщения значение application/json;charset=utf-8
.
В следующем примере показан допустимый, маршрутизируемый текст сообщения:
{
"timestamp": "2022-02-08T20:10:46Z",
"tag_name": "spindle_speed",
"tag_value": 100
}
Системные свойства сообщений из устройства в облако
Свойство | Описание | Задается пользователем? | Ключевое слово для запроса маршрутизации |
---|---|---|---|
идентификатор сообщения | Задаваемый пользователем идентификатор сообщения, используемый для шаблонов типа "запрос-ответ". Формат: строка с учетом регистра (до 128 символов) буквенно-цифровых 7-битных символов ASCII плюс - : . + % _ # * ? ! ( ) , = @ ; $ ' . |
Да | идентификатор сообщения |
iothub-enqueuedtime | Дата и время, когда Центр Интернета вещей получает сообщение об устройстве в облако . | Нет | enqueuedTime |
идентификатор пользователя | Идентификатор, используемый для указания источника сообщений. | Да | userId |
Идентификатор устройства iothub-connection-device-id | Центр Интернета вещей устанавливает этот идентификатор в сообщениях, отправляемых с устройства в облако. Содержит идентификатор deviceId устройства, отправившего сообщение. | Нет | идентификаторУстройстваПодключения |
Идентификатор-модуля-подключения-iothub | Центр Интернета вещей устанавливает этот идентификатор в сообщениях, отправляемых с устройства в облако. Содержит идентификатор moduleId устройства, с которого было отправлено сообщение. | Нет | идентификатор модуля подключения |
iothub-connection-auth-generation-id | Центр Интернета вещей устанавливает этот идентификатор в сообщениях, отправляемых с устройства в облако. Содержит connectionDeviceGenerationId (согласно Свойства удостоверений устройств) устройства, с которого было отправлено сообщение. | Нет | ИдентификаторПоколенияУстройстваПодключения |
iothub-connection-auth-method (метод аутентификации соединения iothub) | Центр Интернета вещей устанавливает этот метод проверки подлинности в сообщениях, отправляемых с устройства в облако. Это свойство содержит сведения о методе проверки подлинности, используемом для аутентификации устройства, отправляющего сообщение. | Нет | метод аутентификации подключения |
iothub-app-iothub-creation-time-utc | Разрешает устройству отправлять время создания события при отправке данных в пакет. | Да | время-создания-UTC |
iothub-время-создания-UTC | Разрешает устройству отправлять время создания события при отправке одного сообщения за раз. | Да | время-создания-UTC |
dt-dataschema | Центр Интернета вещей задает это значение в сообщениях устройства в облако. Оно содержит идентификатор модели устройства, указанный в подключении устройства. | Нет | $dt-dataschema |
dt-subject | Имя компонента, который отправляет сообщения с устройства в облако. | Да | $dt-тема |
Свойства приложения сообщений из устройства в облако
Применение свойств приложения обычно заключается в отправке временной метки с устройства, используя свойство iothub-creation-time-utc
, для фиксации времени отправки сообщения. Такая метка времени должна быть в формате UTC без сведений о часовом поясе. Например, значение 2021-04-21T11:30:16Z
является допустимым, а 2021-04-21T11:30:16-07:00
— нет.
{
"applicationId":"00001111-aaaa-2222-bbbb-3333cccc4444",
"messageSource":"telemetry",
"deviceId":"sample-device-01",
"schema":"default@v1",
"templateId":"urn:modelDefinition:mkuyqxzgea:e14m1ukpn",
"enqueuedTime":"2021-01-29T16:45:39.143Z",
"telemetry":{
"temperature":8.341033560421833
},
"messageProperties":{
"iothub-creation-time-utc":"2021-01-29T16:45:39.021Z"
},
"enrichments":{}
}
Системные свойства сообщений из облака на устройство
Свойство | Описание | Задается пользователем? |
---|---|---|
идентификатор сообщения | Задаваемый пользователем идентификатор сообщения, используемый для шаблонов типа "запрос-ответ". Формат: строка с учетом регистра (до 128 символов) буквенно-цифровых 7-битных символов ASCII плюс - : . + % _ # * ? ! ( ) , = @ ; $ ' . |
Да |
номер последовательности | Число (уникальное для каждой очереди устройства), которое Центр Интернета вещей назначает каждому сообщению, отправленному из облака на устройство. | Нет |
до | Назначение, указанное в сообщениях из облака на устройство . | Нет |
абсолютное время истечения срока | Дата и время истечения срока действия сообщения. | Да |
идентификатор корреляции | Строковое свойство в ответном сообщении, которое обычно содержит MessageId запроса в моделях "запрос-ответ". | Да |
идентификатор пользователя | Идентификатор, используемый для указания источника сообщений. Когда Центр Интернета вещей создает сообщения, идентификатор пользователя — это имя центра Интернета вещей. | Да |
iothub-ack | Генератор отзывов на сообщения. Это свойство используется в сообщениях, отправляемых из облака в устройство, чтобы запросить у Центра Интернета вещей отправку отзыва после того, как сообщение будет использовано устройством. Возможные значения: none (по умолчанию) — не создается сообщение обратной связи, positive — сообщение обратной связи будет получено, если исходное сообщение было завершено, negative — сообщение обратной связи будет получено, если срок действия сообщения истек (или было достигнуто максимальное количество доставок) и оно не было завершено устройством, или full — и положительное, и отрицательное сообщения обратной связи. | Да |
Имена системных свойств
Имена системных свойств различаются в зависимости от конечной точки, на которую отправляются сообщения.
Имя системного свойства | Центры событий | Хранилище Azure | Cлужебная шина | Сетка событий |
---|---|---|---|---|
Идентификатор сообщения | идентификатор сообщения | идентификатор сообщения | ИдентификаторСообщения | идентификатор сообщения |
Идентификатор пользователя | идентификатор пользователя | userId | UserId | идентификатор пользователя |
Идентификатор устройства подключения | Идентификатор устройства iothub-connection-device-id | идентификаторУстройстваПодключения | Идентификатор устройства iothub-connection-device-id | Идентификатор устройства iothub-connection-device-id |
Идентификатор модуля подключения | Идентификатор-модуля-подключения-iothub | идентификатор модуля подключения | Идентификатор-модуля-подключения-iothub | Идентификатор-модуля-подключения-iothub |
Идентификатор генерации аутентификации подключения | iothub-connection-auth-generation-id | ИдентификаторПоколенияУстройстваПодключения | iothub-connection-auth-generation-id | iothub-connection-auth-generation-id |
Метод проверки подлинности подключения | iothub-connection-auth-method (метод аутентификации соединения iothub) | метод аутентификации подключения | iothub-connection-auth-method (метод аутентификации соединения iothub) | iothub-connection-auth-method (метод аутентификации соединения iothub) |
тип содержимого | тип_содержимого | тип содержимого | ТипКонтента | iothub-content-type |
кодировка содержимого | кодировка содержимого (content-encoding) | кодировка содержимого | Кодировка содержимого | Кодировка iothub-content-encoding |
iothub-enqueuedtime | iothub-enqueuedtime | enqueuedTime | Н/П | iothub-enqueuedtime |
CorrelationId | идентификатор корреляции | correlationId | CorrelationId | идентификатор корреляции |
dt-dataschema | dt-dataschema | dt-dataschema | dt-dataschema | dt-dataschema |
dt-тема | dt-subject | dt-subject | dt-subject | dt-subject |
Размер сообщения
Центр Интернета вещей измеряет размер сообщения вне зависимости от протокола, учитывая только фактический объем полезных данных. Размер в байтах вычисляется как сумма следующих значений:
- размер тела в байтах
- размер в байтах всех значений свойств системы сообщений;
- размер в байтах всех имен и значений свойств пользователей.
Имена и значения свойств ограничены символами ASCII, то есть длина строк равна размеру в байтах.
Свойства защиты от спуфинга
Чтобы избежать спуфинга устройств при работе с сообщениями, отправляемыми с устройства в облако, Центр Интернета вещей отмечает все сообщения такими свойствами:
- iothub-connection-device-id
- iothub-connection-auth-generation-id
- Метод iothub-connection-auth-method
Первые два свойства содержат параметры deviceId и generationId исходного устройства согласно разделу о свойствах удостоверений устройств.
Свойство iothub-connection-auth-method содержит сериализованный объект JSON, имеющий следующие свойства.
{
"scope": "{ hub | device | module }",
"type": "{ symkey | sas | x509 }",
"issuer": "iothub"
}
Следующие шаги
- Сведения об ограничениях на размер сообщений в IoT Hub см. в Квоты и регулирование в IoT Hub.
- Сведения о создании и чтении сообщений Центра Интернета вещей на различных языках программирования см. в руководстве по отправке данных телеметрии с устройства IoT Plug and Play в Центр Интернета вещей Azure.
- Сведения о структуре событий, не связанных с телеметрией, созданных Центром Интернета вещей, см. в схемах событий, отличных от телеметрии Центра Интернета вещей Azure.