Гибкий контейнер, контейнер и SDT в oneM2M

#onem2m

#onem2m

Вопрос:

Когда мы должны использовать < flexContainer > вместо < container > ? Я видел несколько примеров использования < flexContainer>, они использовали < flexContainer > для устройства SDT. Используется ли <flexContainer> только для устройств SDT?

Представьте, мы создаем <контейнер>, и он предназначен для хранения значений датчика температуры. Фактические значения устройства хранятся в < contentInstance >, а тип температуры (по Цельсию или Фаренгейту) определяется полем семантического дескриптора ресурса <container>. Однако мы могли бы также определить значение и его тип в поле [CustomAttribute] <flexContainer> . Итак, в этой ситуации, почему я должен определять тип данных в поле семантического дескриптора < container > или почему я должен использовать < container > вместо < flexContainer > ?

SDT определены для некоторых устройств в документе TS-0023. Если у производителя устройства не определен SDT, и если мы хотим использовать это устройство, как мы можем создать для него SDT / XML-файл?

Ответ №1:

<flexContainer> отличается от обычного ресурса <container> во многих отношениях:

  • Ресурс <container> не хранит фактические значения в самом ресурсе. Дочерние ресурсы <container>, т.е. <contentInstance> или другие ресурсы <container>, выполните. Напротив, специализация <flexContainer> сама содержит фактические значения.
  • Сам <flexContainer> не может быть создан напрямую, он является лишь логической основой для дальнейшей специализации (очень похоже на базовый класс в ООП). Он определяет ряд атрибутов, которые поддерживают эти специализации, например, атрибут containerDefinition содержит идентификатор, который определяет фактический тип конкретного ресурса <flexContainer> . Затем специализация <flexContainer> определяет четко определенную структуру, которая может содержать довольно сложную структуру точек данных. Упомянутые устройства и классы модулей из TS-0023 являются такими специализациями, например, температура. Эти специализации имеют четко определенную структуру с семантикой, ограничениями и т.д.
  • Большим преимуществом <flexContainer> является то, что его можно обновлять, в то время как <contentInstance> в <container> можно только добавлять или удалять. Это также означает, что, если приложению требуется только текущее состояние устройства и его не интересуют более старые значения данных, одна специализация <flexContainer> — это (более или менее) все, что нужно приложению.
  • Все точки данных, содержащиеся в специализации <flexContainer>, считываются и записываются одновременно. В некоторых случаях это значительно снижает затраты на связь и снижает вероятность возникновения условий гонки при чтении или записи многих точек данных.

Для SDT: Шаблон интеллектуального устройства — это метод спецификации для определения функциональных блоков «Lego», так называемых «классов модулей». Затем эти классы модулей могут быть использованы для создания прототипов «Устройств». Упомянутая спецификация oneM2M «TS-0023 : Информационная модель и отображение бытовой техники» определяет количество этих классов модулей и устройств, а также отображение специализаций <flexContainer>. Это означает, что для определения функциональности / класса модулей «температура» доступен ресурс oneM2M <hd:temperature>.

Если вы хотите создать новое определение устройства с использованием SDT, я бы посоветовал вам сначала просмотреть список уже определенных классов модулей и устройств в TS-0023. Если нужная вам функциональность недоступна, вы можете определить свой собственный ModuleClass и Device, написав свой собственный SDT-файл.

Определение SDT доступно по адресу https://git.onem2m.org/MAS/SDT .

Последняя версия SDT для классов модулей и устройств, определенных в TS-0023, доступна по адресу https://git.onem2m.org/MAS/Home-Appliances .

Инструмент для генерации необходимого XSD из вашего определения SDT можно найти по адресу https://github.com/Homegateway/SDTTool .

Еще два примечания:

  • Позволяет ли CSE самостоятельно определять специализации <flexContainer>, зависит от реализации и политик CSE.
  • На момент написания этой статьи (апрель 2019 года) oneM2M работает над новой версией SDT, которая поддерживает, например, определения продуктов, улучшенное наследование и дальнейшую семантическую поддержку. oneM2M также работает над новой версией спецификации TS-0023 для поддержки междоменных сценариев и устройств Интернета вещей, а не только домашнего домена.