From 1e060fb48693a4a1c52b4738e7002b048f39b9c7 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 4 Feb 2024 10:24:40 +0800 Subject: [PATCH] update --- config.yaml | 54 +++++++++--------- hik_push/read_event.py | 88 ++++++++++++++++++++---------- hik_push/sub_body.json | 7 ++- hik_push/trd.json | 121 +++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- 5 files changed, 215 insertions(+), 57 deletions(-) create mode 100644 hik_push/trd.json diff --git a/config.yaml b/config.yaml index 5f90611..e6f6b41 100644 --- a/config.yaml +++ b/config.yaml @@ -1,37 +1,37 @@ user_ids: T2变电所: - g78976das - A区北油库: + A区北油库: [] B区西~油库: - fsdf34324 - dsffee879 - 二厂平台~东: - T1变电所: + 二厂平台~东: [] + T1变电所: [] A区南~油库: - ffe348244 - T3变电所: - T11变电所: - 二厂平台~西: - 二厂平台~中01: - 二厂平台~中02: - T9变压器: - T6变压器: - B区西~油库(测温): - T2变电所 (测温): - 二厂平台~西(测温): - 二厂平台~中01(测温): - T1变电所(测温): - 二厂平台~东(测温): - 二厂平台~中02(测温): - T3变电所(测温): - T11变电所(测温): - A区南~油库(测温): - T9变压器(测温): - T6变压器(测温): - A区北油库(测温): - A区_北油库_气体探测器: - A区_南油库_气体探测器: - B区油库_气体探测器: + T3变电所: [] + T11变电所: [] + 二厂平台~西: [] + 二厂平台~中01: [] + 二厂平台~中02: [] + T9变压器: [] + T6变压器: [] + B区西~油库(测温): [] + T2变电所 (测温): [] + 二厂平台~西(测温): [] + 二厂平台~中01(测温): [] + T1变电所(测温): [] + 二厂平台~东(测温): [] + 二厂平台~中02(测温): [] + T3变电所(测温): [] + T11变电所(测温): [] + A区南~油库(测温): [] + T9变压器(测温): [] + T6变压器(测温): [] + A区北油库(测温): [] + A区_北油库_气体探测器: [] + A区_南油库_气体探测器: [] + B区油库_气体探测器: [] event_type: @@ -80,6 +80,8 @@ event_type: 254235: 高限报警 254011: 燃气报警 930335: 高空抛物 + 327681: 防区报警 + 327946: 防区布防 889196545: 监控点离线 422400001: 有人打电话 422400000: 有人抽烟 diff --git a/hik_push/read_event.py b/hik_push/read_event.py index e5a14a5..34386c4 100644 --- a/hik_push/read_event.py +++ b/hik_push/read_event.py @@ -16,9 +16,9 @@ async def read_event(): if "user_ids" not in config: logging.error("请配置user_ids") return - # if "devices" not in config: - # logging.error("请配置devices") - # return + if "devices" not in config: + logging.error("请配置devices") + return if "event_type" not in config: logging.error("请配置event_type") return @@ -38,31 +38,63 @@ async def read_event(): sub_json = json.loads(data[1].decode('utf-8')) events = sub_json["params"]["events"] for event in events: - # 将eventType ID 替换为中文字符串 - event_type = event['eventType'] - logging.info(event_type) - event_type_str = event_map.get(event_type, "未知事件类型") - event['eventType'] = event_type_str - # - src_index = event["srcIndex"] - device_name = device_map.get(src_index, "未知设备") - user_ids = user_map.get(device_name, []) - event['deviceName'] = device_name - event['userIds'] = user_ids - if "data" in event: - # 如果存在 data 属性 - # 替换分析结果字段 - if "eventType" in event['data']: - detection_field_name = event['data']['eventType'] - if detection_field_name in event['data']: - event['data']["_detectionResult"] = event['data'].pop(detection_field_name) - # 请求推送 api - logging.info(event) - try: - push_resp = requests.post(push_url, json=event).content.decode('utf-8') - logging.info(push_resp) - except Exception as e: - logging.error(f"网络错误推送失败: {e}") + # 如果是ai事件 + if event["srcType"] == "eventRule": + event_details = event["eventDetails"] + for event_detail in event_details: + # 事件类型 id 替换为 str + event_type_str = event_map.get(event_detail['eventType'], "未知事件类型") + event_detail['eventType'] = event_type_str + # 添加设备名称 + src_index = event_detail["srcIndex"] + device_name = device_map.get(src_index, "未知设备") + event_detail['deviceName'] = device_name + # 根据设备名称获取 user_ids + user_ids = user_map.get(device_name, []) + event_detail['userIds'] = user_ids + # 添加其他字段 + event_detail["eventLvl"] = event['eventLvl'] + event_detail["happenTime"] = event['happenTime'] + # 如果存在 data 属性 + if "data" in event_detail: + # 替换分析结果字段 + if "eventType" in event_detail['data']: + detection_field_name = event_detail['data']['eventType'] + if detection_field_name in event_detail['data']: + event_detail['data']["_detectionResult"] = event_detail['data'].pop(detection_field_name) + logging.info(event_detail) + try: + push_resp = requests.post(push_url, json=event_detail).content.decode('utf-8') + logging.info(push_resp) + except Exception as e: + logging.error(f"网络错误推送失败: {e}") + else: + # 将 eventType ID 替换为中文字符串 + event_type = event['eventType'] + logging.info(event_type) + event_type_str = event_map.get(event_type, "未知事件类型") + event['eventType'] = event_type_str + # 添加设备名称 + src_index = event["srcIndex"] + device_name = device_map.get(src_index, "未知设备") + # 根据设备名称获取 user_ids + user_ids = user_map.get(device_name, []) + event['deviceName'] = device_name + event['userIds'] = user_ids + if "data" in event: + # 如果存在 data 属性 + # 替换分析结果字段 + if "eventType" in event['data']: + detection_field_name = event['data']['eventType'] + if detection_field_name in event['data']: + event['data']["_detectionResult"] = event['data'].pop(detection_field_name) + # 请求推送 api + logging.info(event) + try: + push_resp = requests.post(push_url, json=event).content.decode('utf-8') + logging.info(push_resp) + except Exception as e: + logging.error(f"网络错误推送失败: {e}") except Exception as e: logging.error("error: ", e) diff --git a/hik_push/sub_body.json b/hik_push/sub_body.json index 601560c..46e56ec 100644 --- a/hik_push/sub_body.json +++ b/hik_push/sub_body.json @@ -33,9 +33,12 @@ 192515, 192514, 192513, + 254234, + 254235, + 254011, 930335, - 20210724, - 20210724 + 327681, + 327946 ], "eventDest": "http://127.0.0.1:8000/eventRcv", "subType": 0 diff --git a/hik_push/trd.json b/hik_push/trd.json new file mode 100644 index 0000000..0eb14fc --- /dev/null +++ b/hik_push/trd.json @@ -0,0 +1,121 @@ +{ + "eventDetails": [ + { + "ability": "event_vss", + "data": { + "AIOPResultData": { + "confidence": 770, + "height": "1080", + "id": 10013, + "imageUrl": "http://192.168.1.250:6120/pic?0d44=de54ida-=o1018p02ea976d-63599cbbb*162s=**118==tp*7618=6201040*6020=7l1*0026=fo966-14*le1-od2620224252", + "modelID": "00012023050501005hms3classDet00", + "realArea": 0, + "realHeight": 0, + "realVolume": 0, + "realWidth": 0, + "rect": { + "h": "0.107890", + "w": "0.067804", + "x": "0.305665", + "y": "0.303932" + }, + "region": { + "rect": { + "h": "0.107890", + "w": "0.067804", + "x": "0.305665", + "y": "0.303932" + } + }, + "ruleId": 2, + "ruleName": [ + "打电话" + ], + "targetAttrs": { + "cameraIndexCode": "f3e4a7ff9123414e8654735a6346c709", + "deviceIndexCode": "efa6aa29eaea4464aa5c3dd847f2c9c3", + "imageServerCode": "d74f089c-4888-4d36-b829-926e6f7c3c3c", + "picServerIndexCode": "d74f089c-4888-4d36-b829-926e6f7c3c3c" + }, + "taskID": "86ff37c70e9e42f98f636ee866619e00", + "taskType": "AIOP_Video", + "triggerType": 1073758209, + "type": 3, + "typeName": "打电话", + "url": None, + "valid": 1, + "visible": 1, + "width": "1920" + }, + "aiopMsgType": 2, + "channelID": 33, + "channelName": "T2变电所", + "dataProcInterval": "28", + "dataType": "AIOPDetection", + "dateTime": "2024-02-02T10:33:44.430+08:00", + "eventDescription": "AI Open Platform Video Detection", + "eventType": "AIOPResultData", + "ipAddress": "192.168.1.10", + "picUploadInterval": "13", + "portNo": 8000, + "presetIndex": 0, + "recvTime": "2024-02-02T10:34:20.589+08:00", + "sendTime": "2024-02-02T10:34:20.617+08:00", + "targetAttrs": { + "cameraIndexCode": "f3e4a7ff9123414e8654735a6346c709", + "deviceIndexCode": "efa6aa29eaea4464aa5c3dd847f2c9c3", + "imageServerCode": "d74f089c-4888-4d36-b829-926e6f7c3c3c", + "picServerIndexCode": "d74f089c-4888-4d36-b829-926e6f7c3c3c" + }, + "taskID": "86ff37c70e9e42f98f636ee866619e00", + "url": "http://192.168.1.250:6120/pic?0d44=de54ida-=o1018p02ea976d-63599cbbb*162s=**118==tp*7618=6201040*6020=7l1*0026=fo966-14*le1-od2620224252" + }, + "eventOriginalId": "578B384C-78AB-7743-A2E5-CDE3BD0E19E2", + "eventType": 422400002, + "locationIndexCode": ", "locationName": ", + "regionIndexCode": "2bc4f74e-4a96-4a67-b67f-4037724b0a46", + "regionName": "江淮 汽车发动机公司/行为分析监控", + "srcIndex": "f3e4a7ff9123414e8654735a6346c709", + "srcName": "T2变电所", + "srcType": "camera" + } + ], + "eventId": "894A9D9761D84FAB96BD0D292DA219BC", + "eventLvl": 2, + "eventName": "有人抽烟或打电话", + "eventOldId": "578B384C-78AB-7743-A2E5-CDE3BD0E19E2", + "eventType": "未知事件类型", + "happenTime": "2024-02-02T10:33:44.430+08:00", + "linkageAcion": [ + { + "content": "[{"cameraIndexCode":"f3e4a7ff9123414e8654735a6346c709","cameraName":"T2变电所","cameraType":"0","cascadeCode":"","decodeTag":"hikvision","recordType":"1","treatyType":"1"}]\n", + "linkageType": "popUpLiveViewOnClient" + }, + { + "content": "[{"cameraIndexCode":"f3e4a7ff9123414e8654735a6346c709","cameraName":"T2变电所","cameraType":"0","cascadeCode":"","decodeTag":"hikvision","recordType":"1","treatyType":"1"}]\n", + "linkageType": "popUpPlayBackOnClient" + }, + { + "content": "{"bPopupEventPicture":true}", + "linkageType": "popUpPictureOnClient" + }, + { + "content": "{"alertTimes":1,"soundText":"江淮 汽车发动机公司/行为分析监控,T2变电所发生有人抽烟或打电话事件"}\n", + "linkageType": "alertByEventInfo" + }, + { + "content": "{"wordsOverlayTxt":"江淮汽车发动机公司/行为分析监控,T2变电所发生有人抽烟或打电话事件"}\n", + "linkageType": "overlayTextOnPopUp" + } + ], + "remark": ", "ruleDescription": ", + "srcIndex": "03c96cdd994d4fda9dbc935be58af195", + "srcName": "有人抽烟或打电 话", + "srcParentIndex": "efa6aa29eaea4464aa5c3dd847f2c9c3", + "srcType": "eventRule", + "status": 0, + "stopTime": "2024-02-02T10:33:44.430+08:00", + "timeout": 0, + "deviceName": "未知设备", + "userIds": [] +} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 16e6782..286d1f7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hik-push" -version = "0.2.4" +version = "0.3.1" description = "" authors = ["quantulr <35954003+quantulr@users.noreply.github.com>"] readme = "README.md"