oneM2M 中的 FlexContainer、Container 和 SDT
FlexContainer, Container and SDT in oneM2M
我们什么时候应该使用 而不是 ?我看到了一些 的用例示例,他们将 用于 SDT Device。 是否仅用于 SDT 设备?
想象一下,我们创建了一个 <容器>,它被设计用来保存温度传感器的值。设备的实际值存储在 的 中,温度类型(摄氏度或华氏度)由 的语义描述符字段定义 资源。但是,我们也可以在 的 [customAttribute] 字段中定义值及其类型。那么,在这种情况下,为什么要在 的语义描述符字段中定义数据类型,或者为什么要使用 而不是 < flexContainer >?
在 TS-0023 文档中为某些设备定义了 SDT。如果设备制造商没有定义 SDT,如果我们想使用该设备,我们如何为它创建一个 SDT/XML 文件?
在很多方面与普通的 资源不同:
资源不在资源本身中存储实际值。 的子资源,即。 或更多 资源,做。相反, 特化自身保存实际值。
本身不能直接实例化,它只是进一步特化的逻辑基础(非常像 OOP 中的基础 class)。它定义了许多支持这些特殊化的属性,例如 containerDefinition 属性包含一个标识符,该标识符定义了特定 资源的实际类型。 特化然后指定一个定义良好的结构,该结构可能包含相当复杂的数据点结构。
TS-0023 中提到的 Devices 和 ModuleClasses 就是这样的专业化,例如温度。这些专业化具有定义明确的结构,包括语义、约束等。
的一大优点是可以更新,而 中的 只能添加或删除。这也意味着,如果应用程序只需要设备的当前状态并且对旧数据值不感兴趣,则单个 专业化(或多或少)就是应用程序所需的一切。
特化中包含的所有数据点同时读取和写入。在某些情况下,这会减少大量通信开销,并减少读取或写入许多数据点时出现竞争条件的机会。
致 SDT:智能设备模板是一种规范方法,用于定义 "Lego" 功能块,即所谓的 "ModuleClasses"。然后可以采用这些 ModuleClasses 来构建原型 "Devices"。
提到的 oneM2M 规范 "TS-0023 : Home Appliances Information Model and Mapping" 指定了许多这样的 ModuleClasses 和 Devices 以及到 专业化的映射。这意味着对于 "temperature" functionality/ModuleClass 的定义,有一个可用的 oneM2M 资源。
当您想使用 SDT 创建新的设备定义时,我建议您首先查看 TS-0023 中已定义的 ModuleClasses 和设备的列表。如果您需要的功能不可用,那么您可以通过编写自己的 SDT 文件来定义自己的 ModuleClass 和 Device。
SDT 定义可在 https://git.onem2m.org/MAS/SDT 获得。
TS-0023 中定义的 ModuleClasses 和设备的最新版本 SDT 可在 https://git.onem2m.org/MAS/Home-Appliances 获得。
可在 https://github.com/Homegateway/SDTTool.
中找到从 SDT 定义生成必要 XSD 的工具
另外两个笔记:
- CSE 是否允许自定义
专业化取决于 CSE 实施和政策。
- 截至撰写本文时(2019 年 4 月)oneM2M 正在开发新版本的 SDT,该版本支持产品定义、更好的继承和进一步的语义支持等。 oneM2M 还致力于新版本的 TS-0023 规范,以支持跨域物联网场景和设备,而不仅仅是家庭域。
我们什么时候应该使用
想象一下,我们创建了一个 <容器>,它被设计用来保存温度传感器的值。设备的实际值存储在
在 TS-0023 文档中为某些设备定义了 SDT。如果设备制造商没有定义 SDT,如果我们想使用该设备,我们如何为它创建一个 SDT/XML 文件?
资源不在资源本身中存储实际值。 的子资源,即。 或更多 资源,做。相反, 特化自身保存实际值。 本身不能直接实例化,它只是进一步特化的逻辑基础(非常像 OOP 中的基础 class)。它定义了许多支持这些特殊化的属性,例如 containerDefinition 属性包含一个标识符,该标识符定义了特定 资源的实际类型。 特化然后指定一个定义良好的结构,该结构可能包含相当复杂的数据点结构。 TS-0023 中提到的 Devices 和 ModuleClasses 就是这样的专业化,例如温度。这些专业化具有定义明确的结构,包括语义、约束等。 的一大优点是可以更新,而 中的 只能添加或删除。这也意味着,如果应用程序只需要设备的当前状态并且对旧数据值不感兴趣,则单个 专业化(或多或少)就是应用程序所需的一切。 特化中包含的所有数据点同时读取和写入。在某些情况下,这会减少大量通信开销,并减少读取或写入许多数据点时出现竞争条件的机会。
致 SDT:智能设备模板是一种规范方法,用于定义 "Lego" 功能块,即所谓的 "ModuleClasses"。然后可以采用这些 ModuleClasses 来构建原型 "Devices"。
提到的 oneM2M 规范 "TS-0023 : Home Appliances Information Model and Mapping" 指定了许多这样的 ModuleClasses 和 Devices 以及到
当您想使用 SDT 创建新的设备定义时,我建议您首先查看 TS-0023 中已定义的 ModuleClasses 和设备的列表。如果您需要的功能不可用,那么您可以通过编写自己的 SDT 文件来定义自己的 ModuleClass 和 Device。
SDT 定义可在 https://git.onem2m.org/MAS/SDT 获得。
TS-0023 中定义的 ModuleClasses 和设备的最新版本 SDT 可在 https://git.onem2m.org/MAS/Home-Appliances 获得。
可在 https://github.com/Homegateway/SDTTool.
中找到从 SDT 定义生成必要 XSD 的工具另外两个笔记:
- CSE 是否允许自定义
专业化取决于 CSE 实施和政策。 - 截至撰写本文时(2019 年 4 月)oneM2M 正在开发新版本的 SDT,该版本支持产品定义、更好的继承和进一步的语义支持等。 oneM2M 还致力于新版本的 TS-0023 规范,以支持跨域物联网场景和设备,而不仅仅是家庭域。