[Info] VTO Event Empfänger

Vollzitat von darüber entfernt by stoney
Das Script wird einmalig gestartet oder kann auch als Dienst eingerichtet werden.
Danach kann man nach Bedarf Aktionen auf Events ausführen lassen. Die Aktionen musst Du selbst hinzufügen.
 
Zuletzt bearbeitet von einem Moderator:
Ich glaube, am Ende fehlt ein "}"?

Ich habe versucht, es zu benutzen, und ich habe es bekommen:
Code:
system@system:~/workspace/dahua$ php -f DahuaEventHandler.php
<** Dahua VTO Eventempfaenger START **>
2020-09-15 16:53:31.000000: Start login
2020-09-15 16:53:31.000000: Login success
2020-09-15 16:53:31.000000: Started keepAlive thread
2020-09-15 16:53:32.000000: keepAlive back
2020-09-15 16:53:32.000000: Event Manager subscription reply
PHP Fatal error:  Cannot redeclare SaveSnapshot() (previously declared in /home/system/workspace/dahua/DahuaEventHandler.php:371) in /home/system/workspace/dahua/DahuaEventHandler.php on line 371
 
Hast du am Code etwas geändert?
 
Habe das Script mal auf einem Raspi installiert. Funktioniert nun auch.
Kann mir jemand Beispiele nennen was ihr mit dem Script macht? Wie bekommt man aktionen dort hinein. Wäre super...
 
Das Script war nur als "Starhilfe" für eigene Projekte gedacht.
Wer PHP Scripte zumindest ein bisschen interpretieren kann, sollte es recht einfach an eigene Bedürfnisse anpassen können.

Ich z.b. sende mir bei jedem Anläuten und bei jeder Fingerprint Aktion einen Snapshot auf meine Signal App am Handy, Zusatzinfos wie User+benutzter Finger inklusive.
 
  • Like
Reaktionen: kuzco-ip
Hallo zusammen,

Super script danke dafür.
Ich hab leider ein kleines problem, das bestimmt einfach zu lösen ist nur leider fehlt mir das Linux know how hierfür.
Wenn ich das script im terminal starte läuft es ohne Probleme. Leider wird es abgebrochen sobald ich das Terminal verlasse. Wie kann ich das script nach jedem Neustart starten und im Hintergrund laufen lassen?
 
Zuletzt bearbeitet:
Ich habe etwas Einführung in PHP bekommen. Das Script funktioniert jetzt. Macht Snapshots, führt einen Befehl aus. Alles bestens! Danke
 
  • Like
Reaktionen: kuzco-ip
Wenn jemand noch "Unknown event received" empfängt, bitte um Debug Ausgabe des Scripts, werde das dann noch einbauen.

Code:
<** Dahua VTO Eventempfaenger START **>
2021-01-20 21:28:06.000000: Start login
2021-01-20 21:28:06.000000: Login success
2021-01-20 21:28:06.000000: Started keepAlive thread
2021-01-20 21:28:06.000000: keepAlive back
2021-01-20 21:28:07.000000: Unknown event received
array(4) {
  ["id"]=>
  int(2)
  ["method"]=>
  string(24) "client.notifyEventStream"
  ["params"]=>
  array(2) {
    ["SID"]=>
    int(513)
    ["eventList"]=>
    array(1) {
      [0]=>
      array(5) {
        ["Action"]=>
        string(5) "Start"
        ["Code"]=>
        string(10) "AlarmLocal"
        ["Data"]=>
        array(2) {
          ["LocaleTime"]=>
          string(19) "2021-01-20 20:28:07"
          ["UTC"]=>
          float(1611174487)
        }
        ["Index"]=>
        int(4)
        ["Param"]=>
        array(0) {
        }
      }
    }
  }
  ["session"]=>
  int(2147483638)
}
 
Danke - ist eingebaut.
Darf ich noch fragen, was da genau passtiert ist? Welches Gerät hast du bzw. wer was war der Auslösegrund für das Event? Alarme kannte ich sonst nur von den VTH's.
 
Zuletzt bearbeitet:
Vollzitat von darüber gemäß Boardregeln entfernt by stoney

Servus,

Das passierte sofort beim Start des Skriptes.
Ich habe eine VTO4202F mit SW
2020-02-21 V4.410.0000000.4.R

dazu eine Doppelklingeltaste und ein NFC Modul
 
Zuletzt bearbeitet von einem Moderator:
Nachdem man uns gestern abend den Schlitten vor der Tür geklaut hat (eine Kamera hat es aber aufgezeichnet und ich habe ihn wieder :) ) habe ich im "Script DahuaEventHandler.php" auch mal den Event VideoMotion mit der Generierung eines Snapshots der VTO2000a als Aktion "verbunden".
Natürlich hat das wie erwartet geklappt aber das sind mir zu viele VideoMotion-Events :) und somit zu viele Snapshots. Kennt jemand eine Möglichkeit den Bereich der VTO2000a wie auch bei Kamera mit MotionDetection zu versehen OHNE dass ich jetzt den Stream dauerhaft z.B. mit BlueIris überwache ?
 
Gute Frage.
Wenn auf dieses API Kommando nichts zurückkommt, dann unterstützt die SW der VTO das nicht:
http://<server>/cgi-bin/configManager.cgi?action=getConfig&name=MotionDetect
 
Naja, da kommt schon was zurück, denn die VTO hat ja MotionDection.
Mir geht es eher darum, dass ich den Bereich auf den die MotionDectection reagiert einschränken kann.

Bei den IP-Cam die ich habe, dass ich über ein "Raster" den Bereich definieren.
 
Darum die Frage: Was kommt zurück?
In der API Doku ist beschrieben, wie man die Bereiche auch definiert (mit setConfig), welche mit getConfig abgefragt werden können.
Probiert halt mal aus, ein Fenster/Raster zu setzten (Sektion 4.8 in DAHUA_HTTP_API_V2.76.pdf).

Bei meinen Dahua IP-Cams funktioniert das.
 
Sorry, dann war das ein Missverständnis.
Code:
table.MotionDetect[0].Enable=true
table.MotionDetect[0].EventHandler.AlarmOutChannels[0]=0
table.MotionDetect[0].EventHandler.AlarmOutEnable=false
table.MotionDetect[0].EventHandler.AlarmOutLatch=10
table.MotionDetect[0].EventHandler.BeepEnable=false
table.MotionDetect[0].EventHandler.Dejitter=5
table.MotionDetect[0].EventHandler.Delay=10
table.MotionDetect[0].EventHandler.LogEnable=true
table.MotionDetect[0].EventHandler.MailEnable=false
table.MotionDetect[0].EventHandler.MessageEnable=false
table.MotionDetect[0].EventHandler.MonitorTour[0].Enable=false
table.MotionDetect[0].EventHandler.MonitorTour[1].Enable=false
table.MotionDetect[0].EventHandler.PtzLink[0][0]=None
table.MotionDetect[0].EventHandler.PtzLink[0][1]=0
table.MotionDetect[0].EventHandler.PtzLinkEnable=false
table.MotionDetect[0].EventHandler.RecordChannels[0]=0
table.MotionDetect[0].EventHandler.RecordEnable=true
table.MotionDetect[0].EventHandler.RecordLatch=10
table.MotionDetect[0].EventHandler.SnapshotChannels[0]=0
table.MotionDetect[0].EventHandler.SnapshotEnable=false
table.MotionDetect[0].EventHandler.SnapshotTimes=5
table.MotionDetect[0].EventHandler.TimeSection[0][0]=1 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[0][1]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[0][2]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[0][3]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[0][4]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[0][5]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[1][0]=1 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[1][1]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[1][2]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[1][3]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[1][4]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[1][5]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[2][0]=1 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[2][1]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[2][2]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[2][3]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[2][4]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[2][5]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[3][0]=1 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[3][1]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[3][2]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[3][3]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[3][4]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[3][5]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[4][0]=1 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[4][1]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[4][2]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[4][3]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[4][4]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[4][5]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[5][0]=1 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[5][1]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[5][2]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[5][3]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[5][4]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[5][5]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[6][0]=1 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[6][1]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[6][2]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[6][3]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[6][4]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TimeSection[6][5]=0 00:00:00-24:00:00
table.MotionDetect[0].EventHandler.TipEnable=false
table.MotionDetect[0].EventHandler.VoiceEnable=false
table.MotionDetect[0].Level=3
table.MotionDetect[0].Region[0]=4294967295
table.MotionDetect[0].Region[1]=4294967295
table.MotionDetect[0].Region[2]=4294967295

Also viel über Log, Mail, Alarm, Zeitdef. - aber leider nicht, wo ich den Bereich eingrenzen könnte. Gehe also mal davon aus, dass dann leider nicht geht.
Ist auch nicht so schlimm. Die Snapshots sind von der Grösse her sehr gering und landen bei mir in einem eigenen Verzeichnis.
 
Versuch mal ein API Aufruf zum "erzeugen" eines Bereiches zu basteln:
Hab z.b. gerade den Bereich "Rechts" in einer Dahua IP_CAM Erzeugt, getConfig sieht dann so aus:
Code:
...
table.MotionDetect[0].Level=3
table.MotionDetect[0].MotionDetectWindow[0].Id=0
table.MotionDetect[0].MotionDetectWindow[0].Name=Rechts
table.MotionDetect[0].MotionDetectWindow[0].Region[0]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[1]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[2]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[3]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[4]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[5]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[6]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[7]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[8]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[9]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[10]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[11]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[12]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[13]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[14]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[15]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[16]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Region[17]=4190208
table.MotionDetect[0].MotionDetectWindow[0].Sensitive=60
table.MotionDetect[0].MotionDetectWindow[0].Threshold=5
table.MotionDetect[0].MotionDetectWindow[0].Window[0]=0
table.MotionDetect[0].MotionDetectWindow[0].Window[1]=0
table.MotionDetect[0].MotionDetectWindow[0].Window[2]=3723
table.MotionDetect[0].MotionDetectWindow[0].Window[3]=8191
table.MotionDetect[0].MotionDetectWindow[1].Id=1
table.MotionDetect[0].MotionDetectWindow[1].Name=Region2
table.MotionDetect[0].MotionDetectWindow[1].Region[0]=0
table.MotionDetect[0].MotionDetectWindow[1].Region[1]=0
table.MotionDetect[0].MotionDetectWindow[1].Region[2]=0
table.MotionDetect[0].MotionDetectWindow[1].Region[3]=0
...
Das Fenster wird wohl mit den Werten:
Code:
table.MotionDetect[0].MotionDetectWindow[0].Window[x]
definiert.

Du könntest auch mit dem Dahua ConfigTool (nicht VDPconfig) versuchen, sowas einzurichten.
 
Zuletzt bearbeitet:
Danke für die Infos. Werde das bei Gelegenheit mal testen.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.