物模型 ###### 三种功能元素:: 1. 属性Property 属性的特点是可读可写 2. 事件Event 由产品设备在运行过程中产生的信息、告警和故障等 3. 动作Action 也被称作服务(Service) 动作由应用下发给设备,设备可以返回结果给应用 .. image:: https://img.zhaoweiguo.com/knowledge/images/iots/thing_model1.jpeg 六种数据类型:: 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. 当父模型中的元素发生变更时,子模型中继承自父模型的元素同步变更,保持与父模型一致 .. literalinclude:: ./thing.json 设备影子 ======== .. note:: 设备影子用于缓存设备状态。应用程序可以通过设备影子直接获取设备最后一次更新的属性值,而无需每次都访问设备。设备在线时,可以直接获取应用指令;设备离线后,再次上线可以主动拉取应用指令。 本质-应用程序和设备的解耦:: 使用设备影子机制,设备只需要主动同步状态给设备影子一次, 多个应用程序请求设备影子获取设备状态,即可获取设备最新状态,做到应用程序和设备的解耦。 数字孪生 ======== .. note:: 物模型是物理实体的数字化模型,但主要针对的是物联网中应用的开发和设备的互操作。 特斯拉公司为其生产的每一辆电动汽车都建立了数字孪生模型,相关的模型数据保存在公司的数据库中,以便在测试中排查故障,为用户提供更好的服务。