135 lines
5.5 KiB
Markdown
135 lines
5.5 KiB
Markdown
# 项目结构
|
||
|
||
|
||
|
||

|
||
|
||
从上到下依次为:
|
||
|
||
- Webapi项目
|
||
|
||
- 数据库项目
|
||
|
||
- 接收MQTT主题消息的项目
|
||
- 处理定时任务的项目
|
||
|
||
- MQTT服务器项目
|
||
|
||
其在服务器对应的服务(从上到下且不包含PAIoT.DataPersistence):
|
||
|
||
- 华为云
|
||
|
||
- pa-iot
|
||
|
||
- datasync
|
||
|
||
- jobs
|
||
|
||
- mqtt
|
||
|
||
- 阿里云
|
||
|
||
- iot-api 114.215.110.136
|
||
|
||
- datasync2 47.104.199.96
|
||
|
||
- jobs 114.215.110.136
|
||
|
||
- mqttbroker 114.215.110.136
|
||
|
||
|
||
|
||
|
||
|
||
# 业务逻辑
|
||
|
||
- **PAIOT**
|
||
|
||
- **数据计算公式**
|
||
|
||
- 用电量: 结束时间的00:00时刻的用电量减去开始时间的00:00时刻的用电量
|
||
- 平均功率因数:
|
||
|
||
- P=用电量;Q=结束时间的00:00时刻的S减去开始时间的00:00时刻的S;S=Q1EQ,Q2EQ,Q3EQ,Q4EQ之和
|
||
- 最大需量:在单位时间内,每五分钟计算一次,计算前半个小时内平均合向有功功率/1000的值,将已此值与之前的值进行比较,保留最大的值。
|
||
- 负荷率:取单位时间内Ia,Ib,Ic的平均值中的最大值/低压额定电流*100
|
||
- **PAIOT.Jobs**
|
||
|
||
- **禁用客户逻辑**
|
||
|
||
禁用客户用户账号登录有两种方式,第一种通过是否启用按钮手动禁用,第二种通过服 务期限到期自动禁用。 启用客户用户账号登录只能通过启动按钮 当客户服务期限小于三十天时,用户每天登录时会进行弹窗提醒。当服务期限到期时. 用户将禁止登录,但在当天凌晨01:10之后平台管理员可以通过启用按钮推迟服务期限到 第二天早上01:10,之后平台系统会自动将启用按钮关闭,并禁止客户用户登录。 当重新给用户增加使用期限后,需要重新打开启用按钮。
|
||
|
||
- **设备分配逻辑**
|
||
|
||
- 分配给柜子的设备可以再分配给变压器,反之不行。
|
||
|
||
- **数据清洗逻辑**
|
||
|
||
- 五分钟:只保留那些可以被5整除的分钟数,在该时刻向前找2.5分钟,向后找2.5分钟(左闭右开),取距离该时刻最近的一点充当该时刻数值。
|
||
- 最值和平均值:
|
||
- 日:次日凌晨0:10计算前一日的最值和平均值。
|
||
- 小时:下一小时(x:06)计算前一小时的最值和平均值。
|
||
- 数据清洗:次日02:30时,删除数据存储表中前一个月的数据。
|
||
- 能效数据计算:次日00:30时,计算前一日的用电量,平均功率因数,最大需量,负荷率
|
||
- **数据合理性、正确性监控:每5分钟检测一次**
|
||
|
||
- 数据传输停止时:发送消息至钉钉机器人
|
||
- 最新的一条电量实时数据距此刻大于 3 分钟
|
||
- 最新的一条环境实时数据距此刻大于 10 分钟
|
||
- 电量和环境数据创建时间和网关时间差异大于 3 分钟时:发送消息至钉钉机器人
|
||
|
||
|
||
|
||
|
||
- **报警逻辑:**
|
||
|
||
- **实时数据报警:**
|
||
- **针对设置实时数据报警设置的指标:**系统对接收到的每条数据进行越限判断,在规定的持续时间内,如异常数据和总数据之比超过所设定的报警比例,则进入等待报警状态。进入报警状态后,根据报警设置和勾选的报警人确定发送对象和发送方式。
|
||
- 报警次数:默认报警次数为1,即在进入等待报警状态后的下一次判断中进入报警状态。如果报警次数大于1,每一次的报警时间间隔由间隔时间/报警次数得出。
|
||
- 间隔时间在报警完成后开始累计,直至间隔时间结束,系统不会再对该以判断过报警的监测点进行判断。
|
||
|
||
- **网关状态报警:**
|
||
|
||
- **针对设置网关状态报警设置的指标:** 网关状态报警即在网关状态发生相应的变化时,发出对应的告警,其告警为立刻告警,收到对应的消息即刻告警,进入报警状态后,根据报警设置和勾选的报警人确定发送对象和发送方式。
|
||
|
||
- 网关状态发生相应变化详见网关状态逻辑,此处不再赘述。
|
||
|
||
- **网关IO报警:**
|
||
- **针对设置网关IO报警设置的指标:**接收到相应的event主题后,发出对应的告警,其告警为立刻告警,收到对应的消息即刻告警,进入报警状态后,根据报警设置和勾选的报警人确定发送对象和发送方式。
|
||
|
||
- **网关状态逻辑:**
|
||
|
||
- **网关离线判断:**
|
||
|
||
- 三者条件满足任一进入下一个判断。
|
||
|
||
- 同时满足网关在线再进入下一个判断。
|
||
|
||

|
||
|
||
- 上述两个条件满足之后,进入处理
|
||
- 状态置为0
|
||
- 如果报警设置设置了网关离线则发送相应的消息
|
||
- 网关掉电同上
|
||
- 网关下的设备状态都置为0
|
||
|
||

|
||
|
||
|
||
|
||
|
||
|
||
|
||
注:
|
||
|
||
- 常规的增删改查可通过接口注释知晓其作用,故未在此展示。
|
||
|
||
- 大部分接口都涉及租户和平台的判断,上述业务逻辑讲解不再单独提及此逻辑。
|
||
|
||
- 报警和设备状态相关操作引起数据库数据变动, redis需要同时作出相应变化,和数据库保持一致,上述业务逻辑讲解不再单独提及此逻辑。
|
||
|
||
- 各MQTT主题作用详见文件(数据采集网关控制器-mqtt通讯规范),此处不再赘述。
|
||
|
||
- 网关状态逻辑详见(网关在线离线逻辑判断 1.1 2024-7-3_加水印.pdf)。
|
||
|
||
|