您在问题中描述的场景实际上是两个不同的用例:
- 您要么想要时间序列数据(独立发送的数据,无论它是否在特定时间间隔内发生变化,例如每分钟),或者
- 您想要传感器的最新数据,并且只记录更改。
您需要决定要为您的场景实施哪种案例,但从您的问题看来,第二个用例是您想要实施的。
您在选项 1) 中建议的内容是不可能的,因为 <contentInstance> 资源类型不允许更新现有资源。使用此资源的唯一可能性是每次要存储数据时创建一个新的 <contentInstance>。
此外,您不能提供、设置或更新resourceIdentifier,因为它始终由 CSE 分配。
但是,当您只需要为每个传感器存储一个数据记录时,有几个选项可以实现您想要做的事情。您应该查看 <container> 定义,因为在这里您可以将maximumNumberOfInstance (mni) 属性设置为 1。这意味着 <container> 始终确保自动存储一个数据实例(即,它会删除所有较旧的实例)。要访问您的数据,您将不会直接访问 <contentInstance>,而是使用 <container> 的 <latest> 虚拟子资源。向该资源发送 RETRIEVE 请求时,您将自动获得最新的 <contentInstance>,独立于其名称或资源标识符。
另一种可能性是使用 <flexContainer>。在这里,您可以定义自己的数据点并存储数据记录,而无需任何版本控制。但我不确定您使用的 om2m 版本是否完全支持 <flexContainer> 资源类型。