Dahua VTO2000A – Komplettanleitung für die Türsprechanlage mit Fritzbox via Asterisk

Als ich mich wegen Türsprechanlagen umgesehen hatte, war für mich eines der Kriterien, dass ich das Kamerabild auf den Fritz!Fon Geräten (C4/C5/C6) sehen können muss und ich darüber die Haustüre bedienen kann. Bei der Recherche bin ich dann über die Dahua VTO2000A gestoßen, welche die Möglichkeit bietet, via SIP die Gespräche zu führen und einen Video-Stream abzurufen. Das Problem war jedoch, dass die Dahua-Anlage bei Start eines Gesprächs ein INVITE signal zur Fritzbox sendet und diese dann mit „183 Session Progress“ antwortet. Leider kommt die Dahua damit nicht klar, da diese „180 Ringing“ erwartet. Somit beendet die VTO das Gespräch. Zudem versteht die Fritzbox den Stream nicht. Um das zu beheben, habe ich einen Raspberry zwischen rein gesetzt.

Werbung

Was brauchst du?

Vorbereitung des Raspberry

Los geht’s mit dem Setup eines Raspberry für meine Zwecke, der mit einem Debian in form von Rasbian bestückt wird. Nicht vergessen: Beim flashen direkt eine Datei namens „ssh.txt“ in der boot Partition anlegen, damit der SSH-Dienst enabled wird. Dann das gute Stück starten und erst mal via SSH mit dem Nutzer „pi“ einloggen und das Passwort ändern:

passwd

Weiter gehts mit Updates:

sudo apt update
sudo apt upgrade
sudo install raspi-config

Nun gehts erstmal an die grundlegende Konfiguration – ich will beispielsweise einen anderen Hostname. Dazu geht man in „Advanced Options“ und dort auf „Hostname“. Notiz lesen und bestätigen. Bei mir „sipserver“. Dann mittels der Tab-Taste auf ok wechseln. Dann ins Hauptmenü zurückkehren und dort „Expand Filesystem“ wählen. Da dann bei der Nachfrage den Raspberry mal neu starten lassen.

Konfiguration der Fritz!Box

Zuerst Telefoniegerät anlegen:

  • Logge dich in deine Fritzbox ein (meist via fritz.box) und wechsel auf die Expertenansicht (links unten) falls nicht schon geschehen.
  • Dann wähle „Telefonie“ -> „Telefoniegeräte“ -> „Neues Gerät einrichten“.
  • Wähle dann „Türsprechanlage“ und im nächsten Bildschirm „LAN / WLAN (IP-Türsprechanlage)“ zusammen mit einem sprechenden Namen.
  • Dann vergib einen Nutzernamen & Passwort.
  • Im nächsten Bildschirm werden „Klingeltasten“ festgeleget. Diese dienen dem Anruf der Türsprechanlage. Beschreibe diese mit „Klingel“ und der Nummer 23.
  • Übernimm das ganze in deine Konfiguration

Dann Telefoniegerät editieren:

  • Logge dich in deine Fritzbox ein (meist via fritz.box) und wechsel auf die Expertenansicht (links unten) falls nicht schon geschehen.
  • Dann wähle „Telefonie“ -> „Telefoniegeräte“ und wähle die Türsprechanlage aus.
  • Vergib dort für den Türöffner eine Zahl gefolgt von der Raute, also beispielsweise „9#“
  • Trage im „Live-Bild“ die Adresse des Raspberry PI mit port 5050 gefolgt von /snapshot.jpg ein, also z.B.: 192.168.133.7:5050/snapshot.jpg
  • Speichere das ganze

Installation von Asterisk

Logge dich wieder in den Raspberry ein und installiere asterisk – hier reicht die Version aus den Debian repositories:

sudo apt install asterisk

Konfiguration von Asterisk

Nun muss das Asterisk konfiguriert werden:

cd /etc/asterisk/
sudo cp sip.conf sip.conf.orig
sudo nano sip.conf

Das öffnet einen editor für die sip.conf in die der folgende Inhalt muss. Dabei müssen folgende Felder ersetzt werden:

  • [SipServerIP] = IP des Raspberry Pi, also beispielsweise 192.168.133.7
  • [UsernameInFritzBox] = Nutzername der Türsprechanlage in der Fritzbox wie eben vergeben
  • [PasswordInFritzBox] = Password der Türsprechanlage in der Fritzbox wie eben vergeben
  • [IPofFritzBox] = IP der Fritzbox
  • [PasswordForVTO] = Passwort für die Anmeldung der VTO2000A an Asterisk
[general]
language=de
bindport = 5060
bindaddr = 0.0.0.0
externrefresh=30
nat=force_rport,comedia
srvlookup=yes
transport=udp
externip=[SipServerIP]
localnet=10.40.0.1/255.255.0.0
directmedia=yes
videosupport=yes
register => [UsernameInFritzBox]:[PasswordInFritzBox]@[IPofFritzBox]/[UsernameInFritzBox]
 
[8001]
host=dynamic
defaultuser=VTO2000A
type=friend
secret=[PasswordForVTO]
context=ausgehend
canreinvite=yes
qualify=yes
disallow=all
allow=ulaw
allow=h264
dtmfmode=info
 
[videodoorgateway]
context=eingehend
type=friend
insecure=invite
nat=force_rport,comedia instead
defaultuser=[UsernameInFritzBox]
fromuser=[UsernameInFritzBox]
fromdomain=fritz.box
secret=[PasswordInFritzBox]
host=[IPofFritzBox]
dtmfmode=rfc2833
disallow=all
allow=ulaw

Dann Speichern (STRG+O um zu speichern, dann Enter, dann STRG+X um zu verlassen)

Nächste Datei:

sudo nano extensions.conf

Ich habe ein „Answer“ schon eingefügt, womit Asterisk eine Wartemelodie aussen abspielt. Wenn man das nicht will, dann die Zeile mit „Answer()“ löschen.

[general]
static=yes
writeprotect=no
 
[ausgehend]
exten => 101,1,Set(CALLERID(num)=101)
exten => 101,n,Ringing()
exten => 101,n,Answer()
exten => 101,n,Dial(SIP/23@videodoorgateway,30,m)
exten => 101,n,Hangup()
 
[default]
include => ausgehend

Dann Speichern (STRG+O um zu speichern, dann Enter, dann STRG+X um zu verlassen)

Nun muss man die geänderten Dateien an Asterisk übergeben. Dazu öffnet man die Asterisk Konsole:

sudo asterisk -r

Und gibt Bescheid dass man mal alles frisch laden kann

sip reload
sip show registry
dialplan reload

Dort sollte dann nun sowas wie „1 SIP registrations.“ am Ende stehen was sich auf die Zeile zuvor bezieht und eine erfolgreiche Registrierung der Fritz!Box bedeutet. Via „exit“ die Kommandozeile wieder verlassen

Installation des Kamera-Streamings

Für das Streaming der Kamera-Bilder brauchen wir einen Übersetzer, da die VTO sehr langsam snapshots macht, die Fritzbox aber jpg Bilder erwartet. Dazu brauchen wir einen Webserver und einen Video-encodierer:

sudo apt install libav-tools nginx-light

Konfiguration des Kamera-Streamers

Für das Streamen der Kamera füge folgende Zeile in die /etc/fstab ein um ein Ramdisk zu erzeugen. Das wird genutzt um die Bilder der VTO-Kamera im Hauptspeicher statt auf der SD-Karte abzulegen:

tmpfs /mnt/ramdisk tmpfs nodev,nosuid,size=50M 0 0

Dann fügen wir einen Service hinzu:

sudo nano /etc/systemd/system/doorbell1-streamer.service

Den wir mit folgenden Daten füllen, wobei wieder einige Felder ersetzt werden müssen:

  • [PasswordOfVtoAdmin] = Passwort des Nutzers „admin“ auf der VTO
  • [IPofVTO] = IP-Adresse der VTO
[Unit]
Description=doorbell1-streamer
After=network.target
 
[Service]
Slice=machine.slice
ExecStart=/bin/bash -c 'avconv -y -i "rtsp://admin:[PasswordOfVtoAdmin]@[IPofVTO]/cam/realmonitor?channel=1&subtype=0" -f image2 -pix_fmt yuvj420p -update 1 -r 1/5 -nostats -an /mnt/ramdisk/snapshot.jpg'
KillMode=mixed
Restart=always
RestartSec=30s
 
[Install]
WantedBy=multi-user.target

Nun noch systemd bescheid geben, dass es einen neuen Service gibt, der bei Systemstart geladen werden soll:

systemctl daemon-reload
sudo systemctl enable doorbell1-streamer

Konfiguration des Webservers

Ich habe mich für nginx als Webserver entschieden da ich diesen gut kenne und er relativ wenig Ressourcen braucht.

Editiere die /etc/nginx/sites-enabled/default sodass diese wie folgt aussieht:

server {
        listen 5050 default_server;
        listen [::]:5050 default_server;
        server_name _;
        root /mnt/ramdisk/;
        index snapshot.jpg;
        location / {
                try_files $uri $uri/ =404;
        }

Einmal kurz checken ob die Syntax ok ist:

sudo nginx -t

Was etwa so aussehen sollte:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Dann wollen wir nginx beim Neustart auch mitstarten lassen:

sudo systemctl enable nginx

An dieser Stelle mal einmal neu starten:

sudo reboot

Nach dem Neustart wieder via SSH einloggen und nachsehen ob ein tmpfs gemounted ist:

mount|grep ramdisk

das sollte in etwa so aussehen:

tmpfs on /mnt/ramdisk type tmpfs (rw,nosuid,nodev,relatime,size=51200k)

Wenn man nun dort hinein sieht:

ls -al /mnt/ramdisk

Sollte es etwa so aussehen:

total 76
drwxrwxrwt 2 root root    60 May 13 21:54 .
drwxr-xr-x 3 root root  4096 Dec  1 23:35 ..
-rw-r--r-- 1 root root 69796 May 28 22:17 snapshot.jpg

Und wenn man nun die IP des raspberry mit port 5050 und suffix /snapshot.jpg, also z.b. 192.168.133.7:5050/snapshot.jpg, aufruft, so sollte das Kamerabild zu sehen sein.

Soweit so gut. Jetzt konfigurieren wir mal noch die VTO.

Konfiguration der Türsprechanlage

Logge dich in deine Türsprechanlage ein (am besten via Internet Explorer, dann klappt meistens alles was man sich so wünscht 😉 ).

Wichtig: Ich verwende hier die Software Version (Firmware) „2018-06-06 V4.000.0000000.1.R“ und die MCU Version „2017-05-15 V3„.

Local Setting

Basic

Los gehts mit „Local Setting“->“Basic“, wo ich bei den Device Properties folgende Einstellungen vorgenommen habe:

  • Device Type: Small Apartment
  • Building No.: 0
  • Unit No.: 0
  • VTO No.: 8001
  • Call Centre No: 42
  • Call Centre Time: 00:00:00 – 23:59:59

Bei den Events habe ich alles ausgeschalten und anschließend mein Facade Layout entsprechend der Module eingestellt.

Video&Audio

Hier habe ich folgende Settings:
Main Stream:

  • Video Format: WVGA
  • Format Rate: 25
  • Bitrate Rate: 2Mbps

Conditions:

  • Scene Mode: Automatic
  • Day/Night Mode: Automatic
  • Backlight Mode: Disabled
  • Sensor Sesitivity: 23
  • Light Mode: Close

Sub Stream:

  • Video Format: CIF
  • Format Rate: 25
  • Bitrate Rate: 256Kbps

Picture:

  • Brightness: 52
  • Contrast: 45
  • Hue: 51
  • Saturation: 48
  • Gamma: 95
  • Mirror: Off
  • Flip: Off

Audio Control:

  • Voice Prompt Sound: Disabled
  • Ringback Sound: Disabled
  • Unlock Sound: Disabled
  • Tampered Alarm Sound: Enabled
  • Leave Message Notification Sound: Disabled

Volume Control:

  • Mic Volume: 90
  • Beep Volume: 48
Access Control

Entsprechend der eigenen Wünsche, für diesen Artikel nicht relevant

System

Entsprechend der eigenen Wünsche, für diesen Artikel nicht relevant – ich rate aber die Zeit gegen einen NTP-Server zu syncen.

Household Setting

Zugangsberechtigungen etc – für diesen Artikel nicht relevant. Jedoch relevant: Unter Room No. Management muss es einen Raum mit der Nummer 101 geben. Hintergrund: Dieser ist weiter oben in der extensions.conf verdrahtet, was den Anruf auf der Fritzbox auslöst.

Wenn der Raum 101 angelegt ist, dann klicke nochmal auf „Local Setting“ und Klicke im „Facade Layout“ auf die Klingel. Dann wähle 101 als Raum aus, sodass es am Ende so aussieht:

Network Setting

Basic

Ich rate hier dazu die IP fix zu vergeben und P2P auszuschalten (zumindest sende ich meine Daten nicht so gerne nach China – wer die iDMSS App nutzen will muss das hier an lassen).

FTP

Für diesen Artikel nicht relevant

SIP Server

Hier kommt endlich die Registrierung am VoIP Server Asterisk:

  • SIP Server [ ] Enable (haken raus!)
  • Server Type: Asterisk
  • IP Addr.: IP des Asterisk, also 192.168.133.7 von meinem Beispiel oben
  • Port: 5060
  • Username: Sollte 8001 sein, da bei Local Setting->Basic so konfiguriert
  • Password: Passwort für den Nutzer im Asterisk, vorhin als [PasswordForVTO] bezeichnet
  • SIP Domain: asterisk
  • SIP Server Username: Leer lassen
  • SIP Server Password: Leer lassen

Dann „Save“ um zu speichern, was evtl. einen reboot auslöst. Nun sollte sich die VTO2000A auf dem Asterisk anmelden. Probiere einfach mal aus, ob du schon durchklingeln kannst?

Veröffentlicht von

Uli

IT-Nerd und Admin

11 Gedanken zu „Dahua VTO2000A – Komplettanleitung für die Türsprechanlage mit Fritzbox via Asterisk“

  1. Ich war seit mehreren Wochen in diversen Foren zum Thema VTO2000A und SIP unterwegs. Dieses Tutorial ist schlicht das Beste, was es auf dem Bereich weltweit gibt. Sehr klar und verständlich beschrieben, auch für absolute Linux-Dumme, wie mich. Besser geht nicht. An dieser Stelle ein riesen großer Applaus! Hut ab vor Ihrer Leistung!

  2. Hallo Uli, versuche deine Lösung gerade hier bei mir umzusetzen, finde aber in der sip.conf (asterisk13) den parameter „externip=“ so nicht aufgeführt. Welche Version von asterisk hast du hier verwendet?

  3. Vielen Dank für die ausführliche Anleitung.
    Könntest du die aktuellsten Firmwares bereitstellen? Ich bin am verzweifeln, weil es anscheinend keinerlei deutschen Sprachdateien zu geben scheint…

  4. Hallo Uli,

    ich versuche gerade deine Anleitung umzusetzen und ich bekomme kein Bild hin. Wenn ich den Befehl „ls -al /mnt/ramdisk“ ausführe steht die Snapshot Zeile nicht drin. Ich habe ein Raspberry 4, da konnte ich schon nicht den Befehl „sudo apt install libav-tools nginx-light“ ausführen, da waren keinen Installationspakete bekannt. Ich habe dann libav-tools durch ffmpeg ersetzt. Ich habe den Service installiert und lass diesen mitstarten. Hast du vielleicht eine Idee was ich noch tun könnte?
    Vielen Dank für die Hilfe.

    1. Hi Alais,

      ich vermute dass die nächste Debian Version da mir einen Strich durch die Rechnung macht. Kannst du die Befehle mal einzeln probieren ob ein Service startet? Also für den Streaming Service:

      avconv -y -i "rtsp://admin:[PasswordOfVtoAdmin]@[IPofVTO]/cam/realmonitor?channel=1&subtype=0" -f image2 -pix_fmt yuvj420p -update 1 -r 1/5 -nostats -an /mnt/ramdisk/snapshot.jpg

      Viele Grüße,
      Uli

      1. Hi Uli,

        habe herausgefunden, dass der Befehl avconv unter den Raspberry Pi4 nicht mehr läuft. Habe es mit dem Befehl „ffmpeg“ hin bekommen.
        Ich habe jetzt nur noch ein Problem den externen Türöffner DEE1010B mit einzubinden. Ich habe nur eine VTO2000a und den DEE1010B. Wenn ich auf meinen Fritz Fon öffnen drücke schaltet nur das Relais an der VTO. Ich habe schon den Second Lock aktviert und den Open door second command auf die gleiche Einstellung gebracht wie den Türöffner von der VTO, aber es tut sich beim Betätigen nichts. Hast du vielleicht eine Idee? Oder wie hast du deinen Türöffner in deinem System integriert damit dieser öffnet?
        Gruß Alais

Schreibe einen Kommentar zu Uli Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.