Підписка на подію
Для того, щоб отримати подію розпізнавання номеру автомобіля камерою (серії камер 7A26 та 4А26), необхідно підняти сервер, здатний обробляти запити.
Після цього необхідно відіслати відповідну команду (/ISAPI/Event/notification/httpServers/) на камеру, аби камера знала, куди відсилати подію (також є можливість зберігати зображення з номером).
Приклад:
ip камери: 192.168.30.173,
ip сервера: 192.168.30.139,
port сервера: 5008,
повний url : http://192.168.30.139:5008/http_alarm.
Команда для камери: http://192.168.30.173/ISAPI/Event/notification/httpServers/
метод – PUT, digest auth (login, password)
ulr – http://192.168.30.173/ISAPI/Event/notification/httpServers/
========
<HttpServer version=”2.0″
xmlns=”http://www.hikvision.com/ver20/XMLSchema”>
<id>1</id>
<url>http://192.168.30.139:5008/http_alarm</url>
<enabled>true</enabled>
<protocolType>HTTP</protocolType>
<parameterFormatType>XML</parameterFormatType>
<addressingFormatType>ipaddress</addressingFormatType>
<ipAddress>192.168.30.139</ipAddress>
<portNo>5008</portNo>
<userName></userName>
<httpAuthenticationMethod>none</httpAuthenticationMethod>
<eventType>all</eventType>
<uploadPicture>false</uploadPicture>
<pictureType>big</pictureType>
</HttpServer>
Для отримання налаштувань камери можна використати ту саму команду, але змінити метод на GET (щоб видалити – DELETE) .
GET http://192.168.30.173/ISAPI/Event/notification/httpServers/
DELETE http://192.168.30.173/ISAPI/Event/notification/httpServers/<:id>
Отримання інформації про номер та фото
Після цього, на вказаний url (http://192.168.30.139:5008/http_alarm) будуть приходити події формату: [(‘channelID’, ‘1’), (‘dateTime’, ‘20191228T121448 0200’), (‘eventType’, ‘vehicleDetection’), (‘country’, ‘Ukraine’), (‘licensePlate’, ‘AA7367EA’), (‘lane’, ‘1’), (‘direction’, ‘forward’), (‘confidenceLevel’, ‘100’)].
dateTime = request.args.get(‘dateTime’)
plate_number = request.args.get(‘licensePlate’)
А також зображення (request.data).
with open(‘{}\{}.jpg’.format(path, id), ‘wb’) as handler:
handler.write(request.data)
Відправити POST команду на камеру з відповідним пейлоадом.
Команда: http://192.168.30.176/ISAPI/ContentMgmt/search
Digest Auth: login, password
Пейлоад:
<CMSearchDescription>
<searchID>1</searchID>
<trackIDList>
<trackID>103</trackID>
</trackIDList>
<timeSpanList>
<timeSpan>
<startTime>2022-10-24T21:00:00Z</startTime>
<endTime>2022-10-25T20:59:59Z</endTime>
</timeSpan>
</timeSpanList>
<maxResults>50</maxResults>
</CMSearchDescription>
Приклад відповіді:
<?xml version=”1.0″ encoding=”UTF-8″?>
<CMSearchResult version=”2.0″
xmlns=”http://www.hikvision.com/ver20/XMLSchema”>
<searchID>{1}</searchID>
<responseStatus>true</responseStatus>
<responseStatusStrg>MORE</responseStatusStrg>
<numOfMatches>1</numOfMatches>
<matchList>
<searchMatchItem>
<sourceID>{0000000000-0000-0000-0000-000000000000}</sourceID>
<trackID>103</trackID>
<timeSpan>
<startTime>2022-10-25T11:26:30Z</startTime>
<endTime>2022-10-25T11:26:30Z</endTime>
</timeSpan>
<mediaSegmentDescriptor>
<contentType>picture</contentType>
<codecType>jpeg</codecType>
<playbackURI>http://192.168.30.176/ISAPI/Streaming/tracks/103/?starttime=20221025T112630Z&endtime=20221025T112630Z&name=ch01_00000000000000034@20221025132630_AB9999AC&size=195434</playbackURI>
</mediaSegmentDescriptor>
<metadataMatches>
<metadataDescriptor>recordType.meta.hikvision.com/vehicleDetection</metadataDescriptor>
</metadataMatches>
</searchMatchItem>
</matchList>
</CMSearchResult>
Де, спарсивши, значення playbackURI ви можете завантажити зображення GET запитом (http://192.168.30.176/ISAPI/Streaming/tracks/103/?starttime=20221025T112630Z&endtime=20221025T112630Z&name=ch01_00000000000000034@20221025132630_AB9999AC) і отримати номер автомобіля (AB9999AC).
Керування тривожним виходом
Відправити PUT команду на камеру з відповідним пейлоадом (щоб увімкнути тригер):
url=’http://{}:{}/ISAPI/System/IO/outputs/1/trigger’.format(‘192.168.30.173’, 80)
payloadToOn = “””
<IOPortData>
<outputState>high</outputState>
</IOPortData>
“””
r = requests.put(url, auth=HTTPDigestAuth(‘login’, ‘password’), data=payloadToOn, timeout=5)
Потім, щоб вимкнути тригер:
payloadToOff = “””
<IOPortData>
<outputState>low</outputState>
</IOPortData>
“””
r = requests.put(url, auth=HTTPDigestAuth(‘login’, ‘password’), data=payloadToOff, timeout=5)
Завантажуйте прикріплений файл з повною інструкцією.