Возможно, структуру ресурсов oneM2M легче понять, если взглянуть на общую архитектуру устройства oneM2M. Ваш Arduino, скорее всего, не содержит CSE, поэтому это может быть Application Dedicated Node (ADN), который подключается к удаленной CSE.
Приложение - вот ключевое слово: на вашем Arduino находится приложение, которое, например, считывает и обрабатывает некоторые данные датчика. Он реализует функциональную логику для этого устройства. Таким образом, это приложение в терминах oneM2M является Application Entity (AE). В oneM2M AE имеет определенные свойства, такие как идентификатор приложения и т. Д. Он также содержит права доступа для подключения к удаленной CSE и доступа к ресурсам на этой удаленной CSE.
AE также является корнем для фактических данных и структур данных, которыми управляет этот AE. Эта структура может быть построена из Контейнеры . Это обычный способ иметь один Контейнер для каждого датчика и его данных, например, Контейнер температуры , Контейнер давления воздуха и т. Д. Также возможно иметь Контейнеры внутри Контейнера если вы хотите структурировать свои данные немного больше.
Фактические данные датчика обрабатываются в этих контейнерах. Эти объекты данных называются ContentInstances . Обычно вы только добавляете ContentInstances в контейнер, но никогда не удаляете и не обновляете их по отдельности. Таким образом, вы получаете небольшую историю значений ваших данных. Такое поведение, например, как долго должна длиться эта история, является свойством контейнера и может быть установлено индивидуально. Контейнер предлагает две специальные точки данных: последний (la) и самый старый (ol), который удобно позволяет вам получить доступ к самому новому или старому сохраненному значению в контейнере, соответственно.
Обратите внимание, также возможно, что на устройстве может быть размещено более одного AE. АЕ - это абстрактное понятие. Ваше приложение Arduino может фактически реализовать два AE: одно для хранения данных датчика, а другое для чтения данных из CSE, например, для установки параметров работы на Arduino.
Также обратите внимание, что существует ресурс Node , если вы хотите представить фактическое аппаратное устройство (узел - это термин для подключенного устройства в oneM2M, как «N» в «ADN») объяснил выше). Здесь вы можете создать подструктуру, которая представляет устройство, получить информацию о встроенном программном обеспечении, состоянии батареи, информации о сети и т. Д., А также информацию о AE, которые размещены на устройстве. Узлы, как AE, расположены в корне CSE.
Надеюсь, это поможет вам структурировать дерево ресурсов для вашего приложения.
Обновление
Следующий рисунок визуализирует это дерево ресурсов.
CSEBase ─┬─ AE ─┬─ Container ─┬─ ContentInstance ◀═══ oldest
│ │ │
│ │ ├─ ContentInstance
│ │ │
│ │ ├── ...
│ │ │
│ │ └─ ContentInstance ◀═══ latest
│ │
│ └─ Container ─┬─ Container ─┬─ ContentInstance
│ │ │
│ │ └─ ...
│ │
│ └─ Container ─┬─ ContentInstance
│ │
│ └─ ...
│
├─ AE ─── ...
│
└─ Node ─── ...