## 概述 物模型包括设备**以太设备模型**(接口/能力/属性)和**感知能力模型**(原安心云监测原型),这部分在3.0+Iota的基础上**没有大的改动**。本方案**旨在描述感知平台中概念的组合意义和少许的改动说明**。 以太设备模型:具体参考《[设备接入平台方案](http://svn.anxinyun.cn/Iota/trunk/doc/设备接入平台方案.docx)》。描述采集能力的模型= 接口+协议+属性。 ![image-20210819084310460](imgs/物模型方案/image-20210819084310460.png) 感知能力模型: 感知能力模型可以理解为设备能力上的扩展。在结构物健康监测领域,就是测点和监测因素的抽象。在感知平台我们统一将这种转换模型称为‘**感知模型**’,转换后的数据叫做‘**感知数据**’或‘**感知态**’ ![image-20210819084735077](imgs/物模型方案/image-20210819084735077.png) 我们总结了感知模型计算场景,主要有以下四种: 单个设备输出单个感知状态:如下,压力计输出的压强值,在不同的场景分别测量水位和渗流量。 ![image-20210819085656588](imgs/物模型方案/image-20210819085656588.png) > 注:定义的物模型 MOME (Model Of Monitor Element) 监控对象模型 几个相同设备组合输出另外一种感知状态:常见多弦锚索计中,取多个单弦设备的平均输出。 ![image-20210819085831844](imgs/物模型方案/image-20210819085831844.png) 不同类型设备的组合输出:目前平台通过特殊处理来实现(例如依赖外部温度传感器的温补计算) ![image-20210819085938362](imgs/物模型方案/image-20210819085938362.png) 还有一类就是设备的输出,需要与组内其他设备的数据进行关联计算,得到‘相对’的或‘累计’的变化,即沉降和测斜管内部位移 ![image-20210819090125645](imgs/物模型方案/image-20210819090125645.png) ## 感知模型定义 感知模型是设备数据到感知数据转换的依据,主要包括输出映射和公式计算。同时,需支持透传模型,适配设备态即感知态的场景。 ![image-20210819102748578](imgs/物模型方案/image-20210819102748578.png) 可知,感知模型是针对具体设备和感知场景确定的。除了安心云结构监测场景,我们期望平台将各个行业解决方案录入,用户创建Thing 的时候从行业方向、应用场景选择,到对应的感知模型选取,均可以从内置的行业标准库中选取: ![image-20210819103206990](imgs/物模型方案/image-20210819103206990.png) 几个关键表设计大体思路如下:(所有资源应包含公共和私有两部分,各租户可以自建自己的解决方案数据库) **IndustrySolution** 行业解决方案 | 行业名称 | 场景 | 项目 | SenseModel_ID | | | | -------- | -------- | -------- | ------------- | ---- | ---- | | 智慧工地 | 工地安全 | 人员监测 | 1 | | | **SenseModel** 感知模型(原监测原型) | id | name | items | agg | tags | | | ---- | -------- | --------------------------------------- | ----- | ----------------------- | ---- | | 1 | 人员监测 | [{field:a, name:v,unit:cm,precesion:5}] | [sum] | {"category":"智能网关"} | | 感知模型包含字段名、显示名、单位、小数位数。 agg字段用于表示该模型需要的默认聚集方法(如空气质量指数模型,默认需进行aqi的指数聚集)。 **SenseMap** 感知方案(映射/计算) | DeviceMeta 设备 | CapabilityMeta 能力 | SenseModel_ID | MR | | | | --------------- | ------------------- | ------------- | ------------------------------------------------- | ---- | ---- | | abc | abd | 1001 | {"script":"x=a+b","type":"exp","map":{"a":"b"}} | | | | x | c1 | 1001 | {"script":"function","type":"js","map":{"a":"b"}} | | | | y | c2 | 1001 | {"script":"function","type":"js","map":{"a":"b"}} | | | 上述举例:支持内联公式、表达式、脚本方式实现MR映射计算。示例中 x/y设备关联到同一个SenseModel,实现组合计算。具体实现方案需细化。 实例化方面,在部署完成后,设备到感知态的映射需要进一步配置(等同于原测点配置,割离接入无关的参数属性) | SenseID | 设备ID | SenseMapID | Params | | | ------- | ------ | ---------- | -------------- | ----------------- | | 1 | abc | 1 | {"height":100} | | | 2 | abd | | | *可以无 Sense Map | ## 数据存储格式 架构方案中已说明,引入数据湖IceBerg。主要用于存储原始设备数据 和 数据源文件归档。计算后的感知数据、聚集数据、告警数据,按照原平台方案存储在ElasticSearch中。简单说明如下: 设备数据在IceBerg中的结构可以定义如下: ```java // 结构定义 伪代码 TableSchema shecma=TableSchema.builder() .field("id",DataTypes.String()) .field("time",DataTypes.Date()) .field("data",DataTypes.Map()) ``` 其中:id-设备ID,time-采集时刻,data-采集数据(map格式)。 IceBerg数据入湖的几个步骤: ![image-20210820085555059](imgs/物模型方案/image-20210820085555059.png) 我们定义的IceBerg创建在`Hive`存储之上,所以首先要建立Hadoop Hive的集群,这个可以在ambari中添加服务的方式实现。 感知结果: 感知结果等同于原测点(主题)数据。我们将感知数据做简化,如下,只保留sensor/collecttime/data字段 ![image-20210820094917637](imgs/物模型方案/image-20210820094917637.png) 告警数据: 存储在索引 anxinyun_alarms 、 anxinyun_alarm_details。格式基本不许改动 聚集数据: 存储在索引 anxinyun_aggregation 。格式不需要改动。注意修正data为空的问题。 ## 界面设计 ### 参考 参考:智能涂鸦 优点:低代码 1. 产品定义界面: 首先产品是按类目进行分类,这个目前我们的产品比较单一,可以不考虑。 在行业解决方案中,将产品归类。如"结构物监测">"环境"中可以选择“温湿度”传感器(这个在之前的设备管理界面中添加)。 选择产品后,列举所有可行方案(前文中SenseMap),进行预览和选取。其中涂鸦的预览界面如下,我们的预览应该包括*输出属性、计算、转换公式*等信息。 ![image-20210820101138031](imgs/物模型方案/image-20210820101138031.png) 2. 定义产品的硬件开发;这部分我们通过协议去适配硬件厂商,不需要 ![image-20210820102749037](imgs/物模型方案/image-20210820102749037.png) 其他界面暂无参考: 产品配置(定义固件、多语言、联动、配网、消息推送、快捷开关)、设备联调*(与APP)、自动测试用例 总结:涂鸦智能硬件高度定制化,所以能够在平台实现低代码(零代码)开发。这与我们平台定位有所缺别,我们更期望适配所有情况(设备、监测场景)。 ### 感知模型界面 菜单中增加“感知模型”管理。 管理界面类似如下 ![image-20210820113028309](imgs/物模型方案/image-20210820113028309.png) 在Thing配置界面增加感知实例的方案选择和参数设置(类似测点配置): Thing上增加行业标签属性(类似原结构物类型和监测因素选择) ![image-20210820114705047](imgs/物模型方案/image-20210820114705047.png) 设备部署完成后,支持**自动生成**感知状态配置。(选取默认方案) 进入感知配置,可以选择计算方案,输入参数信息等。