dispath dahua event 优化
This commit is contained in:
parent
7722a82a04
commit
48f4b22c6a
|
@ -203,6 +203,7 @@ class TestViewSet(CustomGenericViewSet):
|
|||
'6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_57329128_57402530.jpg'], 'groupName': '全体人员', 'similarity': 99, 'sex': 1, 'cardType': 1, 'name': '曹前明', 'devPersonId': '48', 'id': '342422199004040175', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_56995669_57321861.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 24, 'szSerialUUID': '', 'channelName': '窑头平台值班室', 'beginTime': 1662099849, 'endTime': 1662099849, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 24, 'orgCode': '001001001', 'channelName': '窑头平台值班室', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
|
||||
data = {'id': 1662786479984, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'nodeCode': '1000038$1$0$24', 'deviceCode': '1000038', 'alarmCode': 'b672731c-4807-47e6-a468-c5f85a68e87d', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220910/1/dsf_2c1150b4-309b-11ed-884a-e4246c7d1635_45588364_45596445.jpg', 'nodeType': 2, 'alarmDate': '1662786477', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220910/1/dsf_2c1150b4-309b-11ed-884a-e4246c7d1635_45588364_45596445.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [{'birthday': '2022-8-24', 'faceImageUrl': [
|
||||
'6ad010cf-ce45-11ec-9715-e4246c7d1635/20220910/1/dsf_2c1150b4-309b-11ed-884a-e4246c7d1635_45596445_45673444.jpg'], 'groupName': '全体人员', 'similarity': 81, 'sex': 2, 'cardType': 1, 'name': '石静', 'devPersonId': '47', 'id': '371324199502156548', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220910/1/dsf_2c1150b4-309b-11ed-884a-e4246c7d1635_45288246_45588364.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 24, 'szSerialUUID': '', 'channelName': '窑头平台值班室', 'beginTime': 1662786477, 'endTime': 1662786477, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 24, 'orgCode': '001001001', 'channelName': '窑头平台值班室', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
|
||||
data = {'id': None, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'alarmPictureSize': '592887', 'nodeCode': '1002191$1$0$0', 'deviceCode': '1002191', 'alarmCode': '{DBF64A47-DA5B-F147-B474-E74F54E4B6E9}', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220923/1/dsf_b834ecae-3ad7-11ed-85c0-e4246c7d1635_43351055_43943942.jpg', 'nodeType': 2, 'deviceName': '192.168.10.177', 'alarmDate': '1663897556', 'alarmGrade': 2, 'isSave': True, 'unitType': 1, 'unitSeq': 0, 'extend': {'params': {'ObjectType': 'Unknown', 'nResetID': 0.0, 'HFOV': 0.0, 'stuPTZPosition': {'nPositionX': 0.0, 'nPositionY': 0.0, 'nZoom': 0.0}, 'Objects': [{'stuBoundingBox': {'nTop': 2616.0, 'nBottom': 3288.0, 'nLeft': 4352.0, 'nRight': 4768.0}}], 'nRuleID': 2.0, 'GroupId': 380.0, 'ObjectSubType': '', 'VFOV': 0.0}, 'objectSubType': ''}, 'alarmType': 303, 'channelSeq': 0, 'orgCode': '001001001', 'channelName': '二道门地中衡', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'admin', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
|
||||
dispatch_dahua_event(data=data)
|
||||
return Response()
|
||||
|
||||
|
|
|
@ -337,57 +337,33 @@ def dispatch_dahua_event(data: dict):
|
|||
'event': event
|
||||
})
|
||||
elif 300 < alarm_type < 1000 and vchannel: # 其他智能通道报警
|
||||
ec = EventCate.objects.filter(code=str(alarm_type)).first()
|
||||
event = None
|
||||
global_img_o = dhClient.get_full_pic(data['info']['alarmPicture'])
|
||||
happen_time = timestamp_to_time(int(data['info']['alarmDate']))
|
||||
if ec and AlgoChannel.objects.filter(vchannel=vchannel, algo=ec).exists(): # 先查看是否有定义该事件种类并布设
|
||||
event = Event()
|
||||
event.global_img = save_dahua_pic(global_img_o)
|
||||
event.area = vchannel.area
|
||||
event.obj_cate = 'other'
|
||||
event.vchannel = vchannel
|
||||
event.happen_time = happen_time
|
||||
event.save()
|
||||
Eventdo.objects.get_or_create(cate=ec, event=event, defaults={
|
||||
'cate': ec,
|
||||
'event': event
|
||||
})
|
||||
# 查看加载的算法
|
||||
algo_codes = list(AlgoChannel.objects.filter(vchannel=vchannel, algo__self_algo=True).exclude(
|
||||
algo__code=None).order_by('algo__priority', 'algo__create_time').values_list('algo__code', flat=True))
|
||||
algo_channels = AlgoChannel.objects.filter(vchannel=vchannel, algo__self_algo=True).exclude(
|
||||
algo__code=None).order_by('algo__priority', 'algo__create_time').values('id', 'algo', 'algo__code')
|
||||
cates = [] # 触发的事件种类
|
||||
algo_codes = [] # 需要执行的ai算法
|
||||
for i in algo_channels:
|
||||
if i['algo__code'] == str(alarm_type):
|
||||
cates.append(i['algo'])
|
||||
else:
|
||||
algo_codes.append(i['algo__code'])
|
||||
if algo_codes:
|
||||
ec_codes = ai_analyse(algo_codes, global_img=global_img_o) # 算法处理
|
||||
if ec_codes:
|
||||
# 获取本次所有发生事件种类
|
||||
ecs = EventCate.objects.filter(code__in=ec_codes.keys())
|
||||
obj_cate = 'other'
|
||||
ep = None
|
||||
if 'helmet' in ec_codes:
|
||||
# 如果存在安全帽事件
|
||||
# 尝试以图搜图找到当事人
|
||||
# res = dhClient.face_search(path=global_img_o)
|
||||
# if res and res[0]:
|
||||
# ep = Employee.objects.filter(id_number=res[0]['identity']).first()
|
||||
obj_cate = 'people'
|
||||
if event is None: # 如果未创建事件
|
||||
event = Event()
|
||||
event.global_img = save_dahua_pic(global_img_o)
|
||||
event.area = vchannel.area
|
||||
event.obj_cate = obj_cate
|
||||
event.employee = ep
|
||||
event.vchannel = vchannel
|
||||
event.happen_time = happen_time
|
||||
event.save()
|
||||
else:
|
||||
event.obj_cate = obj_cate
|
||||
event.employee = ep
|
||||
event.save()
|
||||
for i in ecs:
|
||||
Eventdo.objects.get_or_create(cate=i, event=event, defaults={
|
||||
'cate': i,
|
||||
'event': event
|
||||
})
|
||||
for m in ec_codes.keys():
|
||||
for n in algo_channels:
|
||||
if m == n['algo__code']:
|
||||
cates.append(n['algo'])
|
||||
event = Event()
|
||||
event.global_img = save_dahua_pic(global_img_o)
|
||||
event.area = vchannel.area
|
||||
event.obj_cate = 'other'
|
||||
event.vchannel = vchannel
|
||||
event.happen_time = timestamp_to_time(int(data['info']['alarmDate']))
|
||||
event.save()
|
||||
for i in cates:
|
||||
Eventdo.objects.get_or_create(cate=i, event=event, defaults={
|
||||
'cate': i,
|
||||
'event': event
|
||||
})
|
||||
if event:
|
||||
notify_event(event)
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ class TDevice(BaseModel):
|
|||
is_clock = models.BooleanField('是否打卡设备', default=False)
|
||||
access_list = models.JSONField('自动下发人员类型', default=list,
|
||||
null=False, blank=True, help_text='employee/remployee/visitor/driver')
|
||||
# algos = models.ManyToManyField('ecm.eventcate', through='ecm.algochannel', blank=True)
|
||||
third_info = models.JSONField('三方信息', default=dict,
|
||||
null=False, blank=True)
|
||||
|
||||
|
|
|
@ -62,6 +62,8 @@ class SpeakerViewSet(CustomGenericViewSet):
|
|||
|
||||
喇叭视图集
|
||||
"""
|
||||
serializer_class = serializers.Serializer
|
||||
|
||||
@action(methods=['get'], detail=False,
|
||||
permission_classes=[IsAuthenticated])
|
||||
def headers(self, request, pk=None):
|
||||
|
@ -262,7 +264,7 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
|||
|
||||
获取token
|
||||
"""
|
||||
return Response({'token': dhClient.token})
|
||||
return Response({'token': dhClient.token, 'header': dhClient.headers})
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
permission_classes=[IsAuthenticated],
|
||||
|
|
Loading…
Reference in New Issue