Webservice bei Alarm anfragen / externer Webservice Trigger

Mein Wunsch ist, dass die Kameras in der Lage sind, mit einem Webservice zu interagieren:

  • Bei Alarm kann eine URL abgefragt werden, die einem externen System Informationen übermittelt. Dies könnte z.B. mit Konstanten geschehen
    Beispiel: 192.168.0.12/action.php?action=alarm&cam=CAMERAID&name=CAMERANAME
    Die Konstanten CAMERAID und CAMERANAME werden von der Kamerasoftware bereitgestellt und entsprechend gefüllt.
    Allerdings sollte der Nutzer die Möglichkeit haben, die URL nach seinen Wünschen zu editieren.

  • Ein externer Webserver kann über eine URL z.B. http://192.168.1.140/alarm.cgi?user=alarm&pass=**** den Alarm einer Kamera auslösen. Dies wäre eine gute Alternative zu den festen Alarmeingängen einiger Kameras.

Frohes neues,

Hannes FR

Das würde ich wie folgt lösen: Die FTP-Möglichkeit der Cam nutzen und auf dem Remoteserver einen kleinen Powershell-Script als Eventwatcher einsetzen:


$FileFolder = 'c:/inetpub/ftproot/webcam1'               # Das FTP-Verzeichnis am Server
$FileFilter = '*.*'                                                  # Filefilter

$fsw = New-Object IO.FileSystemWatcher $fileFolder, $fileFilter -Property @{
          IncludeSubdirectories = $false  
          NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}

$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
 $path = $Event.SourceEventArgs.FullPath
 $name = $Event.SourceEventArgs.Name
 $changeType = $Event.SourceEventArgs.ChangeType
 $timeStamp = $Event.TimeGenerated
 Invoke-WebRequest -Uri "www.meinserver.de/action.php?action=alarm&cam=CAMERAID&name=CAMERANAME"

}

Ermittlung von CAM-ID und Name kann man z.B. durch unterschiedliche FTP-Verzeichnisse lösen. Alternativ bietet sich die Möglichkeit an, einen kleinen c# Webservice aufzusetzen, der das gleiche macht.

cp

Ja, das wäre aber die schmutzige Lösung.

Das das hier die Wunschliste ist, dachte ich, ich wünsche mir mal ne elegante. Es sieht aber so aus, als ob es bereits eine Implementierung gibt, die nur nicht dokumentiert ist.