[Info] VTO Event Empfänger

kuzco-ip

Mitglied
Mitglied seit
4 Feb 2019
Beiträge
592
Punkte für Reaktionen
42
Punkte
28
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:

livebild

Neuer User
Mitglied seit
22 Aug 2020
Beiträge
56
Punkte für Reaktionen
8
Punkte
8
Ich glaube, am Ende fehlt ein "}"?

Ich habe versucht, es zu benutzen, und ich habe es bekommen:
Code:
[email protected]:~/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
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,094
Punkte für Reaktionen
191
Punkte
63
Hast du am Code etwas geändert?
 

livebild

Neuer User
Mitglied seit
22 Aug 2020
Beiträge
56
Punkte für Reaktionen
8
Punkte
8
Ich habe nur ein "}" am Ende hinzugefügt, weil ich glaube, dass es fehlt:
 

Masl

Neuer User
Mitglied seit
8 Jan 2020
Beiträge
12
Punkte für Reaktionen
1
Punkte
3
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...
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,094
Punkte für Reaktionen
191
Punkte
63
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

Swenhs

Neuer User
Mitglied seit
1 Sep 2020
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
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?
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,094
Punkte für Reaktionen
191
Punkte
63
Zuletzt bearbeitet:

Masl

Neuer User
Mitglied seit
8 Jan 2020
Beiträge
12
Punkte für Reaktionen
1
Punkte
3
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

rettroo

Neuer User
Mitglied seit
1 Jan 2021
Beiträge
9
Punkte für Reaktionen
3
Punkte
3
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)
}
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,094
Punkte für Reaktionen
191
Punkte
63
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:

rettroo

Neuer User
Mitglied seit
1 Jan 2021
Beiträge
9
Punkte für Reaktionen
3
Punkte
3
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:

kuzco-ip

Mitglied
Mitglied seit
4 Feb 2019
Beiträge
592
Punkte für Reaktionen
42
Punkte
28
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 ?
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,094
Punkte für Reaktionen
191
Punkte
63
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
 

kuzco-ip

Mitglied
Mitglied seit
4 Feb 2019
Beiträge
592
Punkte für Reaktionen
42
Punkte
28
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.
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,094
Punkte für Reaktionen
191
Punkte
63
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.
 

kuzco-ip

Mitglied
Mitglied seit
4 Feb 2019
Beiträge
592
Punkte für Reaktionen
42
Punkte
28
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.
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,094
Punkte für Reaktionen
191
Punkte
63
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:

kuzco-ip

Mitglied
Mitglied seit
4 Feb 2019
Beiträge
592
Punkte für Reaktionen
42
Punkte
28
Danke für die Infos. Werde das bei Gelegenheit mal testen.