En este artículo mostraremos cómo configurar la opción de servidor de alarmas de una cámara IP Hikvision a través de ISAPI.
Para este ejemplo utilizaremos estos datos:
IP de la cámara: 192.168.50.37
Usuario de la cámara: admin
Contraseña de la cámara: Syscom2025
1. Consulta capacidades de la cámara
Primero debemos utilizar el siguiente endpoint para validar que la cámara sí soporte la función:
Solicitud:
curl --digest -u admin:Syscom2025 --location '192.168.50.37/ISAPI/Event/notification/httpHosts/capabilities'
Respuesta:
<?xml version="1.0" encoding="UTF-8"?>
<HttpHostNotificationCap version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<hostNumber>3</hostNumber>
<urlLen min="1" max="128"/>
<protocolType opt="HTTP,HTTPS,EHome"/>
<parameterFormatType opt="XML,JSON"/>
<addressingFormatType opt="ipaddress,hostname"/>
<ipAddress opt="ipv4,ipv6"/>
<portNo min="1" max="65535"/>
<userNameLen min="1" max="32"/>
<passwordLen min="1" max="16"/>
<httpAuthenticationMethod opt="none,base64"/>
<uploadImagesDataType opt="URL,binary"/>
<httpBroken opt="true,false" def="true"/>
</HttpHostNotificationCap>
En este ejemplo la cámara puede registrar hasta 3 host, utilizando http o https.
2. Ver host configurados
Si deseamos ver cuáles host tiene configurado, utilizamos el siguiente endpoint:
Solicitud:
curl --digest -u admin:Syscom2025 --location '192.168.50.37/ISAPI/Event/notification/httpHosts'
Respuesta:
<?xml version="1.0" encoding="UTF-8"?>
<HttpHostNotificationList version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<HttpHostNotification version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<id>1</id>
<url>/</url>
<protocolType>HTTP</protocolType>
<parameterFormatType>XML</parameterFormatType>
<addressingFormatType>ipaddress</addressingFormatType>
<ipAddress>0.0.0.0</ipAddress>
<portNo>80</portNo>
<userName></userName>
<httpAuthenticationMethod>none</httpAuthenticationMethod>
<httpBroken>true</httpBroken>
</HttpHostNotification>
<HttpHostNotification version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<id>2</id>
<url>/</url>
<protocolType>HTTP</protocolType>
<parameterFormatType>XML</parameterFormatType>
<addressingFormatType>ipaddress</addressingFormatType>
<ipAddress>0.0.0.0</ipAddress>
<portNo>80</portNo>
<userName></userName>
<httpAuthenticationMethod>none</httpAuthenticationMethod>
<httpBroken>true</httpBroken>
</HttpHostNotification>
<HttpHostNotification version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<id>3</id>
<url>/</url>
<protocolType>HTTP</protocolType>
<parameterFormatType>XML</parameterFormatType>
<addressingFormatType>ipaddress</addressingFormatType>
<ipAddress>0.0.0.0</ipAddress>
<portNo>80</portNo>
<userName></userName>
<httpAuthenticationMethod>none</httpAuthenticationMethod>
<httpBroken>true</httpBroken>
</HttpHostNotification>
</HttpHostNotificationList>
3. Configurar mediante Hostname
Para configurarlo mediante hostname, debemos realizar lo siguiente:
Petición:
curl --digest -u admin:Syscom2025 --location --request PUT '192.168.50.37/ISAPI/Event/notification/httpHosts/1' \
--header 'Content-Type: application/xml' \
--data '<?xml version="1.0" encoding="UTF-8"?>
<HttpHostNotificationList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<HttpHostNotification>
<id>1</id>
<url>/lectura</url>
<protocolType>HTTPS</protocolType>
<parameterFormatType>XML</parameterFormatType>
<addressingFormatType>hostname</addressingFormatType>
<hostName>ingenieria.syscom.mx</hostName>
<portNo>443</portNo>
<httpAuthenticationMethod>none</httpAuthenticationMethod>
<SubscribeEvent>
<heartbeat>30</heartbeat>
<eventMode>all</eventMode>
</SubscribeEvent>
</HttpHostNotification>
</HttpHostNotificationList>'
Respuesta:
<?xml version="1.0" encoding="UTF-8"?>
<ResponseStatus version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<requestURL></requestURL>
<statusCode>1</statusCode>
<statusString>OK</statusString>
<subStatusCode>ok</subStatusCode>
</ResponseStatus>
4. Configurar mediante Dirección IP
Para configurarlo mediante dirección ip, debemos realizar lo siguiente:
Petición:
curl --digest -u admin:Syscom2025. --location --request PUT '192.168.50.37/ISAPI/Event/notification/httpHosts/1' \
--header 'Content-Type: application/xml' \
--data '<?xml version="1.0" encoding="UTF-8"?>
<HttpHostNotificationList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<HttpHostNotification>
<id>1</id>
<url>/lectura</url>
<protocolType>HTTP</protocolType>
<parameterFormatType>XML</parameterFormatType>
<addressingFormatType>ipaddress</addressingFormatType>
<ipAddress>192.168.50.253</ipAddress>
<portNo>8090</portNo>
<httpAuthenticationMethod>none</httpAuthenticationMethod>
<SubscribeEvent>
<heartbeat>30</heartbeat>
<eventMode>all</eventMode>
</SubscribeEvent>
</HttpHostNotification>
</HttpHostNotificationList>'
Respuesta:
<?xml version="1.0" encoding="UTF-8"?>
<ResponseStatus version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<requestURL></requestURL>
<statusCode>1</statusCode>
<statusString>OK</statusString>
<subStatusCode>ok</subStatusCode>
</ResponseStatus>
5. Extra
Podemos descargar el proyecto Demo - Receptor de eventos mediante HTTP para validar el envío de los eventos y para inspeccionar el contenido.