Wie z.B. Scripte für eine VTO4202F-P (Dahua) verarbeiten

kuzco-ip

Mitglied
Mitglied seit
4 Feb 2019
Beiträge
639
Punkte für Reaktionen
49
Punkte
28
Bzgl. des neuen php-Scripts, welches mir die Snapshots schickt - ja, das läuft nun tadellos.

Ich speichere alle meine Snapshots direkt auf dem Linux-Server auf dem das Script läuft.
Ein löschen mache ich manuell, wenn der Speicher mal volllaufen würde.

Im dem Script wird Du wohl auch kaum fümdig werden, da es ja auf Events reagiert.

Nimm doch einfach ein Script und lass es über cron irgendwann laufen.
 

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Hi,

ja, dass löschen kann ich natürlich auch über die NAS machen. Ich habe nur gerne alle Sachen zentral, damit ich den Überblick behalte:).
 

kuzco-ip

Mitglied
Mitglied seit
4 Feb 2019
Beiträge
639
Punkte für Reaktionen
49
Punkte
28
Wo läuft denn das Script bei Dir ?
 

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Das Script läuft auf einer Synology NAS. Das Löschen der älteren Snapshots/Streams läuft über eine Aufgabe die einmal täglich ausgeführt wird.
 

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Hi,

habe mal wieder ein paar unbekannte Events gefunden. Da ich bei den letzten Events immer mal wieder einen Fehler hatte, gebe ich diesmal nur die
2021-03-15 13:27:22.000000: Unknown event received
array(4) {
["id"]=>
int(707)
["method"]=>
string(24) "client.notifyEventStream"
["params"]=>
array(2) {
["SID"]=>
int(513)
["eventList"]=>
array(1) {
[0]=>
array(4) {
["Action"]=>
string(5) "Start"
["Code"]=>
string(8) "SendCard"
["Data"]=>
array(2) {
["LocaleTime"]=>
string(19) "2021-03-15 13:27:22"
["UTC"]=>
float(1615811242)
}
["Index"]=>
int(0)
}
}
}
["session"]=>
int(1960632532)
}
2021-03-15 13:27:23.000000: keepAlive back
2021-03-15 13:27:27.000000: Event VideoMotion
2021-03-15 13:27:28.000000: DoorCard ABCDEFG was used at door
2021-03-15 13:27:29.000000: Event VideoMotion
2021-03-15 13:27:33.000000: Unknown event received
array(4) {
["id"]=>
int(707)
["method"]=>
string(24) "client.notifyEventStream"
["params"]=>
array(2) {
["SID"]=>
int(513)
["eventList"]=>
array(1) {
[0]=>
array(4) {
["Action"]=>
string(5) "Start"
["Code"]=>
string(7) "AddCard"
["Data"]=>
array(5) {
["Data"]=>
array(1) {
[0]=>
array(6) {
["CardNo"]=>
string(8) "ABCDEFG"
["CardStatus"]=>
int(0)
["CardType"]=>
int(0)
["Doors"]=>
array(2) {
[0]=>
int(0)
[1]=>
int(1)
}
["UserID"]=>
string(4) "9999"
["UserName"]=>
string(0) "Test"
}
}
["LocaleTime"]=>
string(19) "2021-03-15 13:27:33"
["Name"]=>
string(4) "Card"
["Number"]=>
int(1)
["UTC"]=>
float(1615811253)
}
["Index"]=>
int(0)
}
}
}
["session"]=>
int(1960632532)
}
2021-03-15 13:27:34.000000: Unknown event received
array(4) {
["id"]=>
int(707)
["method"]=>
string(24) "client.notifyEventStream"
["params"]=>
array(2) {
["SID"]=>
int(513)
["eventList"]=>
array(1) {
[0]=>
array(4) {
["Action"]=>
string(4) "Stop"
["Code"]=>
string(8) "SendCard"
["Data"]=>
array(2) {
["LocaleTime"]=>
string(19) "2021-03-15 13:27:34"
["UTC"]=>
float(1615811254)
}
["Index"]=>
int(0)
}
}
}
["session"]=>
int(1960632532)
}
2021-03-15 13:21:10.000000: Unknown event received
array(4) {
["id"]=>
int(707)
["method"]=>
string(24) "client.notifyEventStream"
["params"]=>
array(2) {
["SID"]=>
int(513)
["eventList"]=>
array(1) {
[0]=>
array(4) {
["Action"]=>
string(5) "Pulse"
["Code"]=>
string(10) "DoorStatus"
["Data"]=>
array(3) {
["LocaleTime"]=>
string(19) "2021-03-15 13:21:10"
["Status"]=>
string(4) "Open"
["UTC"]=>
float(1615810870)
}
["Index"]=>
int(0)
}
}
}
["session"]=>
int(1960632532)
}
2021-03-15 13:21:40.000000: Unknown event received
array(4) {
["id"]=>
int(707)
["method"]=>
string(24) "client.notifyEventStream"
["params"]=>
array(2) {
["SID"]=>
int(513)
["eventList"]=>
array(1) {
[0]=>
array(4) {
["Action"]=>
string(5) "Pulse"
["Code"]=>
string(11) "DoorControl"
["Data"]=>
array(2) {
["LocaleTime"]=>
string(19) "2021-03-15 13:21:40"
["UTC"]=>
float(1615810900)
}
["Index"]=>
int(0)
}
}
}
["session"]=>
int(1960632532)
}
2021-03-15 13:21:40.000000: Unknown event received
array(4) {
["id"]=>
int(707)
["method"]=>
string(24) "client.notifyEventStream"
["params"]=>
array(2) {
["SID"]=>
int(513)
["eventList"]=>
array(1) {
[0]=>
array(4) {
["Action"]=>
string(5) "Start"
["Code"]=>
string(13) "DoorNotClosed"
["Data"]=>
array(3) {
["LocaleTime"]=>
string(19) "2021-03-15 13:21:40"
["Name"]=>
string(4) "Door"
["UTC"]=>
float(1615810900)
}
["Index"]=>
int(0)
}
}
}
["session"]=>
int(1960632532)
}
bekannt. Sind alle im Zusammenhang mit dem Card-Reader gekommen.

Dirk
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,167
Punkte für Reaktionen
206
Punkte
63
Danke Dirk - hab die mal eingebaut. Bitte testen ob so OK.
 

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Nichts zu danken. Da muss eher ich danken. Werde es testen und mich wieder melden.

Also "SendCard" Start und Stop funktionieren.

AddCard nicht so richtig:
2021-03-18 05:38:02.000000: Event: AddCard, Action Start: CardNo, UserID , UserName , CardStatus , Doors

Ich denke, es liegt an dem doppelten "data".

["eventList"]=>
array(1) {
[0]=>
array(4) {
["Action"]=>
string(5) "Start"
["Code"]=>
string(7) "AddCard"
["Data"]=>
array(5) {
["Data"]=>
array(1) {
[0]=>
array(6) {
["CardNo"]=>
string(8) "ABCDEFG"
["CardStatus"]=>
int(0)
["CardType"]=>
int(0)
["Doors"]=>
array(2) {
[0]=>
int(0)
[1]=>
int(1)
}
["UserID"]=>
string(4) "9999"
["UserName"]=>
string(0) "Test"
}
}

So funktioniert es. Ob man das eleganter/besser machen kann, weis ich nicht (-:

2021-03-18 11:30:54.000000: Event: AddCard, Action Start: CardNo ABCDE, UserID 9999, UserName Testb, CardStatus 0, CardType 0, Doors 0,1

elseif($eventCode == 'AddCard'){
logging("Event: AddCard, Action ".$eventList['Action'].": CardNo ".$eventData['Data'][0]['CardNo'].", UserID ".$eventData['Data'][0]['UserID'].", UserName ".$eventData['Data'][0]['UserName'].", CardStatus ".$eventData['Data'][0]['CardStatus'].", CardType ".$eventData['Data'][0]['CardType'].", Doors ".$eventData['Data'][0]['Doors'][0].",".$eventData['Data'][0]['Doors'][1]);
}

Die anderen Meldungen habe ich nicht mehr hinbekommen. Werde ich weiter beobachten.
 
Zuletzt bearbeitet:

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,167
Punkte für Reaktionen
206
Punkte
63
Hab ich so eingebaut.
 
  • Like
Reaktionen: DirkMa

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Hi,

@riogrande75
Ich möchte mich noch einmal vielmals bei Dir für Dein Script bedanken. Nachdem ich jetzt auch die Fritzbox als SIP-Server einrichten konnte, konnte ich mit Hilfe des Script alles so einrichten wie ich es wollte. Jetzt bin ich zufrieden. Ich hoffe, dass dies so bleibt.

MfG

Dirk
 

Chrisinho

Neuer User
Mitglied seit
9 Mrz 2021
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Vollzitat von darüber gemäß Boardregeln entfernt by stoney
Hi, ich habe ein ähnliches Problem mit der Einrichtung der Fritzbox als SIP-Server. Kannst du mir sagen, wie du es letztendlich hinbekommen bzw. was du eingestellt hast?

Danke

Chrisinho
 
Zuletzt bearbeitet von einem Moderator:

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Hallo Chrisinho,

schau mal hier:
Fritzbox als SIP-Server

und hier:
php-Script

und hier:
Github

Falls Du noch weitere Fragen hast, helfe ich gerne. Habe gesehen, dass Du auch VTHs in Betrieb nehmen möchtest.
Wenn mich nicht alles täuscht, scheint das nur zu funktionieren, wenn die VTO SIP-Sever ist. Ich habe zwar ne VTH hier rumliegen, habe Sie aber nicht in Betrieb.

MfG

Dirk
 
  • Like
Reaktionen: riogrande75

Washu

Neuer User
Mitglied seit
5 Mai 2021
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
Hallo,

auch ich möchte mich zuerst einmal für die DahuaPHPScripts bedanken. Genial! :)
Ich möchte noch schnell einen "Unknown event" melden und möchte -sorry, weil eigentlich offtopic, aber immerhin mit Bezug zum letzten Post- kurz anfügen, dass ich so weit bin, wie scheinbar viele hier:

  • VTO4202F mit V4.5 funktioniert super auf Fritzbox (hier: 7590 V7.27 mit FritzFon).
  • Asterisk auf einem RasPi dazwischen schalten: immer noch alles prima.
  • VTH2421FW-P (ebenfalls mit Firmware-Upgrade auf V4.5) in Asterisk anmelden: Kein Video beim Klingeln/Invite. Beim Gespräch nur Audio.
  • Mit dem SIP-Server auf VTO funktioniert die VTH natürlich einwandfrei.
    (Im Wireshark sieht die Kommunikation zwischen VTO und VTH so simpel aus. Warum geht das nicht mit Asterisk? Gib es da irgendeinen fiesen Trick in der Dahua-Firmware, wie z.B. "Video wird nur aktiviert, wenn Registrar = VDP ist" oder "SIP-Server-IP == VTO-IP, sonst kein Video", o.ä.? Ich verzweifele hier etwas.)
  • Bleibt eigentlich nur, den SIP-Server auf VTO zu nutzen, damit VTH funktioniert und dann VTO als Provider in der Fritzbox zu hinterlegen
    Dann fehlt nur das Bild auf dem FritzFon ... was natürlich das i-Tüpfelchen wäre, wenn das auch noch ginge.
  • Eine Alternative wäre, die VTH an der Fritzbox anzumelden. Dann gäbe es vielleicht wenigstens Video bis zum Abheben. Würde mir reichen.
    Scheinbar kann die VTH aber nur 6-stellige Passwörter. Das ist der Fritzbox zu wenig. Ob man das via Debug-Console erzwingen kann (und wie), ist mir bisher noch völlig unklar.
    Ohnehin würde die VTH an der Fritzbox nur eingeschänkt nutzbar sein, weil, wenn ich das richtig interpretiere, die Firmware das Wählen von internen Rufnummern, wie **621 verweigert.
(Oh, jetzt ist der OffTopic-Part aber ganz schön lang geworden - nochmal sorry. Hätte ich eine Frage, hätte ich auch ein neues Thema aufgemacht.)


Code:
2021-05-23 19:14:27.250504: Unknown event received
array(4) {
  ["id"]=>
  int(4523)
  ["method"]=>
  string(24) "client.notifyEventStream"
  ["params"]=>
  array(2) {
    ["SID"]=>
    int(513)
    ["eventList"]=>
    array(1) {
      [0]=>
      array(4) {
        ["Action"]=>
        string(5) "Pulse"
        ["Code"]=>
        string(13) "NetworkChange"
        ["Data"]=>
        array(2) {
          ["LocaleTime"]=>
          string(19) "2021-05-23 19:14:27"
          ["UTC"]=>
          float(1621793667)
        }
        ["Index"]=>
        int(0)
      }
    }
  }
  ["session"]=>
  int(482203016)
}

Viele Grüße
Washu
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,167
Punkte für Reaktionen
206
Punkte
63
Bei mir funktioniert VTO+VTH mit Video am @sterisk seit Jahren toll. Mach mal einen neuen Fred auf, dann kann man sich die Sache ja ansehen. Config (sip.conf / extenstions.conf) und Wireshark Trace dabei wären SEHR hilfreich.
Den Event werde ich bei Gelegenheit einbauen.
 

tomi6

Neuer User
Mitglied seit
25 Mrz 2020
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hallo, mir gefällt die Möglichkeit eine separate Klingel über den Türöffner Kontakt anzusteuern.
Lässt sich das nur mittelst Script lösen oder gibt es auch andere Möglichkeiten?
Würde das Script auch auf einem Qnap laufen? Mir ist leider nicht ganz klar wie das funktioniert.
Danke
Tomi
 

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Hallo Tomi,

wenn Du den Türöffner Kontakt beim Klingeln betätigen möchtest, geht das wohl nur über das Script.
Wenn Du auf Deiner Qnap PHP5 laufen lassen kannst, geht das auch da. Sonst gibt es ja auch noch alternativen wie z.B. Raspberrypi, eine gebrauchte Synology oder ähnliches.
Das Script "meldet" sich bei der VTO an und lauscht auf deren Datenverkehr. Das Klingeln löst ein Ereignis aus, welches man abfragen kann.
Mit diesem Ereignis löst man ein weiteres Ereignis aus, welches den Türöffner Kontakt schaltet.

Das sollte erst einmal reichen (-:

Dirk
 

tomi6

Neuer User
Mitglied seit
25 Mrz 2020
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Danke Dirk für deine Info. Ich habe versucht das Script auf meinem Qnap zu starten. Erhalte aber nur einen Syntax error.
Auf dem Qnap ist auch nicht PHP5 sondern 7.3.7 installiert. Kann es auch daran liegen?
Danke
Tomi
 

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Hallo Tomi,
das kann ich Dir leider nicht sagen. Kannst Du evtl. PHP5 zusätzlich installieren? Was für eine Fehlermeldung bekommst Du denn genau?

Dirk
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,167
Punkte für Reaktionen
206
Punkte
63
m.M.n. sollte das Script ohne Probleme auch mit PHP7 laufen - auf meinem Debian Server mit PHP7.3 tut's auf jeden Fall.
Poste mal die Fehlermeldungen, je nach Architektur (x86/ARM) gibt's da kleine Anpassungen zu machen soweit ich mich erinnere.
 

tomi6

Neuer User
Mitglied seit
25 Mrz 2020
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Komisch. obwohl mit ls die Dateien angezeigt werden, lässt sich VTO.php nicht korrekt ausführen ...

Code:
-sh: [/share/Web]: # ls
[/share/Web] # php5AHxBT*  phpinfo.php*  phpO24uRJ*  @Recycle/  VTO4202_Event.php*  VTO.php*
[/share/Web] # [/share/Web] # ./VTO.php
-sh: [/share/Web]: No such file or directory
[/share/Web] # : No such file or directory
[/share/Web] # ./VTO.php: line 2: =: command not found
-sh: ./VTO.php:: No such file or directory
[/share/Web] # : command not found
[/share/Web] # <** Dahua VTO Eventempfaenger START **>\n
-sh: **: ambiguous redirect
[/share/Web] # : command not found
[/share/Web] # ./VTO.php: line 4: syntax error near unexpected token `('
> '/VTO.php: line 4: `$Dahua = new Dahua_Functions("192.168.178.111", "admin", "Passwort"); # VTO's IP and user/pwd
-sh: syntax error near unexpected token `('
[/share/Web] # [/share/Web] #
-sh: [/share/Web]: No such file or directory
[/share/Web] #

[CODE] TAG [/CODE] gesetzt by stoney
 
Zuletzt bearbeitet von einem Moderator:

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
94
Punkte für Reaktionen
14
Punkte
8
Hi,

wie rufst Du das Skript auf? "vto.php" oder "php vto.php"

Das Du kleine Anpassungen machen musst ist Dir klar?

$Dahua = new Dahua_Functions("192.168.178.111", "admin", "Passwort"); # VTO's IP and user/pwd

Dirk
 

Erhalten Sie 3CX für 1 Jahr kostenlos!

Gehostet, in Ihrer privaten Cloud oder on-Premise! Ganz ohne Haken. Geben Sie Ihren Namen und Ihre E-Mail an und los geht´s:

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.
oder via