物模型¶
三种功能元素:
1. 属性Property
属性的特点是可读可写
2. 事件Event
由产品设备在运行过程中产生的信息、告警和故障等
3. 动作Action
也被称作服务(Service)
动作由应用下发给设备,设备可以返回结果给应用
六种数据类型:
1. 布尔型(Bool)
非真即假的二值型变量。例如,开关功能只有开、关两种状态
2. 整数型(Int)
可用于线性调节的整数变量。例如,电灯的亮度是一个整数范围
3. 字符串型(String)
以字符串形式表达的功能点。例如,灯的位置
4. 浮点型(Float)
精度为浮点型的功能点。例如,电压值的范围是 0.0 - 24.0
5. 枚举型(Enum)
自定义的有限集合值。例如,灯的颜色有白色、红色、黄色等
6. 时间型(Timestamp)
String 类型的 UTC 时间戳
属性-智能电灯的开关属性:
{
"id": "power_switch", // 属性的唯一标识
"name": "电灯开关", // 名称
"desc": "控制电灯开灭", // 属性的详细描述
"required": true, // 表示此属性是否必需包含,是
"mode": "rw", // 属性的模式,r 代表读,w 代表写
"define": { // 属性的数值定义
"type": "bool", // 数值的类型,布尔
"mapping": { // 具体数值的含义
"0": "关", //0 表示灯关闭
"1": "开" //1 表示灯打开
}
}
}
事件-智能电灯的电压:
{
"id": "low_voltage", // 事件唯一标识
"name": "LowVoltage", // 事件名称
"desc": "Alert for device voltage is low", // 事件的描述
"type": "alert", // 事件的类型,告警
"required": false, // 表示此属性是否必需包含,否
"params": [ // 事件的参数
{
"id": "voltage", // 事件参数的唯一标识
"name": "Voltage", // 事件参数的名称
"desc": "Current voltage", // 参数的描述
"define": { // 参数的数值定义
"type": "float", // 数值类型,浮点数
"unit": "V", // 数值的单位,伏
"step": "1", // 数值变化的步长,1
"min": "0.0", // 数值的最小值
"max": "24.0", // 数值的最大值
"start": "1" // 事件的起始值
}
}
]
}
继承的具体特征是:
1. 子模型继承父模型的所有要素,且继承的元素无法被修改
2. 子模型可以再被继承,支持多层的继承关系
3. 子模型可以创建独立的要素,但子模型中新增的要素不可以和所有上级父模型中的元素重名
4. 当父模型中的元素发生变更时,子模型中继承自父模型的元素同步变更,保持与父模型一致
{
"version": "1.0", // 模型版本
"properties": [ // 属性列表
{
"id": "power_switch", // 电灯开关属性
"name": "电灯开关",
"desc": "控制电灯开灭",
"required": true,
"mode": "rw",
"define": {
"type": "bool",
"mapping": {
"0": "关",
"1": "开"
}
}
},
{
"id": "brightness", // 亮度属性
"name": "亮度",
"desc": "灯光亮度",
"mode": "rw",
"define": {
"type": "int",
"unit": "%",
"step": "1",
"min": "0",
"max": "100",
"start": "1"
}
},
{
"id": "color", // 电灯颜色属性
"name": "颜色",
"desc": "灯光颜色",
"mode": "rw",
"define": {
"type": "enum",
"mapping": {
"0": "Red",
"1": "Green",
"2": "Blue"
}
}
},
{
"id": "color_temp", // 色温属性
"name": "色温",
"desc": "灯光冷暖",
"mode": "rw",
"define": {
"type": "int",
"min": "0",
"max": "100",
"start": "0",
"step": "10",
"unit": "%"
}
}
],
"events": [ // 事件列表
{
"id": "status_report", // 运行状态报告
"name": "DeviceStatus",
"desc": "Report the device status",
"type": "info",
"required": false,
"params": [ // 事件参数列表
{
"id": "status",
"name": "running_state",
"desc": "Report current device running state",
"define": {
"type": "bool",
"mapping": {
"0": "normal",
"1": "fault"
}
}
},
{
"id": "message",
"name": "Message",
"desc": "Some extra message",
"define": {
"type": "string",
"min": "0",
"max": "64"
}
}
]
},
{
"id": "low_voltage", // 低电压告警事件
"name": "LowVoltage",
"desc": "Alert for device voltage is low",
"type": "alert",
"required": false,
"params": [
{
"id": "voltage",
"name": "Voltage",
"desc": "Current voltage",
"define": {
"type": "float",
"unit": "V",
"step": "1",
"min": "0.0",
"max": "24.0",
"start": "1"
}
}
]
},
{
"id": "hardware_fault", // 硬件错误事件
"name": "Hardware_fault",
"desc": "Report hardware fault",
"type": "fault",
"required": false,
"params": [
{
"id": "name",
"name": "Name",
"desc": "Name like: memory,tf card, censors ...",
"define": {
"type": "string",
"min": "0",
"max": "64"
}
},
{
"id": "error_code",
"name": "Error_Code",
"desc": "Error code for fault",
"define": {
"type": "int",
"unit": "",
"step": "1",
"min": "0",
"max": "2000",
"start": "1"
}
}
]
}
],
"actions": [], // 动作列表
"profile": { // 产品参数
"ProductId": "8D1GQLE4VA", // 产品 ID
"CategoryId": "141" // 产品分类编号
}
}
设备影子¶
备注
设备影子用于缓存设备状态。应用程序可以通过设备影子直接获取设备最后一次更新的属性值,而无需每次都访问设备。设备在线时,可以直接获取应用指令;设备离线后,再次上线可以主动拉取应用指令。
本质-应用程序和设备的解耦:
使用设备影子机制,设备只需要主动同步状态给设备影子一次,
多个应用程序请求设备影子获取设备状态,即可获取设备最新状态,做到应用程序和设备的解耦。
数字孪生¶
备注
物模型是物理实体的数字化模型,但主要针对的是物联网中应用的开发和设备的互操作。
特斯拉公司为其生产的每一辆电动汽车都建立了数字孪生模型,相关的模型数据保存在公司的数据库中,以便在测试中排查故障,为用户提供更好的服务。