<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dee1010b on Ulis Notizen</title>
    <link>https://wolf-u.li/tag/dee1010b/</link>
    <description>Recent content in Dee1010b on Ulis Notizen</description>
    <generator>Hugo -- 0.155.3</generator>
    <language>de</language>
    <copyright>Copyright 2006-CURRENTYEAR Uli Wolf - All rights reserved</copyright>
    <lastBuildDate>Thu, 30 May 2019 15:25:48 +3000</lastBuildDate>
    <atom:link href="https://wolf-u.li/tag/dee1010b/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Dahua VTO2000A - Komplettanleitung für die Türsprechanlage mit Fritzbox via Asterisk</title>
      
      
      <link>https://wolf-u.li/dahua-vto2000a-komplettanleitung-fuer-die-tuersprechanlage-mit-fritzbox-via-asterisk/</link>
      <pubDate>Thu, 30 May 2019 15:25:48 +3000</pubDate>
      <guid>https://wolf-u.li/dahua-vto2000a-komplettanleitung-fuer-die-tuersprechanlage-mit-fritzbox-via-asterisk/</guid>
      <description>&lt;p&gt;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 &amp;ldquo;183 Session Progress&amp;rdquo; antwortet. Leider kommt die Dahua damit nicht klar, da diese &amp;ldquo;180 Ringing&amp;rdquo; 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.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>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 &ldquo;183 Session Progress&rdquo; antwortet. Leider kommt die Dahua damit nicht klar, da diese &ldquo;180 Ringing&rdquo; 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.</p>
<h2 id="was-brauchst-du">Was brauchst du?</h2>
<ul>
<li>Fritz!Box mit Türsprechfunktionalität und DECT</li>
<li><link rel=dns-prefetch href=//amzn.to /> <a href="https://amzn.to/2W1cp7G"
    title="Fritz!Fon C4" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Fritz!Fon C4&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>/<link rel=dns-prefetch href=//amzn.to /> <a href="https://amzn.to/2W71ABq"
    title="Fritz!Fon C5" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Fritz!Fon C5&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>/C6</li>
<li><link rel=dns-prefetch href=//amzn.to /> <a href="https://amzn.to/2W0yXFF"
    title="Raspberry" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Raspberry&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> (oder einen anderen Linux-Rechner, z.b. VM)</li>
<li><link rel=dns-prefetch href=//amzn.to /> <a href="https://amzn.to/2XeCPVh"
    title="Dahua VTO2000A" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Dahua VTO2000A&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a></li>
</ul>
<h2 id="vorbereitung-des-raspberry">Vorbereitung des Raspberry</h2>
<p>Los geht&rsquo;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 &ldquo;ssh.txt&rdquo; 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 &ldquo;pi&rdquo; einloggen und das Passwort ändern:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">passwd
</span></span></code></pre></td></tr></table>
</div>
</div><p>Weiter gehts mit Updates:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt update
</span></span><span class="line"><span class="cl">sudo apt upgrade
</span></span><span class="line"><span class="cl">sudo install raspi-config
</span></span></code></pre></td></tr></table>
</div>
</div><p>Nun gehts erstmal an die grundlegende Konfiguration - ich will beispielsweise einen anderen Hostname. Dazu geht man in &ldquo;Advanced Options&rdquo; und dort auf &ldquo;Hostname&rdquo;. Notiz lesen und bestätigen. Bei mir &ldquo;sipserver&rdquo;. Dann mittels der Tab-Taste auf ok wechseln. Dann ins Hauptmenü zurückkehren und dort &ldquo;Expand Filesystem&rdquo; wählen. Da dann bei der Nachfrage den Raspberry mal neu starten lassen.</p>
<h2 id="konfiguration-der-fritzbox">Konfiguration der Fritz!Box</h2>
<p>Zuerst Telefoniegerät anlegen:</p>
<ul>
<li>Logge dich in deine Fritzbox ein (meist via fritz.box) und wechsel auf die Expertenansicht (links unten) falls nicht schon geschehen.</li>
<li>Dann wähle &ldquo;Telefonie&rdquo; -&gt; &ldquo;Telefoniegeräte&rdquo; -&gt; &ldquo;Neues Gerät einrichten&rdquo;.</li>
<li>Wähle dann &ldquo;Türsprechanlage&rdquo; und im nächsten Bildschirm &ldquo;LAN / WLAN (IP-Türsprechanlage)&rdquo; zusammen mit einem sprechenden Namen.</li>
<li>Dann vergib einen Nutzernamen &amp; Passwort.</li>
<li>Im nächsten Bildschirm werden &ldquo;Klingeltasten&rdquo; festgeleget. Diese dienen dem Anruf der Türsprechanlage. Beschreibe diese mit &ldquo;Klingel&rdquo; und der Nummer 23.</li>
<li>Übernimm das ganze in deine Konfiguration</li>
</ul>
<p>Dann Telefoniegerät editieren:</p>
<ul>
<li>Logge dich in deine Fritzbox ein (meist via fritz.box) und wechsel auf die Expertenansicht (links unten) falls nicht schon geschehen.</li>
<li>Dann wähle &ldquo;Telefonie&rdquo; -&gt; &ldquo;Telefoniegeräte&rdquo; und wähle die Türsprechanlage aus.</li>
<li>Vergib dort für den Türöffner eine Zahl gefolgt von der Raute, also beispielsweise &ldquo;9#&rdquo;</li>
<li>Trage im &ldquo;Live-Bild&rdquo; die Adresse des Raspberry PI mit port 5050 gefolgt von <code>/snapshot.webp</code> ein, also z.B.: <code>192.168.133.7:5050/snapshot.webp</code></li>
<li>Speichere das ganze</li>
</ul>
<h2 id="installation-von-asterisk">Installation von Asterisk</h2>
<p>Logge dich wieder in den Raspberry ein und installiere asterisk - hier reicht die Version aus den Debian repositories:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt install asterisk
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="konfiguration-von-asterisk">Konfiguration von Asterisk</h2>
<p>Nun muss das Asterisk konfiguriert werden:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /etc/asterisk/
</span></span><span class="line"><span class="cl">sudo cp sip.conf sip.conf.orig
</span></span><span class="line"><span class="cl">sudo nano sip.conf
</span></span></code></pre></td></tr></table>
</div>
</div><p>Das öffnet einen editor für die sip.conf in die der folgende Inhalt muss. Dabei müssen folgende Felder ersetzt werden:</p>
<ul>
<li><code>[SipServerIP]</code> = IP des Raspberry Pi, also beispielsweise <code>192.168.133.7</code></li>
<li><code>[UsernameInFritzBox]</code> = Nutzername der Türsprechanlage in der Fritzbox wie eben vergeben</li>
<li><code>[PasswordInFritzBox]</code> = Password der Türsprechanlage in der Fritzbox wie eben vergeben</li>
<li><code>[IPofFritzBox]</code> = IP der Fritzbox</li>
<li><code>[PasswordForVTO]</code> = Passwort für die Anmeldung der VTO2000A an Asterisk</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="o">[</span>general<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">language</span><span class="o">=</span>de
</span></span><span class="line"><span class="cl"><span class="nv">bindport</span> <span class="o">=</span> <span class="m">5060</span>
</span></span><span class="line"><span class="cl"><span class="nv">bindaddr</span> <span class="o">=</span> 0.0.0.0
</span></span><span class="line"><span class="cl"><span class="nv">externrefresh</span><span class="o">=</span><span class="m">30</span>
</span></span><span class="line"><span class="cl"><span class="nv">nat</span><span class="o">=</span>force_rport,comedia
</span></span><span class="line"><span class="cl"><span class="nv">srvlookup</span><span class="o">=</span>yes
</span></span><span class="line"><span class="cl"><span class="nv">transport</span><span class="o">=</span>udp
</span></span><span class="line"><span class="cl"><span class="nv">externip</span><span class="o">=[</span>SipServerIP<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">localnet</span><span class="o">=</span>10.40.0.1/255.255.0.0
</span></span><span class="line"><span class="cl"><span class="nv">directmedia</span><span class="o">=</span>yes
</span></span><span class="line"><span class="cl"><span class="nv">videosupport</span><span class="o">=</span>yes
</span></span><span class="line"><span class="cl"><span class="nv">register</span> <span class="o">=</span>&gt; <span class="o">[</span>UsernameInFritzBox<span class="o">]</span>:<span class="o">[</span>PasswordInFritzBox<span class="o">]</span>@<span class="o">[</span>IPofFritzBox<span class="o">]</span>/<span class="o">[</span>UsernameInFritzBox<span class="o">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>8001<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">host</span><span class="o">=</span>dynamic
</span></span><span class="line"><span class="cl"><span class="nv">defaultuser</span><span class="o">=</span>VTO2000A
</span></span><span class="line"><span class="cl"><span class="nv">type</span><span class="o">=</span>friend
</span></span><span class="line"><span class="cl"><span class="nv">secret</span><span class="o">=[</span>PasswordForVTO<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">context</span><span class="o">=</span>ausgehend
</span></span><span class="line"><span class="cl"><span class="nv">canreinvite</span><span class="o">=</span>yes
</span></span><span class="line"><span class="cl"><span class="nv">qualify</span><span class="o">=</span>yes
</span></span><span class="line"><span class="cl"><span class="nv">disallow</span><span class="o">=</span>all
</span></span><span class="line"><span class="cl"><span class="nv">allow</span><span class="o">=</span>ulaw
</span></span><span class="line"><span class="cl"><span class="nv">allow</span><span class="o">=</span>h264
</span></span><span class="line"><span class="cl"><span class="nv">dtmfmode</span><span class="o">=</span>info
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>videodoorgateway<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">context</span><span class="o">=</span>eingehend
</span></span><span class="line"><span class="cl"><span class="nv">type</span><span class="o">=</span>friend
</span></span><span class="line"><span class="cl"><span class="nv">insecure</span><span class="o">=</span>invite
</span></span><span class="line"><span class="cl"><span class="nv">nat</span><span class="o">=</span>force_rport,comedia instead
</span></span><span class="line"><span class="cl"><span class="nv">defaultuser</span><span class="o">=[</span>UsernameInFritzBox<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">fromuser</span><span class="o">=[</span>UsernameInFritzBox<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">fromdomain</span><span class="o">=</span>fritz.box
</span></span><span class="line"><span class="cl"><span class="nv">secret</span><span class="o">=[</span>PasswordInFritzBox<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">host</span><span class="o">=[</span>IPofFritzBox<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">dtmfmode</span><span class="o">=</span>rfc2833
</span></span><span class="line"><span class="cl"><span class="nv">disallow</span><span class="o">=</span>all
</span></span><span class="line"><span class="cl"><span class="nv">allow</span><span class="o">=</span>ulaw
</span></span></code></pre></td></tr></table>
</div>
</div><p>Dann Speichern (STRG+O um zu speichern, dann Enter, dann STRG+X um zu verlassen)</p>
<p>Nächste Datei:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo nano extensions.conf
</span></span></code></pre></td></tr></table>
</div>
</div><p>Ich habe ein &ldquo;Answer&rdquo; schon eingefügt, womit Asterisk eine Wartemelodie aussen abspielt. Wenn man das nicht will, dann die Zeile mit &ldquo;Answer()&rdquo; löschen.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="o">[</span>general<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">static</span><span class="o">=</span>yes
</span></span><span class="line"><span class="cl"><span class="nv">writeprotect</span><span class="o">=</span>no
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>ausgehend<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">exten</span> <span class="o">=</span>&gt; 101,1,Set<span class="o">(</span>CALLERID<span class="o">(</span>num<span class="o">)=</span>101<span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="nv">exten</span> <span class="o">=</span>&gt; 101,n,Ringing<span class="o">()</span>
</span></span><span class="line"><span class="cl"><span class="nv">exten</span> <span class="o">=</span>&gt; 101,n,Answer<span class="o">()</span>
</span></span><span class="line"><span class="cl"><span class="nv">exten</span> <span class="o">=</span>&gt; 101,n,Dial<span class="o">(</span>SIP/23@videodoorgateway,30,m<span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="nv">exten</span> <span class="o">=</span>&gt; 101,n,Hangup<span class="o">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>default<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">include</span> <span class="o">=</span>&gt; ausgehend
</span></span></code></pre></td></tr></table>
</div>
</div><p>Dann Speichern (STRG+O um zu speichern, dann Enter, dann STRG+X um zu verlassen)</p>
<p>Nun muss man die geänderten Dateien an Asterisk übergeben. Dazu öffnet man die Asterisk Konsole:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo asterisk -r
</span></span></code></pre></td></tr></table>
</div>
</div><p>Und gibt Bescheid dass man mal alles frisch laden kann</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sip reload
</span></span><span class="line"><span class="cl">sip show registry
</span></span><span class="line"><span class="cl">dialplan reload
</span></span></code></pre></td></tr></table>
</div>
</div><p>Dort sollte dann nun sowas wie &ldquo;1 SIP registrations.&rdquo; am Ende stehen was sich auf die Zeile zuvor bezieht und eine erfolgreiche Registrierung der Fritz!Box bedeutet. Via &ldquo;<code>exit</code>&rdquo; die Kommandozeile wieder verlassen</p>
<h2 id="installation-des-kamera-streamings">Installation des Kamera-Streamings</h2>
<p>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:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt install libav-tools nginx-light
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="konfiguration-des-kamera-streamers">Konfiguration des Kamera-Streamers</h3>
<p>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:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">tmpfs /mnt/ramdisk tmpfs nodev,nosuid,size<span class="o">=</span>50M <span class="m">0</span> <span class="m">0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Dann fügen wir einen Service hinzu:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo nano /etc/systemd/system/doorbell1-streamer.service
</span></span></code></pre></td></tr></table>
</div>
</div><p>Den wir mit folgenden Daten füllen, wobei wieder einige Felder ersetzt werden müssen:</p>
<ul>
<li><code>[PasswordOfVtoAdmin]</code> = Passwort des Nutzers &ldquo;admin&rdquo; auf der VTO</li>
<li><code>[IPofVTO]</code> = IP-Adresse der VTO</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="o">[</span>Unit<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">Description</span><span class="o">=</span>doorbell1-streamer
</span></span><span class="line"><span class="cl"><span class="nv">After</span><span class="o">=</span>network.target
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>Service<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">Slice</span><span class="o">=</span>machine.slice
</span></span><span class="line"><span class="cl"><span class="nv">ExecStart</span><span class="o">=</span>/bin/bash -c <span class="s1">&#39;avconv -y -i &#34;rtsp://admin:[PasswordOfVtoAdmin]@[IPofVTO]/cam/realmonitor?channel=1&amp;subtype=0&#34; -f image2 -pix_fmt yuvj420p -update 1 -r 1/5 -nostats -an /mnt/ramdisk/snapshot.webp&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nv">KillMode</span><span class="o">=</span>mixed
</span></span><span class="line"><span class="cl"><span class="nv">Restart</span><span class="o">=</span>always
</span></span><span class="line"><span class="cl"><span class="nv">RestartSec</span><span class="o">=</span>30s
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>Install<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">WantedBy</span><span class="o">=</span>multi-user.target
</span></span></code></pre></td></tr></table>
</div>
</div><p>Nun noch systemd bescheid geben, dass es einen neuen Service gibt, der bei Systemstart geladen werden soll:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">systemctl daemon-reload
</span></span><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> doorbell1-streamer
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="konfiguration-des-webservers">Konfiguration des Webservers</h3>
<p>Ich habe mich für nginx als Webserver entschieden da ich diesen gut kenne und er relativ wenig Ressourcen braucht.</p>
<p>Editiere die <code>/etc/nginx/sites-enabled/default</code> sodass diese wie folgt aussieht:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">server <span class="o">{</span>
</span></span><span class="line"><span class="cl"> listen <span class="m">5050</span> default_server<span class="p">;</span>
</span></span><span class="line"><span class="cl"> listen <span class="o">[</span>::<span class="o">]</span>:5050 default_server<span class="p">;</span>
</span></span><span class="line"><span class="cl"> server_name _<span class="p">;</span>
</span></span><span class="line"><span class="cl"> root /mnt/ramdisk/<span class="p">;</span>
</span></span><span class="line"><span class="cl"> index snapshot.webp<span class="p">;</span>
</span></span><span class="line"><span class="cl"> location / <span class="o">{</span>
</span></span><span class="line"><span class="cl"> try_files <span class="nv">$uri</span> <span class="nv">$uri</span>/ <span class="o">=</span>404<span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Einmal kurz checken ob die Syntax ok ist:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo nginx -t
</span></span></code></pre></td></tr></table>
</div>
</div><p>Was etwa so aussehen sollte:</p>
<blockquote>
<p><code>nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful</code></p>
</blockquote>
<p>Dann wollen wir nginx beim Neustart auch mitstarten lassen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> nginx
</span></span></code></pre></td></tr></table>
</div>
</div><p>An dieser Stelle mal einmal neu starten:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo reboot
</span></span></code></pre></td></tr></table>
</div>
</div><p>Nach dem Neustart wieder via SSH einloggen und nachsehen ob ein tmpfs gemounted ist:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mount<span class="p">|</span>grep ramdisk
</span></span></code></pre></td></tr></table>
</div>
</div><p>das sollte in etwa so aussehen:</p>
<blockquote>
<p><code>tmpfs on /mnt/ramdisk type tmpfs (rw,nosuid,nodev,relatime,size=51200k)</code></p>
</blockquote>
<p>Wenn man nun dort hinein sieht:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ls -al /mnt/ramdisk
</span></span></code></pre></td></tr></table>
</div>
</div><p>Sollte es etwa so aussehen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">total <span class="m">76</span>
</span></span><span class="line"><span class="cl">drwxrwxrwt <span class="m">2</span> root root <span class="m">60</span> May <span class="m">13</span> 21:54 .
</span></span><span class="line"><span class="cl">drwxr-xr-x <span class="m">3</span> root root <span class="m">4096</span> Dec <span class="m">1</span> 23:35 ..
</span></span><span class="line"><span class="cl">-rw-r--r-- <span class="m">1</span> root root <span class="m">69796</span> May <span class="m">28</span> 22:17 snapshot.webp
</span></span></code></pre></td></tr></table>
</div>
</div><p>Und wenn man nun die IP des raspberry mit port <code>5050</code> und suffix <code>/snapshot.webp</code>, also z.b. <code>192.168.133.7:5050/snapshot.webp</code>, aufruft, so sollte das Kamerabild zu sehen sein.</p>
<p>Soweit so gut. Jetzt konfigurieren wir mal noch die VTO.</p>
<h2 id="konfiguration-der-türsprechanlage">Konfiguration der Türsprechanlage</h2>
<p>Logge dich in deine Türsprechanlage ein (am besten via Internet Explorer, dann klappt meistens alles was man sich so wünscht ;) ).
<a href="/upload/2019/05/5950-dahua-vto2000a-firmware4-interface.webp"
    title="" 
   >
  <img src="/upload/2019/05/5950-dahua-vto2000a-firmware4-interface.webp" alt="Firmware" loading="lazy"></a>
Wichtig: Ich verwende hier die Software Version (Firmware) &ldquo;<code>2018-06-06 V4.000.0000000.1.R</code>&rdquo; und die MCU Version &ldquo;<code>2017-05-15 V3</code>&rdquo;.</p>
<h3 id="local-setting">Local Setting</h3>
<h4 id="basic">Basic</h4>
<p>Los gehts mit &ldquo;Local Setting&rdquo;-&gt;&ldquo;Basic&rdquo;, wo ich bei den Device Properties folgende Einstellungen vorgenommen habe:</p>
<ul>
<li>Device Type: Small Apartment</li>
<li>Building No.: 0</li>
<li>Unit No.: 0</li>
<li>VTO No.: 8001</li>
<li>Call Centre No: 42</li>
<li>Call Centre Time: 00:00:00 - 23:59:59</li>
</ul>
<p>Bei den Events habe ich alles ausgeschalten und anschließend mein Facade Layout entsprechend der Module eingestellt.</p>
<h5 id="videoaudio">Video&amp;Audio</h5>
<p>Hier habe ich folgende Settings:
Main Stream:</p>
<ul>
<li>Video Format: WVGA</li>
<li>Format Rate: 25</li>
<li>Bitrate Rate: 2Mbps</li>
</ul>
<p>Conditions:</p>
<ul>
<li>Scene Mode: Automatic</li>
<li>Day/Night Mode: Automatic</li>
<li>Backlight Mode: Disabled</li>
<li>Sensor Sesitivity: 23</li>
<li>Light Mode: Close</li>
</ul>
<p>Sub Stream:</p>
<ul>
<li>Video Format: CIF</li>
<li>Format Rate: 25</li>
<li>Bitrate Rate: 256Kbps</li>
</ul>
<p>Picture:</p>
<ul>
<li>Brightness: 52</li>
<li>Contrast: 45</li>
<li>Hue: 51</li>
<li>Saturation: 48</li>
<li>Gamma: 95</li>
<li>Mirror: Off</li>
<li>Flip: Off</li>
</ul>
<p>Audio Control:</p>
<ul>
<li>Voice Prompt Sound: Disabled</li>
<li>Ringback Sound: Disabled</li>
<li>Unlock Sound: Disabled</li>
<li>Tampered Alarm Sound: Enabled</li>
<li>Leave Message Notification Sound: Disabled</li>
</ul>
<p>Volume Control:</p>
<ul>
<li>Mic Volume: 90</li>
<li>Beep Volume: 48</li>
</ul>
<h5 id="access-control">Access Control</h5>
<p>Entsprechend der eigenen Wünsche, für diesen Artikel nicht relevant</p>
<h5 id="system">System</h5>
<p>Entsprechend der eigenen Wünsche, für diesen Artikel nicht relevant - ich rate aber die Zeit gegen einen NTP-Server zu syncen.</p>
<h3 id="household-setting">Household Setting</h3>
<p>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.</p>
<p>Wenn der Raum 101 angelegt ist, dann klicke nochmal auf &ldquo;Local Setting&rdquo; und Klicke im &ldquo;Facade Layout&rdquo; auf die Klingel. Dann wähle 101 als Raum aus, sodass es am Ende so aussieht:
<a href="/upload/2019/05/5950-dahua-vto2000a-firmware4-facade-layout.webp"
    title="" 
   >
  <img src="/upload/2019/05/5950-dahua-vto2000a-firmware4-facade-layout.webp" alt="Facade" loading="lazy"></a></p>
<h3 id="network-setting">Network Setting</h3>
<h4 id="basic-network-setting">Basic (Network Setting)</h4>
<p>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).</p>
<h4 id="ftp-network-setting">FTP (Network Setting)</h4>
<p>Für diesen Artikel nicht relevant</p>
<h4 id="sip-server-network-setting">SIP Server (Network Setting)</h4>
<p>Hier kommt endlich die Registrierung am VoIP Server Asterisk:</p>
<ul>
<li>SIP Server [ ] Enable (haken raus!)</li>
<li>Server Type: Asterisk</li>
<li>IP Addr.: IP des Asterisk, also 192.168.133.7 von meinem Beispiel oben</li>
<li>Port: 5060</li>
<li>Username: Sollte 8001 sein, da bei Local Setting-&gt;Basic so konfiguriert</li>
<li>Password: Passwort für den Nutzer im Asterisk, vorhin als [PasswordForVTO] bezeichnet</li>
<li>SIP Domain: asterisk</li>
<li>SIP Server Username: Leer lassen</li>
<li>SIP Server Password: Leer lassen</li>
</ul>
<p>Dann &ldquo;Save&rdquo; 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?</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
