只作为我学习物联网开发实践的学习笔记。原课程链接:极客时间《物联网开发实践》——郭超斌
在物联网中,如何提供底层硬件的控制接口信息?如何将平台应用与不同品牌的设备进行匹配(开发)?
要解决上述问题,我们可以在浏览器浏览不同文件(文本、音频、视频等)时,增加一个中间协议层,比如HTML(超文本标记语言)。),而物联网也有类似的协议层——物联网规范语言(简称TSL)。
TSL描述的物联网中的实体模型是对象模型,或者产品模型,或者数据面板。
物联模型和设备的关系是什么?
物理模型是对物理世界中物理事物的抽象,是经过数字化描述后用于数字世界的数字化模型。说白了,物理模型就是用一种计算机能理解的语言,把这个产品是什么,能做什么,能提供什么信息解释清楚。
反过来,物理模型也规定了设备的功能。新增加的设备,如果是同类型的,那么在设计和研发上就遵循相同的功能定义,具有相同的特性,实现相同的服务。
如何定义物模型
我们一般通过属性、事件和动作这三种功能元素来定义。
属性(Property):描述产品运行时的某种状态,属性可以进行读写,比如环境检测设备的温度和湿度两个属性。
事件(Event):设备在运行过程汇总产生的信息、警告和故障等,就是事件。事件是设备上报的,不能由应用设置。
动作(Action): 也被称为服务,动作由应用发给设备,设备可以返回结果给应用。动作可以进一步分为同步和异步。
物模型的数据类型
物模型的类型包括六种:
- 布尔型(Bool):非真既假的二值型变量。
- 整数型(Int):可线性调节的整数变量。
- 字符串型(String):以字符串形式形式表示的变量。
- 浮点型(Float):精度为浮点的变量。
- 枚举型(Enum):自定义的有限集合值。
- 时间型(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)
对象模型是物理实体的数字模型,但它主要针对物联网中应用的开发和设备的互操作性。该模型集成了物理实体的各种数据,这些数据会随着物理实体在其生命周期中不断进化,积累各种信息和知识,促进物理实体的优化。这种模型是物理实体的数字双胞胎。
本文章来源于互联网,如有侵权,请联系删除!