一、创建并运行flask监听
from flask import Flask, request
import requests
from requests.auth import HTTPDigestAuth
app = Flask(__name__)
@app.route('/', methods=['POST'])
def alert():
pass
if __name__ == '__main__':
app.run(host='192.168.123.11', port=8000, debug=True)
二、在海康软件中添加传输协议
可以点击测试,会显示服务可用 ,然后保存
三、在程序中添加接收代码
@app.route('/', methods=['POST'])
def alert():
ip_add = request.remote_addr
# print(ip_add)
form_data = request.form
fielddetection_data = form_data.get('TMA')
if fielddetection_data:
file = request.files.getlist('TMA')[0]
data = file.read()
root = ET.fromstring(fielddetection_data)
warm_time = root.find('dateTime').text
ymd, hms = get_ymd_hms(warm_time)
save_img(ymd, hms, data)
print(f"{ip_add}", "超温")
这里演示的是超温报警的案例
因为我使用海康威视摄像头是自带热成像的所以事件报警会上报两张图片,一张是RGB图像、另一张是热成像图像,因此使用request.files.getlist('TMA')[0]拿到的就是第一张RGB图像
save_img是我自定义的保存图片函数如下:
def save_img(ymd, hms, data):
if not os.path.exists(f"../alarmimage/smoke-flames/{ymd}"):
os.makedirs(f"../alarmimage/smoke-flames/{ymd}")
save_path = f"../alarmimage/smoke-flames/{ymd}/{hms}.jpg"
with open(save_path, 'wb') as f:
f.write(data)