我们什么时候应该使用< flexContainer >而不是< container >?我看到了几个< flexContainer> 的用例示例,他们将< flexContainer >用于SDT Device。< flexContainer>是否仅用于 SDT 设备?
想象一下,我们创建了一个<container>,它被设计用来保存温度传感器的值。设备的实际值存储在 < contentInstance > 中 ,温度类型(摄氏度或华氏度)由< container>资源的语义描述符字段定义。但是,我们也可以在< flexContainer >的[customAttribute]字段中定义值及其类型。那么,在这种情况下,为什么要在< container >的语义描述符字段中定义数据类型,或者为什么要使用< container >而不是 < flexContainer >?
TS-0023 文档中为某些设备定义了 SDT。如果设备制造商没有定义 SDT,而如果我们想使用该设备,我们如何为其创建 SDT/XML 文件?
<flexContainer> 在很多方面与普通的 <container> 资源不同:
对于 SDT:智能设备模板是一种定义“乐高”功能块的规范方法,即所谓的“模块类”。然后可以采用这些模块类来构建原型“设备”。提到的 oneM2M 规范“TS-0023:家用电器信息模型和映射”指定了许多这些模块类和设备以及到 <flexContainer> 专业化的映射。这意味着对于“温度”功能/模块类的定义,有一个 oneM2M <hd:temperature> 资源可用。
当您想使用 SDT 创建新的设备定义时,我建议您首先查看 TS-0023 中已定义的模块类和设备列表。如果您需要的功能不可用,那么您可以通过编写自己的 SDT 文件来定义自己的 ModuleClass 和 Device。
SDT 定义可在https://git.onem2m.org/MAS/SDT 获得。
TS-0023 中定义的模块类和设备的 SDT 的最新版本可在https://git.onem2m.org/MAS/Home-Appliances 获得。
可以在https://github.com/Homegateway/SDTTool上找到根据 SDT 定义生成必要 XSD 的工具。
另外两个注意事项: