image.png
学会适当焦虑、孤独,这将对你有好处。


什么是物模型?

物模型是阿里云物联网平台为产品定义的数据模型。

简单来说,物模型就是定义你这台设备的属性,行为等。就好比一个人,定义人的物模型可以有姓名、年龄、身高。人的行为有跑步、睡觉、吃饭等等。

那我们为什么要定义物模型呢?

其实这里很好理解,物模型是规定客户端与服务端双方数据传输的一个标准。就好像两个中国人之间沟通都用中文作为标准,如果一方说汉语,另一方说英语,那么谁也听不懂谁的话了。


常见物模型设计?

就拿阿里云物联网平台举例,物模型被设计成属性、服务、事件三个部分。
下面是摘自阿里云物联网平台的一张图。
2.2_IoT物联网平台_什么是物模型(ThingModel)? - 图2
这里我们拿一块水表来举例。

水笔的属性可以有:电压、流量、流速、通信方式(tcp、udp)等等。

水表的服务可以有:抄读当前水表数据,甚至一些带阀门的水表,可以执行关阀、开发操作。

水表的事件可以有:比如当你家水流持续24小时不停,水表可以发送用水异常告警等,这些由设备主动发送到平台断的一些数据,都可以称之为事件。


物模型相关数据表如何设计?

其实单纯的物模型来说,数据表设计很简单。因为物模型对于后端的同事来说,就是一条json字符串,只需要将这条字符串存入数据表即可。那么复杂一点的,我们要支持物模型的版本管理,且支持一个产品具有多个物模型的管理。

那么这是数据表的设计就相对复杂一些。

下面我大概列举一个例子(仅供参考),主要有以下表:

产品_物模型版本(product_model_version)表,具有以下属性:

  • 版本id
  • 产品key
  • 版本名称
  • 版本描述
  • ……

版本_物模型关系表(version_mondel_thing_r):

  • 版本id
  • 物模型id
  • ……

物模型表(model_thing):

  • 物模型id
  • 物模型json
  • 物模型模块id
  • 物模型模块描述