dev-aid/pa-iot/开发文档.md
2024-07-25 13:23:08 +08:00

135 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目结构
![img](assets/clip_image001.png)
从上到下依次为:
- 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**
- **数据计算公式**
- 用电量: 结束时间的0000时刻的用电量减去开始时间的0000时刻的用电量
- 平均功率因数:![img](assets/88651885-945F-4c07-A775-823ABBE2BA00.png)
- P=用电量Q=结束时间的0000时刻的S减去开始时间的0000时刻的SS=Q1EQQ2EQQ3EQQ4EQ之和
- 最大需量:在单位时间内,每五分钟计算一次,计算前半个小时内平均合向有功功率/1000的值将已此值与之前的值进行比较保留最大的值。
- 负荷率取单位时间内IaIbIc的平均值中的最大值/低压额定电流*100
- **PAIOT.Jobs**
- **禁用客户逻辑**
禁用客户用户账号登录有两种方式,第一种通过是否启用按钮手动禁用,第二种通过服 务期限到期自动禁用。 启用客户用户账号登录只能通过启动按钮 当客户服务期限小于三十天时,用户每天登录时会进行弹窗提醒。当服务期限到期时. 用户将禁止登录但在当天凌晨0110之后平台管理员可以通过启用按钮推迟服务期限到 第二天早上0110之后平台系统会自动将启用按钮关闭并禁止客户用户登录。 当重新给用户增加使用期限后,需要重新打开启用按钮。
- **设备分配逻辑**
- 分配给柜子的设备可以再分配给变压器,反之不行。
- **数据清洗逻辑**
- 五分钟只保留那些可以被5整除的分钟数在该时刻向前找2.5分钟向后找2.5分钟(左闭右开),取距离该时刻最近的一点充当该时刻数值。
- 最值和平均值:
-次日凌晨0:10计算前一日的最值和平均值。
- 小时:下一小时(x:06)计算前一小时的最值和平均值。
- 数据清洗次日0230时删除数据存储表中前一个月的数据。
- 能效数据计算次日0030时计算前一日的用电量平均功率因数最大需量负荷率
- **数据合理性、正确性监控每5分钟检测一次**
- 数据传输停止时:发送消息至钉钉机器人
- 最新的一条电量实时数据距此刻大于 3 分钟
- 最新的一条环境实时数据距此刻大于 10 分钟
- 电量和环境数据创建时间和网关时间差异大于 3 分钟时:发送消息至钉钉机器人
- **报警逻辑:**
- **实时数据报警:**
- **针对设置实时数据报警设置的指标:**系统对接收到的每条数据进行越限判断,在规定的持续时间内,如异常数据和总数据之比超过所设定的报警比例,则进入等待报警状态。进入报警状态后,根据报警设置和勾选的报警人确定发送对象和发送方式。
- 报警次数默认报警次数为1即在进入等待报警状态后的下一次判断中进入报警状态。如果报警次数大于1每一次的报警时间间隔由间隔时间/报警次数得出。
- 间隔时间在报警完成后开始累计,直至间隔时间结束,系统不会再对该以判断过报警的监测点进行判断。
- **网关状态报警:**
- **针对设置网关状态报警设置的指标:** 网关状态报警即在网关状态发生相应的变化时,发出对应的告警,其告警为立刻告警,收到对应的消息即刻告警,进入报警状态后,根据报警设置和勾选的报警人确定发送对象和发送方式。
- 网关状态发生相应变化详见网关状态逻辑,此处不再赘述。
- **网关IO报警**
- **针对设置网关IO报警设置的指标**接收到相应的event主题后发出对应的告警其告警为立刻告警收到对应的消息即刻告警进入报警状态后根据报警设置和勾选的报警人确定发送对象和发送方式。
- **网关状态逻辑:**
- **网关离线判断:**
- 三者条件满足任一进入下一个判断。
- 同时满足网关在线再进入下一个判断。
![img](assets/clip_image002.png)
- 上述两个条件满足之后,进入处理
- 状态置为0
- 如果报警设置设置了网关离线则发送相应的消息
- 网关掉电同上
- 网关下的设备状态都置为0
![image-20240724091848331](assets/image-20240724091848331.png)
注:
- 常规的增删改查可通过接口注释知晓其作用,故未在此展示。
- 大部分接口都涉及租户和平台的判断,上述业务逻辑讲解不再单独提及此逻辑。
- 报警和设备状态相关操作引起数据库数据变动, redis需要同时作出相应变化和数据库保持一致上述业务逻辑讲解不再单独提及此逻辑。
- 各MQTT主题作用详见文件数据采集网关控制器-mqtt通讯规范此处不再赘述。
- 网关状态逻辑详见(网关在线离线逻辑判断 1.1 2024-7-3_加水印.pdf