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

DirkMa

Neuer User
Mitglied seit
4 Apr 2016
Beiträge
182
Punkte für Reaktionen
24
Punkte
18
Hi,

habe mir jetzt eine VTO4202F-P mit Zubehör ohne Monitor bestellt, da diese ja anscheinend auch ohne Monitor funktioniert. Ich habe jetzt auch mitbekommen, dass man meine Wünsche voraussichtlich auch mit einem Script erfüllen kann. Wenn ich das richtig verstanden habe muss dieses Script dann auf z.B. einer raspberry pi laufen. Ich denke ich bin nicht ganz unbegabt, aber damit habe ich noch nicht gearbeitet. Funktionieren solche Scripte evtl. auch auf einer Synology NAS mit DSM6? Wenn ja, kann mir da einer evtl. einen Anstoß geben, wie man da beginnt?

Danke

Dirk
 
Installier dir mal PHP7.3 auf der Syno, passe das Script an deine Gegebenheiten (IP,...) an, kopiere es auf die NAS und starte es mit php scriptname.php auf der CLI (su).
Was passiert?
 
Hi,

vielen Dank. Wenn meine Gerätschaften da sind werde ich es testen und dann auch berichten.

Dirk
 
Hi,

kleiner Zwischenstand. Script wird beim Hochfahren der Synology NAS gestartet und die Ausgabe in einer LOG-Datei (eine pro Tag) gesichert. Ebenso habe ich dafür gesorgt, dass LOG-Dateien älter 31 Tage gelöscht werden. Da ich noch keine Hardware habe, steht hier natürlich nur "Socket open failed".
Zu dem Script (Script) habe ich jetzt noch drei Fragen:
1. Wenn ich das richtig verstehe, ist es erst einmal dazu da, Aktionen zu erfassen. Ist das richtig so?
2. Am Ende wird, wenn eine Bewegung erkannt wurde, ein Snapshot gesichert. Aber wohin?
3. Gibt es noch eine Erweiterung für dieses Script um einen Snapshot beim klingeln als Email zu versenden und auf meiner NAS zu sichern oder kann man das in der VTO einstellen?

MfG

Dirk
 
Zuletzt bearbeitet:
1.) Ja. Jegliches Event wird "erkannt" und man kann recht einfach eine Aktion dafür einbauen
2.) Kannst du anpassen:
Code:
 function SaveSnapshot($path="/tmp/")
3.) Das ist ein einfaches PHP Script. Wenn du emails willst, such dir die notwendige Funktion und bau sie in das Script ein.
 
  • Like
Reaktionen: DirkMa
zu 2. Also wenn ich mir immer bei "VideoMotion" einen Snapshot speichern und als email zusenden lassen würde, dann hätte ich viel zu lesen :).
Ich lasse mir lediglich beim Klingeln und bei Nutzung des Fingerprint einen Snapshot erstellen bzw. lass mir den als eMail senden. Für den eMail-Vesand nutze ich jedoch python - geht natürlich auch mit php, aber ich war zu faul, das zu "testen"
 
Hi,

also auch ich möchte natürlich nur eine Email mit Snapshot beim Klingeln. Kenne mich mit python (Software und Hardware) allerdings gar nicht aus. Ich warte jetzt mal bis ich die Hardware habe und schaue mir mein log-File an. Anschließend versuche ich das php-Script anzupassen. Ich denke der eine oder andere hat das php-Script schon angepasst und kann mir dann helfen.

MfG

Dirk
 
Ich habe mir das mit python auch "zusammengesucht" - kann es selber auch nicht programmieren :)
Wenn ich mal Zeit und Musse habe, werde ich auch das php mal versuchen - kann ja nicht so schwer sein.

Im Moment läuft mein Script immer noch auf einem TC mit debian - den möchte ich aber ablösen durch einen raspi oder ich lege es direkt auf mein Datenbgrab (Windows)
 
Ich mache das so ähnlich wie @kuzco-ip : Bei Anläuten + FingerPrint wird ein Snapshot erstellt und mir dann als Push auf meine Signal-App gesandt - mit Info's wie Name und Finger der Person des Fingerprints.
Für die Signal Sache nehme ich AsamK/signal-cli
 
  • Like
Reaktionen: kuzco-ip
Hi,

ich schau mir das ganze mal an. Grundsätzlich denke ich, dass ich meine gewünschten Funktionen schon irgendwie hinbekomme (Email mit Snapshot senden, Snapshot und Videosequenz auf NAS speichern) :).
@riogrande75: Siehst Du über diese App dann auch die Person (live-Bild) die klingelt und kannst mit dieser sprechen?

MfG

Dirk
 
Natürlich nicht, dafür brauchst du die gDMSS App. Ich brauche das aber auch gar nicht. Info reicht mir.
 
  • Like
Reaktionen: kuzco-ip und DirkMa
Hi,

da bin ich wieder. Hardware ist angekommen. Zwei Probleme habe ich:
1. In meiner LOG-Datei steht folgendes:
Code:
<** Dahua VTO Eventempfaenger START **>
2021-02-09 18:26:53.000000: Start login
2021-02-09 18:26:53.000000: Login success
2021-02-09 18:26:53.000000: Started keepAlive thread
2021-02-09 18:26:53.000000: keepAlive back
2021-02-09 18:26:54.000000: Event Manager subscription reply
2021-02-09 18:26:54.000000: Event VideoMotion
2021-02-09 18:27:03.000000: Event VideoMotion
2021-02-09 18:27:06.000000: Event SIPRegisterResult, Success
2021-02-09 18:27:07.000000: Event SIPRegisterResult, Success
2021-02-09 18:27:14.000000: Event: CallSnap, DeviceType  RemoteID , RemoteIP  CallStatus
2021-02-09 18:27:14.000000: Event Call from VTO
2021-02-09 18:27:14.000000: Event: Invite,  Action Pulse, CallID 4 Lock Number 2
2021-02-09 18:27:14.000000: Event BackKeyLight with State 1
2021-02-09 18:27:14.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(4) {
        ["Action"]=>
        string(5) "Pulse"
        ["Code"]=>
        string(7) "NewFile"
        ["Data"]=>
        array(5) {
          ["File"]=>
          string(57) "/mnt/mtd/Snap/2021-02-09/17/27/14[1612891634][0@0][0].jpg"
          ["Filter"]=>
          string(14) "/mnt/mtd/Snap/"
          ["LocaleTime"]=>
          string(19) "2021-02-09 17:27:14"
          ["Size"]=>
          int(50525)
          ["UTC"]=>
          float(1612891634)
        }
        ["Index"]=>
        int(328)
      }
    }
  }
  ["session"]=>
  int(1850009435)
}
2021-02-09 18:27:14.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(4) {
        ["Action"]=>
        string(5) "Pulse"
        ["Code"]=>
        string(10) "UpdateFile"
        ["Data"]=>
        array(2) {
          ["LocaleTime"]=>
          string(19) "2021-02-09 17:27:14"
          ["UTC"]=>
          float(1612891634)
        }
        ["Index"]=>
        int(0)
      }
    }
  }
  ["session"]=>
  int(1850009435)
}
2021-02-09 18:27:25.000000: Event VideoMotion
2021-02-09 18:27:28.000000: Event VideoMotion

2. Möchte die VTO an meine Fritz!Box anmelden, damit es beim klingeln an meinem Fritz!Fon schellt. Das funktioniert leider nicht. Ich werde das an einer anderen stelle noch näher erläutern, da anderes Thema

Wo liegt bei Punkt 1 das Problem? Ich habe mal, falls wichtig, meine zur Zeit verwendete Firmware mit angehangen.

1612891934928.png
[Edit Novize: Riesenbilder gemäß der Forumsregeln auf Vorschau verkleinert]

MfG

Dirk
 
Zuletzt bearbeitet von einem Moderator:
Zu 1.: Es kann halt vorkommen, dass noch nicht alle Events im Script abgefangen werden. @riogrande75 wird den sicherlich bei Gelegenheit einpflegen.
 
Hab die beiden Events auf die Schnelle mal eingebaut ins Script - bitte testen.
 
Hi,

habe ich gerade getestet. Es taucht kein Fehler mehr auf. Allerdings habe ich das Gefühl es liegt eher daran, dass ich ein Update gefahren habe.
Es taucht im LOG weder "newfile" noch "updatefile" auf.

Danke für die schnelle Hilfe.

MfG

Dirk
 
Soweit ich das verstehe, sollten die Events / Meldungen genau dann kommen, wenn ein Snapshot gemacht wurde.
 
Hi,

das war auch so. Da ich aber im Moment noch das Problem habe, dass ich die VTO nicht an meine Fritz!box so angebunden bekomme, dass die Telefone klingeln versuche ich einiges. Deshalb kann es sein, das diese Meldungen mit meiner jetzigen Konfiguration nicht kommen. Jetzt kommt zur Zeit z.B. das
2021-02-10 17:07:21.000000: Event SIPRegisterResult, Failed)
2021-02-10 17:07:26.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(4) {
["Action"]=>
string(5) "Start"
["Code"]=>
string(6) "Reboot"
["Data"]=>
array(2) {
["LocaleTime"]=>
string(19) "2021-02-10 16:07:26"
["UTC"]=>
float(1612973246)
}
["Index"]=>
int(0)
}
}
}
["session"]=>
int(962636433)
}
2021-02-10 17:08:52.000000: keepAlive failed
2021-02-10 17:08:52.000000: Failure no keep alive received
2021-02-10 17:09:52.000000: Start login

MfG

Dirk
 
Tja, da scheinst du einen Reboot ausgelöst zu haben. Werde ich auch noch ins Script einbauen.
Mit jeder neuen FW Version kommen da offenbar neue Events dazu...
 
Hi,

das kann sein :) . Dachte ich mir fast. Da ich ja immer noch mit meiner Fritz!box dran bin, muss öfter ein Reboot her.
Noch ein Event:
2021-02-10 21:06:53.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(4) {
["Action"]=>
string(5) "Pulse"
["Code"]=>
string(16) "SecurityImExport"
["Data"]=>
array(3) {
["LocaleTime"]=>
string(19) "2021-02-10 20:06:53"
["Status"]=>
string(20) "PrepareExportSuccess"
["UTC"]=>
float(1612987613)
}
["Index"]=>
int(-1)
}
}
}
["session"]=>
int(1570008076)
}

Ohne Gewähr in Zeile 375 in Script einfügen:
elseif($eventCode == 'Reboot'){
logging("Event: Reboot, Action ".$eventList['Action'].", LocaleTime ".$eventData['LocaleTime']);
}
elseif($eventCode == 'SecurityImExport'){
logging("Event: SecurityImExport, Action ".$eventList['Action'].", LocaleTime ".$eventData['LocaleTime'].", Status ".$eventData['Status']);
}
Ich hoffe, es ist ok. Wenn nicht bitte Bescheid geben, dann lösche ich den Code wieder.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: riogrande75
Hab auch diese beiden Events noch ins Script eingebaut.
 
  • Like
Reaktionen: DirkMa
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.