dev-aid/deploy/pa-iot/开发文档.md
2025-04-14 17:40:50 +08:00

7.4 KiB
Raw Blame History

项目结构

img

从上到下依次为:

  • Webapi项目

  • 数据库项目

  • 接收MQTT主题消息的项目

  • 处理定时任务的项目

  • MQTT服务器项目

其在服务器对应的服务从上到下且不包含PAIoT.DataPersistence

  • 华为云 123.249.108.39

  • pa-iot /workspace/www/pingan-iot/api-/app

  • datasync /workspace/www/datasync-/app

  • jobs /workspace/www/pingan-iot/jobs-/app

  • mqtt /workspace/www/mqtt-/app img_1.png

  • 阿里云

    • iot-api 114.215.110.136 /workspace/www/api-/app

    • datasync2 47.104.199.96 /workspace/datasync2-/app

    • jobs 114.215.110.136 /workspace/www/jobs-/app

    • mqttbroker 114.215.110.136 /workspace/www/mqtt-/app img_1.png img_1.png

PAIOT

image-20240725143015574

PAIoT.DataPersistence

image-20240725143104943

PAIoT.DataSync

image-20240725143151090

PAIoT.Jobs

image-20240725143851169

PAIoT.MQTT

image-20240725143419574

业务逻辑

  • PAIOT

    • 仪表盘-工作台:
      • 同步数据:展示当天实时数据的个数。
    • 客户管理-员工管理:
      • 是否绑定:当该账号登录小程序后,会改为已绑定状态。绑定后可以通过点击解绑,也可以通过小程序端解绑。
    • 设备管理
      • 拓扑结构:返回树形结构数据:公司-网关COM-设备。
      • 物模型复制根据Id查找父表及其子表将父表结果名拼接“副本”并添加将新父表Id赋给子表并批量添加。
    • 配电室监控
      • 电力组态将前端发送的数据存储到数据库configureLable存储设备和其对应标签之后通过标签获得最新的实时数据。
    • 消息管理
      • 存在两种消息:手动添加和系统自动发送的,手动添加的可被删除,系统自动发送的不可删除。
      • 通过字体粗细标识是否已读,粗体未读,正常字体已读。
    • 数据计算公式
      • 用电量: 结束时间的0000时刻的用电量减去开始时间的0000时刻的用电量

      • 平均功率因数:img

        • 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每一次的报警时间间隔由间隔时间/报警次数得出。
          • 间隔时间在报警完成后开始累计,直至间隔时间结束,系统不会再对该以判断过报警的监测点进行判断。
          • 报警时先生成alarmevent之后进行实际的报警操作最后存储实际的发送人到notifylog。
      • 网关状态报警:

        • 针对设置网关状态报警设置的指标: 网关状态报警即在网关状态发生相应的变化时,发出对应的告警,其告警为立刻告警,收到对应的消息即刻告警,进入报警状态后,根据报警设置和勾选的报警人确定发送对象和发送方式。

        • 网关状态发生相应变化详见网关状态逻辑,此处不再赘述。

      • 网关IO报警

        • **针对设置网关IO报警设置的指标**接收到相应的event主题后发出对应的告警其告警为立刻告警收到对应的消息即刻告警进入报警状态后根据报警设置和勾选的报警人确定发送对象和发送方式。
    • 网关状态逻辑:

      • 网关离线判断:

        • 三者条件满足任一进入下一个判断。

        • 同时满足网关在线再进入下一个判断。

          img

        • 上述两个条件满足之后,进入处理

          • 状态置为0
          • 如果报警设置设置了网关离线则发送相应的消息
          • 网关掉电同上
          • 网关下的设备状态都置为0

          image-20240724091848331

注:

  • 常规的增删改查可通过接口注释知晓其作用,故未在此展示。

  • 大部分接口都涉及租户和平台的判断,上述业务逻辑讲解不再单独提及此逻辑。

  • 报警和设备状态相关操作引起数据库数据变动, redis需要同时作出相应变化和数据库保持一致上述业务逻辑讲解不再单独提及此逻辑。

  • 各MQTT主题作用详见文件数据采集网关控制器-mqtt通讯规范此处不再赘述。

  • 网关状态逻辑详见(网关在线离线逻辑判断 1.1 2024-7-3_加水印.pdf