Hallo,
danke für die Bereitstellung der Lösung zum Auswerten des Alertstreams. Ich habe es ausprobiert und es funktioniert, allerdings ist mein Raspberry PI schon mit einer Kamera deutlich überfordert durch die vielen Daten (<eventType>videoloss</eventType> <eventState>inactive</eventState> Meldungen). Ich habe bis dato keine Möglichkeit bei der Kamera gefunden, diese irgendwie abzustellen.
Ich möchte deshalb auch kurz erläutern, wie weit ich mit der ISAPI/Event/notification/httpHosts Funktion der Kamera gekommen bin. Als erstes konfiguriert man einen Server Socket in IPS mit einem beliebigen freien Port.
Dann eine RegisterVariable, die die Daten vom Serversocket erhält und an ein Script (z. B. Notification) weiterleitet.
Das Script (Notification) wertet die XML Daten aus und speichert die relevanten Informationen in IPS Variablen. Z. B.
<?
if ($_IPS['SENDER'] == "RegisterVariable")
{
$sData = $_IPS['VALUE'];
$sXML = substr($sData, stripos($sData, "<?xml"));
$sXML = str_replace('&&', '|' , $sXML);
$oXMLData = new SimpleXMLElement($sXML);
SetValueInteger(59656 /*[Scripts\Kamera\Nordseite_Motion_Counter]*/, (int)$oXMLData->activePostCount);
// echo "Event: " . $oXMLData->eventDescription;
// echo "PostCount: " . $oXMLData->activePostCount;
// echo "Date: " . $oXMLData->dateTime;
}
?>
Um das ganze zu aktivieren, muss man folgende XML Datei anlegen (z. B. httpHosts.xml) und per curl an die Kamera schicken.
<?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>
<hostName></hostName>
<ipAddress>192.168.1.13</ipAddress>
<portNo>1024</portNo>
<userName></userName>
<httpAuthenticationMethod>none</httpAuthenticationMethod>
</HttpHostNotification>
</HttpHostNotificationList>
curl -T httpHosts.xml http://admin:passwort@192.168.1.65/ISAPI/Event/notification/httpHosts
Zurück sollte dann folgende XML kommen:
<?xml version="1.0" encoding="UTF-8"?>
<ResponseStatus version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<requestURL>/ISAPI/Event/notification/httpHosts</requestURL>
<statusCode>1</statusCode>
<statusString>OK</statusString>
<subStatusCode>ok</subStatusCode>
</ResponseStatus>
Ab jetzt schickt die Kamera bei einem Ereignis die Daten an den Serverport in IPS. Ein großer Vorteil ist, dass nur dann Daten kommen, wenn ein Ereignis erkannt wird und das System nicht überlastet ist.
Allerding musste ich feststellen, dass bei einer Bewegung die Daten von der Kamera fünf mal geschickt werden (im 10 Sekunden Takt). Ich vermute mal das liegt daran, dass die Kamera erwartet, dass irgendeine Form von Bestätigung (XML) zurückkommt. Das wäre grundsätzlich über den ServerPort auch möglich, allerdings weiß ich nicht wie diese auszusehen hätte, so dass es von der Kamera akzeptiert wird.
Die Funktion ISAPI/Event/notification/httpHosts wird eigentlich von der Hikvision Smartphone APP konfiguriert, wenn man die Alarme in der APP einschaltet. Dann schickt die Kamera bei einer Bewegung die Daten an einen Hikvision Server bei AWS, der dann wiederum die Smartphone APP darüber informiert.
Ich haben schon mal versucht mit einem Netzwerktrace die Rückantwort anzusehen, allerdings ist das nicht ganz so trivial. Die Antwort kommt wiederum von einer anderen IP Adresse. Ganz komisch.
Vielleicht hat ja jemand eine Idee bezüglich der passenden Rückantwort. Dann denke ich wäre es eine schöne Lösung.
Viele Grüße