安播辅助服务程序说明.md 5.4 KB

安播辅助服务程序说明

程序运行流程

  1. 超脑WebAPI 取出基础信息,基础信息包括
    • 算法信息
    • 平台信息(摄像机信息)
  2. 从总控WebAPI获取到相关的处理规则
  3. 从超脑(也是Redis)获取到监测信息,信息包括
    • 是否带口罩
    • 人员计数等
  4. 根据处理规则处理获取到的监测信息
  5. 将处理过的信息写入到数据库中

使用到的地址

  1. 超脑基础信息API地址 apifox
  2. Redis地址
  3. 总控数据库
    • SQL Server
      • 数据表:EQM_BJ
      • IP:192.1.3.105
      • 用户名:sa
      • 密码:Qwer1234
    • 达梦数据库
      • 数据表:EQM
      • IP:192.1.2.44
      • 密码:QWERT12345
      • 数据库:EQM_BJ
    • WebApi

从行业超脑获取基础信息

  1. 使用http从行业超脑获取到算法列表设备列表
  2. 这里使用一个线程单独读取,可能需要定时更新
  3. 算法列表设备列表tAction对应的值,算法列表好像只有这三个只有用,读取到后写入到EQM数据库 |算法列表|设备列表|EQM| |:--|:--|:--| |ability|ability|ActionId| |taskTypeId|taskTypeId|ActionTaskid| |muAiName|taskTypeName|ActionName|
  4. 设备列表获取的数据写入到EQM数据库的tActionCamer表格中,其对对应的关键字如下 |设备列表|tActionCamer| |:--|:--| |deviceId|CamerId| |deviceName|CamerName| |deviceSerial|CamerSerial| |deviceType|CamerType| |port|CamerPort| |userAccount|CamerUsr| |userPWD|CamerPwd|

从Redis获取数据

  1. Key的组成:%d : %s, DeviceID, 算法ID
  2. 算法ID通过获取摄像头算法列表获取到这个设备的算法编号,关键字是ability,存放在EQM数据库的tAction表格的ActionID
  3. Redis获取到的是JSON格式的数据,写入tAlarmInfo表格,需要根据Redis数据去其他表格获取补充数据,组合好后写入tAlarmInfo表格。Redis数据格式如下:

    {
        "actionDes": "",
        "actionResult": true,
        "alarmId": 73113,
        "beginTime": "2024-09-01T16:52:38.426",
        "channel": 1,
        "classifyId": 64,
        "classifyName": "培训教室-海康",
        "deviceSerial": "172.16.9.31",
        "endTime": "2024-09-01T16:53:38.426",
        "eventTime": "2024-09-01T16:53:08.426",
        "imageInfo": "http://webdav-read.default:80/webdav//GUI/1/PUMPING/2024/09/01//66d42b74e4b02066478c1ace.jpg",
        "isKeyPoint": 0,
        "personList": [],
        "picUrl": "66d42b74e4b02066478c1ace.jpg",
        "taskId": 452,
        "taskName": "夜晚001",
        "bBoxes": [
        {
            "bbox": [
            1692,
            369,
            1791,
            604
            ],
            "colorFlag": 1,
            "conf": [
            "0.03"
            ],
            "label": [
            "未成年人"
            ],
            "match_id": "",
            "status": false
        }
        ]
    }
    
  4. 补充数据关键字和其对应的EQM库表格 |关键字|补充表格|所需的数据| |:--|:--|:--| |channel|tChannel|获取通道信息| |CamerId|tRoomCamer|获取到RoomId| |RoomId|tRoomInfo|获取到Room信息|

EQM数据库表格说明

  1. tAction是算法信息表,从超脑获取到的算法信息写入这个表格
  2. tWorkOnInfo是人员在岗信息表,也包含人脸信息库
  3. tActionCamer摄像机ID,和算法ID关联
  4. tFaceUser用户信息表

启动程序,可能需要从EQM获取的数据

  1. tCamerinfo获取摄像机信息
  2. tAction获取算法信息
  3. tPeriod获取时段详细信息,这里是补充获取摄像机信息
  4. tRoomCamer获取房间信息,这里是补充获取摄像机信息
  5. tRoomCamer获取通道信息,这里是补充获取摄像机信息

应用各算法的检测逻辑

  1. 逻辑详情见安播辅助提示系统需求文档
  2. 这里不在是一个摄像机一个线程了,而是根据任务分配线程,如违禁物品每个摄像机对应的Action都可以检测,那么每个Redis Key就是一个线程;检测人员在岗需要房间内的多个摄像机联合起来判断,那么这个房间内的整个摄像机都是对应的Action都在一个线程中。

报警算法逻辑

写入EQM数据库报警信息

  1. 出现报警时会创建一条报警信息,直接写入到数据库,只有开始时间
  2. 根据设置的规定时间继续检测(如违禁品出现10秒才算报警,防止误报警),在规定时间内报警消失,就删除这次报警信息
  3. 超过了规定时间,报警消失,更新开始创建的那条信息的结束时间

人员在岗信息

  1. 人员在岗主要是给客户端实时信息
  2. 创建一个最新的记录在tWorkOnInfo表中,不断地更新这条数据的人数和人员信息
  3. 如果所有人都离岗了,这条信息的人数就清零
  4. 最新的在岗信息清零后,人员回来,就重新创建一条新的数据