Dahua VTO2000a - Ein Linux Programm welches bei Gong informiert

denim

Neuer User
Mitglied seit
4 Dez 2005
Beiträge
56
Punkte für Reaktionen
0
Punkte
6
könntest du vielleicht mal ein telnet auf port 6789 deiner VTO machen, und dann schauen, ob etwas passiert, wenn du den FP nutzt? hoffe, der ist bei dir auf. über den Port kann man sehr viele Debug Nachrichten sehen und so manchen Dinge anstellen. Login: die user die man auf der VTO eingerichtet hat. :).

zu mcl: du kannst auch das programm so starten, dass du ein eigenes script ausführt, und wenn du ein drittes argument, z.b. "./mcl 192.168.1.10 /home/user/meinscript.sh 123" eingibt, wird das Debugging eingeschaltet, also alle multicast pakete werden ausgegeben.

hier mal ein paar Befehle die man absetzen könnte. Z.b.
kann man mit "call" die VTH anrufen und mit "cc" den request cancellen.

Code:
-------------------------------------------------------------------
FBCtrl      FaceBoard(M60) Control
acinfo      list allocator  info.
al          alarm test.al -n,n for alarm channel.
bitrate     Bit Rate & Frame Info Statistics.
call        vto call vth.
callloop    calllooptest.
caps        get the encode caps

capsManager   Dahua capability application protocol server.
card        send card.
cc          vto cancel call to vth.
checkPage   check page memory
cmos        CMOS info!
detect      Get Current Motion Detect State
event       Input 'event' show details!
exit        Exit the system!
format      Set encode format, -h for help
fstat       Dump frame stat.
gs          get state.
gts         print global timer statu.
hc          vto cancel call to vth.
help        Dump this help message!
ipAuto      ip auto allocate
language    crypt language info!
lc          call for timer.
lct         control backlight.
lctest      lift control test.
log         Show log information!
lvmsg       vto leave msg to vth.
make        make vedio
mc          multicall
memory      Dump the memory infomation!
net         net -h dump netapp help
o           open page.
p2p         ip auto allocate
packet      Dump packet infomation or packet!
page        test page.
pi          publish info test.
play        play vedio
playa       vto play.
print       Set Print Level!
pt          print config:pt filename
ptd         print default config:ptd filename
qcard       query card.
qcardr      query card record.
quit        Logout myself!
rc          get remote config.
reboot      Reboot the system!
res         Dump the CPU usage!
restart     Restart the application!
rtsp        rtsp operate!
rulemanager   get rule manager config
send        send info test.
setpwd      set Custom Pwd.
settype     settype.
shell       Entering system shell!
shutdown    Shutdown the system!
stop        stop play or make vedio
talkv       Set talkback Volume, -h for help
thread      Dump all thread!
time        Time operating!
timer       Dump all timer!
unlock      vto unlock.
user        Show user information!
ver         show version.
videotest   Test Video In parameters:
 f: flip
 m: mirror

vtoinfo     list all vto user info.
watchdog    set reset WatchDog Time!
wifi        wifi help
-------------------------------------------------------------------
To see details, please use `cmd -h`.
 

kuzco-ip

Neuer User
Mitglied seit
4 Feb 2019
Beiträge
109
Punkte für Reaktionen
3
Punkte
18
@riogrande75: Ok. Und schon wieder was gelernt.
Habe jetzt einen der 2 VTH die ich habe direkt an den Hub gehängt und nun sehe ich auch viel mehr Traffic. Aber für mich zuviel Traffic, als das ich alles verstehen würde. Ich finde auch einen TCP-Call der VTH zur VTO (auf Port 5000), aber das Script meldet nichts.
Was bedeutet denn das $peername in "while ($conn = stream_socket_accept($socket, -1, $peername))" ? Diese Variable ist nirgends definiert.

@denim: Telnet auf 6789 ist leider geschlossen.
Habe das door_bell.sh mal mit dem Parameter 123 gestartet, aber bei der Öffnung per FP wir mir da dann auch nichts angeziegt.
Bin kein Programmierer und das ist mir im Moment noch alles etwas zu "hoch" :).

Werde nach Ostern nochmals testen. Vorab schon einmal vielen Dank.
Ein Script, welches sowohl den Gong und FP überwacht wäre der Idealfall.
 
Zuletzt bearbeitet:

denim

Neuer User
Mitglied seit
4 Dez 2005
Beiträge
56
Punkte für Reaktionen
0
Punkte
6
@denim: Telnet auf 6789 ist leider geschlossen.
ich habe bei mir noch die FW V3.1. scheint so, als wären nachfolgende FW's mit diesem Debug Port geschlossen. Gibt aber bestimmt wieder einen Switch womit man den öffnen könnte. Zur Not kann man mit Sicherheit über den Port alles mitsniffen und auswerten...
 

tobit6795

Neuer User
Mitglied seit
20 Dez 2018
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
könntest du vielleicht mal ein telnet auf port 6789 deiner VTO machen, und dann schauen, ob etwas passiert, wenn du den FP nutzt? hoffe, der ist bei dir auf. über den Port kann man sehr viele Debug Nachrichten sehen und so manchen Dinge anstellen. Login: die user die man auf der VTO eingerichtet hat. :).

zu mcl: du kannst auch das programm so starten, dass du ein eigenes script ausführt, und wenn du ein drittes argument, z.b. "./mcl 192.168.1.10 /home/user/meinscript.sh 123" eingibt, wird das Debugging eingeschaltet, also alle multicast pakete werden ausgegeben.

hier mal ein paar Befehle die man absetzen könnte. Z.b.
kann man mit "call" die VTH anrufen und mit "cc" den request cancellen.

Code:
-------------------------------------------------------------------
FBCtrl      FaceBoard(M60) Control
acinfo      list allocator  info.
al          alarm test.al -n,n for alarm channel.
bitrate     Bit Rate & Frame Info Statistics.
call        vto call vth.
callloop    calllooptest.
caps        get the encode caps

capsManager   Dahua capability application protocol server.
card        send card.
cc          vto cancel call to vth.
checkPage   check page memory
cmos        CMOS info!
detect      Get Current Motion Detect State
event       Input 'event' show details!
exit        Exit the system!
format      Set encode format, -h for help
fstat       Dump frame stat.
gs          get state.
gts         print global timer statu.
hc          vto cancel call to vth.
help        Dump this help message!
ipAuto      ip auto allocate
language    crypt language info!
lc          call for timer.
lct         control backlight.
lctest      lift control test.
log         Show log information!
lvmsg       vto leave msg to vth.
make        make vedio
mc          multicall
memory      Dump the memory infomation!
net         net -h dump netapp help
o           open page.
p2p         ip auto allocate
packet      Dump packet infomation or packet!
page        test page.
pi          publish info test.
play        play vedio
playa       vto play.
print       Set Print Level!
pt          print config:pt filename
ptd         print default config:ptd filename
qcard       query card.
qcardr      query card record.
quit        Logout myself!
rc          get remote config.
reboot      Reboot the system!
res         Dump the CPU usage!
restart     Restart the application!
rtsp        rtsp operate!
rulemanager   get rule manager config
send        send info test.
setpwd      set Custom Pwd.
settype     settype.
shell       Entering system shell!
shutdown    Shutdown the system!
stop        stop play or make vedio
talkv       Set talkback Volume, -h for help
thread      Dump all thread!
time        Time operating!
timer       Dump all timer!
unlock      vto unlock.
user        Show user information!
ver         show version.
videotest   Test Video In parameters:
f: flip
m: mirror

vtoinfo     list all vto user info.
watchdog    set reset WatchDog Time!
wifi        wifi help
-------------------------------------------------------------------
To see details, please use `cmd -h`.
Hi sind das parameter des skriptes das @riogrande verlinkt hat oder was genau ist das?

Edit: Nächste frage, das C-programm mcl, ist das nicht ein einfach multicast reveiver? versteh ich das richtig??? hab jedenfalls mal einen in python aus offiziellen referenzen genommen der auch empfangen kann, nur kommt nix beim gong an -___- multicast ip und port habe ich natürlich angepasst
 

denim

Neuer User
Mitglied seit
4 Dez 2005
Beiträge
56
Punkte für Reaktionen
0
Punkte
6
Hi sind das parameter des skriptes das @riogrande verlinkt hat oder was genau ist das?
nicht vom Script, aber Parameter von dem mcl Programm.

ist das nicht ein einfach multicast reveiver
ja, ganz genau. mehr tut es auch nicht. wenn 16 Pakete ankommen, dann hat es geklingelt. ;-)


nur kommt nix beim gong an -___- multicast ip und port
da würde ich die Parameter vom mcl Programm nochmal anschauen. Sollte mit Phyton genauso funktionieren
 

tobit6795

Neuer User
Mitglied seit
20 Dez 2018
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
vielleicht hab ich mich nicht richtig ausgedrückt, ich meine die liste, die du gepasted hast. in der main datei hab ich zumindest nichts gefunden, was darauf hinweist...oder verstehe ich irgendwas falsch?
 

denim

Neuer User
Mitglied seit
4 Dez 2005
Beiträge
56
Punkte für Reaktionen
0
Punkte
6
achso...
könntest du vielleicht mal ein telnet auf port 6789 deiner VTO machen,
das geht nur wenn du einen telnet auf die VTO machst auf Port 6789. Geht aber nur bei den älteren FW 3.1 oder kleiner. Das hat aber nichts mit mcl zu tun.
 

tobit6795

Neuer User
Mitglied seit
20 Dez 2018
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
okay, dann werd ich nochmal abgleichen und testen...

zu dem CLI programm von @riogrande, weiß jemand was der fehler

[-] No output received from Console

zu bedeuten hat? habe versucht einen testcall mit < call > von vto --> vth zu simulieren. Ein Abbruch eines ausgelösten call konnte ich allerdings über < cc > abbrechen

EDIT: habs mit --force gemacht, klappt....


EDIT2: mir ist leider nicht ganz klar, was in der main entscheidend anders ist, dass nachrichten empfangen werden, besitze allerding quasi 0 C-Fertigkeiten....

was gegen wenn ich "meinen" code poste? vielleicht fällt dir ja direkt etwas auf...
 
Zuletzt bearbeitet:

tobit6795

Neuer User
Mitglied seit
20 Dez 2018
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
Python:
import socket
import struct
import sys

multicast_group = '224.0.2.13'
server_address = ('', 30000)

# Create the socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Bind to the server address
sock.bind(server_address)

# Tell the operating system to add the socket to the multicast group
# on all interfaces.
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

# Receive/respond loop
while True:
    print >>sys.stderr, '\nwaiting to receive message'
    data, address = sock.recvfrom(1024)

    print >>sys.stderr, 'received %s bytes from %s' % (len(data), address)
    print >>sys.stderr, data

    print >>sys.stderr, 'sending acknowledgement to', address
    sock.sendto('ack', address)
Output, getriggered durch nen einfachen mc-client sieht z.B. folgendermaßen aus:



waiting to receive message
received 19 bytes from ('10.11.0.254', 56626)
very important data
sending acknowledgement to ('10.11.0.254', 56626)

waiting to receive message
 

denim

Neuer User
Mitglied seit
4 Dez 2005
Beiträge
56
Punkte für Reaktionen
0
Punkte
6
server_address = ('', 30000)
bin nicht der phyton Experte, aber im mcl musste ich hier meine IP eintragen meine ich.

group.imr_multiaddr.s_addr = inet_addr("224.0.2.13");
group.imr_interface.s_addr = inet_addr(argv[1]);
ansonsten mal nach einem Äquivalent von dem C Code oben für phyton schauen?

edit: was war nochmal der Grund den mcl client als C code nicht zu nutzen? der läuft bei mir schon sehr lange stabil und frist kaum resources. ggf. könntest du dir das selber kompilieren, das ist wirklich einfach.
 

tobit6795

Neuer User
Mitglied seit
20 Dez 2018
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
macht leider keinen unterschied, aber evtl suche ich auch an der falschen stelle, habe gerade eben festgestellt, dass das mcl auch nicht wirklich bei mir läuft... muss warscheinlich nochmal per wireshark dran,und schauen auf welche multicast adresse das geht...komme nur aktuell physisch nicht wirklich an die geräte um mal einen hub dazwischen zu klemmen
 

riogrande75

Mitglied
Mitglied seit
30 Okt 2017
Beiträge
588
Punkte für Reaktionen
74
Punkte
28
Auf ein Broadcast zu lauschen ist mir dann doch ein wenig zu "stillos".:eek:
Wie schon erwähnt, triggere ich auf ein TCP-SYN der VTO auf Port 5000 des Management-Servers (in meinem Fall der RPi, auf dem auch der Asterisk läuft).
Dann spielt auch die Firmware Version keine Rolle, hab das noch von allen mit getesteten FW-Versionen gesehen.
Nebenbei bekommt man auch mit, wenn jemand die Tür per Fingerprint (mit UserID!) oder Remote (Mobile-App) öffnet.
 

tobit6795

Neuer User
Mitglied seit
20 Dez 2018
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
also war jetzt mal mit wireshark dran, einmal direkt am 2wire switch und einmal mit switch+port mirroring+10M half, promiscuous mode aktiv leider nix als broadcast...jemand noch eine idee?
 
Zuletzt bearbeitet:

philipp900

Neuer User
Mitglied seit
28 Feb 2009
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Nebenbei bekommt man auch mit, wenn jemand die Tür per Fingerprint (mit UserID!) oder Remote (Mobile-App) öffnet.
Diese Lösung wäre genau das richtige für mich.
Einen RPi habe ich sowieso schon für die Haussteuerung.
Möchte gerne Fingerprint und UserID auswerten und für weitere Aktionen weiterverschalten.

Kannst du deine Lösung bitte etwas genauer erklären oder deinen Code teilen.
Brauche ich dazu zwingend die SIP Firmware und einen Asterisk Server?
Kann ich mit SIP und Asterisk trotzdem noch das VTH1550 und die gdMSS App nutzen?
 

riogrande75

Mitglied
Mitglied seit
30 Okt 2017
Beiträge
588
Punkte für Reaktionen
74
Punkte
28
Klar, Code im Anhang.

Ist noch im Beta Stadium und ein bisschen Quick'n'Dirty, aber er funktioniert. Bei der Zuordnung der UserIDs zu Namen gibts noch einen kleinen Haken, hab aber noch nicht Zeit gehabt, das Problem zu analysieren.
Denke nicht, dass du zwingend einen Asterisk brauchst, sollte auch ohne SIP funktionieren. Zum rumtüfteln und um das ganze OHNE China-Cloud zu nutzen bringts die SIP Varianter aber mehr.
Nur wo man den "Management Server" (SmartPSS?) in der Config einträgt, das hab ich noch nicht rausgefunden. Dazu einfach mal alles von der VTO mitsniffern und dann den Fingerprint betätigen, so hab ich das auch rausgefunden (TCP-SYN VTO -> Port 5000 MgmtServ). Bei mir war's 192.168.1.1, also gleich dem RPi wo auch mein Asterisk läuft.
 

Anhänge

kuzco-ip

Neuer User
Mitglied seit
4 Feb 2019
Beiträge
109
Punkte für Reaktionen
3
Punkte
18
Hallo philipp900,
wie in diesem Thread geschrieben, bin ich auch auf der Suche nach einem Script, welches mir sowohl beim Kingeln, als auch bei Fingerprint mir ein Foto macht und dann eine email sendet.
Das mit dem Klingeln habe ich schon vor längerer Zeit hinbekommen (nutze das hier gepostete sh-script und hatte es dann an meine Bedüfnisse angepasst), beim FP war ich leider nicht erfolgreich.
Das mit dem Gong ist ein sh-script, das mit dem FP ein php - wäre natürlich sinnvoll wenn es ein Script gäbe.

Falls Du hier erfolgreich sein solltest, wäre es nett wenn Du es teilen könntest.
 

tobit6795

Neuer User
Mitglied seit
20 Dez 2018
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
also ich bin mittlerweile wieder soweit, dass ich multicast bekomme, hab mal bisschen an meinem switch rumkonfiguiert.... dest address ist allerding 224.0.0.2, und die tauch unabhängig davon auf, ob geklingelt wurde...beim klingel sehe ich leider immernoch keinen multicast
 

kuzco-ip

Neuer User
Mitglied seit
4 Feb 2019
Beiträge
109
Punkte für Reaktionen
3
Punkte
18
Hallo,
ist es hier jemanden schon gelungen das Script für die Fingerprint-Überwachnug zum laufen zu bringen ?
Bei riogrande75 läuft es ja, bei mir wird leider beim FP nichts angezeigt.

Habe es für mich angepasst: IP, User, Password, Logging, Abfrage der VTO, etc. - aber nix.
(Kann es gerne posten)

@riogrande: Auch wenn es doof klingt, bist Du sicher, dass es Port 5000 ist ? Kann es evtl. auch UDP sein ?

VG
kuzco
 

Zurzeit aktive Besucher

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
233,323
Beiträge
2,032,825
Mitglieder
351,888
Neuestes Mitglied
NeoToxin