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.

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:

1
passwd

Weiter gehts mit Updates:

1
2
3
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:

1
sudo apt install asterisk

Konfiguration von Asterisk

Nun muss das Asterisk konfiguriert werden:

1
2
3
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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[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:

1
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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[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:

1
sudo asterisk -r

Und gibt Bescheid dass man mal alles frisch laden kann

1
2
3
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:

1
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:

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

Dann fügen wir einen Service hinzu:

1
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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[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:

1
2
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:

1
2
3
4
5
6
7
8
9
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:

1
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:

1
sudo systemctl enable nginx

An dieser Stelle mal einmal neu starten:

1
sudo reboot

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

1
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:

1
ls -al /mnt/ramdisk

Sollte es etwa so aussehen:

1
2
3
4
5

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 ;) ).

Firmware
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:

Facade

Network Setting

Basic (Network Setting)

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 (Network Setting)

Für diesen Artikel nicht relevant

SIP Server (Network Setting)

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?