《物联网开发实战》 物模型:如何定义智能电灯?

只作为我学习物联网开发实践的学习笔记。原课程链接:极客时间《物联网开发实践》——郭超斌

在物联网中,如何提供底层硬件的控制接口信息?如何将平台应用与不同品牌的设备进行匹配(开发)?

要解决上述问题,我们可以在浏览器浏览不同文件(文本、音频、视频等)时,增加一个中间协议层,比如HTML(超文本标记语言)。),而物联网也有类似的协议层——物联网规范语言(简称TSL)。

TSL描述的物联网中的实体模型是对象模型,或者产品模型,或者数据面板。

物联模型和设备的关系是什么?

物理模型是对物理世界中物理事物的抽象,是经过数字化描述后用于数字世界的数字化模型。说白了,物理模型就是用一种计算机能理解的语言,把这个产品是什么,能做什么,能提供什么信息解释清楚。

反过来,物理模型也规定了设备的功能。新增加的设备,如果是同类型的,那么在设计和研发上就遵循相同的功能定义,具有相同的特性,实现相同的服务。

如何定义物模型

我们一般通过属性、事件和动作这三种功能元素来定义。

属性(Property):描述产品运行时的某种状态,属性可以进行读写,比如环境检测设备的温度和湿度两个属性。

事件(Event):设备在运行过程汇总产生的信息、警告和故障等,就是事件。事件是设备上报的,不能由应用设置。

动作(Action): 也被称为服务,动作由应用发给设备,设备可以返回结果给应用。动作可以进一步分为同步和异步。

物模型的数据类型

物模型的类型包括六种:

  1. 布尔型(Bool):非真既假的二值型变量。
  2. 整数型(Int):可线性调节的整数变量。
  3. 字符串型(String):以字符串形式形式表示的变量。
  4. 浮点型(Float):精度为浮点的变量。
  5. 枚举型(Enum):自定义的有限集合值。
  6. 时间型(Timestamp):String 类型的 UTC 时间戳。

物理型一般用 JSON 格式来表述模型元素。JSON 是 Web 开发中,经常使用的数据格式。

定义智能电灯的物联模型

智能电开关的属性对应的 JSON 表述如下:

{
	"id": "power_switch",  // 属性的标识
	"name": "电灯开关",      // 名称
	"desc": "电灯开关控制",   // 属性的描述
	"required": true,       // 表示此属性是否必须包含
	"mode": "rw",           // 属性的模式,设置为可读可写
	"define": {             // 属性的数值定义
		"type": "bool",     // 数值的类型,布尔型
		"mapping": {        // 具体的数值的含义
			"0": "关",        
			"1": "开"
		}
	}
}

智能电灯的事件,电灯的电压需要监控,当电压过低时,可以上报这个事件(电压过低),数据类型为浮点型,对应 JSON 格式的描述如下:

{
	"id": "voltage_too_low",  // 事件的标识
	"name": "电灯过低",         // 名称
	"desc": "电压过低",         // 事件的描述
	"required": false,        // 表示此属性是否必须包含
	"params": [               // 事件的参数
		{             
			"id": "voltage",       // 事件参数的标识
			"name": "电压",         // 名称
			"desc": "当前电压",      // 参数的描述
			"define": {             // 参数的数值定义
				"type": "float",    // 数值的类型,浮点型
				"unit": "V",        // 数值的单位,伏特
				"step": "1",        // 数值的变化步长 
				"min": "0.0",       // 数值的最小值
				"max": "24.0",      // 数值的最大值
				"start": "1",       // 事件的起始值
			}
		}
	]
}

动作的定义和属性、事件的定义过程类似。

每个模型都要从头定义吗?

创建模型的时候,有拷贝继承两种模式,它们不同点体现在模型关系上。

拷贝模式类似于编程中的值拷贝,新建模型与被拷贝模型有完全相同的元素,两个模型相互独立,模型变更互不影响。

继承模式就是编程中继承概念,新建模型被定义为“子模型”,被继承的模型定义为“父模型”。

物模型的拓展应用

设备影子

设备阴影用于缓存设备状态。应用可以通过设备影子直接获取设备上次更新的属性值,无需每次访问设备。设备在线时,可以直接获取应用指令;设备离线后,再次在线时可以主动拉取应用指令。

例如,您可以通过物理开关在本地更改智能灯的开关状态。如果网络不稳定,平台上的状态可能与真实状态不同步。设备影子可以双向同步,实现服务器和设备的一致性,从而解决这个问题。

数字孪生(Digital Twin)

对象模型是物理实体的数字模型,但它主要针对物联网中应用的开发和设备的互操作性。该模型集成了物理实体的各种数据,这些数据会随着物理实体在其生命周期中不断进化,积累各种信息和知识,促进物理实体的优化。这种模型是物理实体的数字双胞胎。

本文章来源于互联网,如有侵权,请联系删除!