{"id":933,"date":"2015-03-18T22:04:38","date_gmt":"2015-03-18T21:04:38","guid":{"rendered":"http:\/\/www.familie-christian.com\/hausbau\/?p=933"},"modified":"2015-03-19T09:03:27","modified_gmt":"2015-03-19T08:03:27","slug":"spass-mit-voip-an-der-haustuer","status":"publish","type":"post","link":"https:\/\/www.familie-christian.com\/hausbau\/?p=933","title":{"rendered":"Spa\u00df mit VoIP an der Haust\u00fcr"},"content":{"rendered":"<p>Das praktische &#8211; wenn man eine T\u00fcrsprechanlage hat die VoIP beherrscht &#8211; ist, dass man damit viele tolle Spielereien umsetzen kann.<\/p>\n<p>Unsere T\u00fcrsprechanlage ist von<a title=\"2n\" href=\"http:\/\/www.2n.cz\/de\/\" target=\"_blank\"> 2n<\/a>, einer tschechischen Firma die verh\u00e4ltnism\u00e4\u00dfig g\u00fcnstige VoIP Sprechanlagen am Markt hat. Vertrieben werden die Ger\u00e4te von der deutschen Vertretung <a title=\"Keil Telecom\" href=\"http:\/\/www.keil-telecom.de\/\" target=\"_blank\">Keil Telecom<\/a>. Gekauft habe ich aber, wie so vieles, bei <a title=\"Voltus GmbH\" href=\"http:\/\/www.voltus.de\/sicherheitstechnik\/zutrittssysteme\/keil-telecom\/2n-entrycom-tuerstationen\/2n-entrycom-ip-uni\/keil-telecom-9153102d-2n-entrycom-ip-uni-ohne-kamara-2-ruftasten.html\" target=\"_blank\">Voltus<\/a>.<\/p>\n<p>Wie dem auch sei: Die Anlage war recht g\u00fcnstig und kann VoIP. Wenn nun ein Besucher vor der Haust\u00fcr steht und &#8222;klingelt&#8220;, so wird \u00fcber einen VoIP-Server (<a title=\"Asterisk\" href=\"http:\/\/www.asterisk.org\/\" target=\"_blank\">Asterisk<\/a>) eine Telefonverbindung zu unserem im Wohnzimmer stehenden Telefon (ebenfalls ein VoIP Ger\u00e4t) aufgebaut.<\/p>\n<p>Nun gibt es drei F\u00e4lle die eintreten k\u00f6nnen:<\/p>\n<ol>\n<li>Keiner da &#8230;<br \/>\nIn diesem Fall w\u00fcrde die Sprechanlage nach Zeit <em>x<\/em> einfach aufgeben und dem vor der T\u00fcr stehenden mit einem Signalton signalisieren: &#8222;<em>Da ging keiner ran. Ist wohl keiner da.<\/em>&#8222;<\/li>\n<li>Der Weg zur T\u00fcr ist k\u00fcrzer als zum Telefon &#8230;<br \/>\nDa wir kein &#8222;Treppenhaus&#8220; haben das der Haust\u00fcr vorgelagert ist, ist oftmals der Weg zur T\u00fcr k\u00fcrzer als der zum Telefon. In diesem Fall klingelt es flei\u00dfig weiter bis der Timeout aus\u00a0(1) eintritt. Das kann schnell nervig werden.<\/li>\n<li>Telefon ist greifbar &#8230;<br \/>\nEs klingelt an der T\u00fcr &#8211;&gt; Das Telefon klingelt. Man nimmt ab und kann mit einer DTMF-Folge die T\u00fcr \u00f6ffnen (kann die 2n Anlage ab Werk).<\/li>\n<\/ol>\n<p><!--more-->Fall Nummer 1 tritt meist ein wenn ein Postbote vor der T\u00fcr steht. Die kommen f\u00fcr gew\u00f6hnlich zu solchen Zeiten wo keiner zuhause ist. In diesem Fall ist Asterisk so schlau und kann das Gespr\u00e4ch &#8222;weiterleiten&#8220;. D.h. nach aktuell 15sek (entspricht ca. 4x Klingelrufzeichen) bekommt der &#8222;vor der T\u00fcr stehende&#8220; die Meldung &#8222;Bitte warten, sie werden verbunden&#8230;&#8220; eingespielt. Im direkten Anschluss an diese Meldung wird das Gespr\u00e4ch zum Handy umgeleitet. In der &#8222;extensions.ael&#8220; von Asteriskl sieht das dann so aus:<\/p>\n<pre> 1001 =&gt; {\r\n     Dial(SIP\/1001,15);\r\n     switch (\"${DIALSTATUS}\") {\r\n         case \"BUSY\":\r\n         case \"NOANSWER\":\r\n           Answer();\r\n           MP3Player(\/var\/lib\/asterisk\/sounds\/BitteHabenSieEinenMomendGeduldSieWerdenGleichVerbunden.mp3);\r\n           Set(CALLERID(number)=123456789);\r\n           Set(CALLERID(name)=491234567890); \r\n           Dial(SIP\/01511234567890@sipgate);\r\n           break;\r\n         default:\r\n           NoOp(was anderes);\r\n     }\r\n     NoOp(Fertig);\r\n }<\/pre>\n<p>&nbsp;<\/p>\n<p>Zur Erkl\u00e4rung:<\/p>\n<p>Es wird 15 Sekunden lang Versucht die interne Nummer 1001 anzurufen. Im Fall von &#8222;BUSY&#8220; oder &#8222;NOANSWER&#8220; wird dann das Gespr\u00e4ch selbst angenommen und die Warte-Meldung abgespielt. Danach wird die Absender-Rufnummer auf eine andere Nummer, auf eine Festnetznummer ge\u00e4ndert. Das Zauberwort ist hier &#8222;CLIP no screening&#8220;. Mein VoIP Anbieter (<a title=\"sipgate\" href=\"http:\/\/www.sipgate.de\/\" target=\"_blank\">sipgate<\/a>) beherrscht das. Dazu muss im ersten Schritt die sipgate-Nummer angegeben werden und in zweiten Schritt die neue Absenderrufnummer mit vorangestelltem &#8222;49&#8220;\u00a0definiert werden. Aber Achtung: Man muss wissen was man hier tut und man muss im &#8222;Besitz&#8220; der neuen Absendernummer sein. Sonst kann es hier deftige Strafen hageln&#8230; Anschlie\u00dfend wird die Handynummer \u00fcber sipgate angew\u00e4hlt. Fertig&#8230;<\/p>\n<p>Egal wo man nun ist, man bekommt es mit wenn jemand zuhause klingelt. Mit ein paar weiteren Schnittstellen ist das \u00d6ffnen des Garagent\u00fcres um einen halben-Meter-Spalt, damit der Paketbote sein Paket los werden kann, nicht mehr allzu fern. Aktuell ist das noch Zukunftsmusik. Die Grundlagen sind aber bereits vorhanden.<\/p>\n<p>Fall Nummer 2 ist der wohl h\u00e4ufigste Fall. Zumindest bei uns&#8230; Aber dieses Problem l\u00e4sst sich &#8222;smart&#8220; l\u00f6sen: Unsere Haust\u00fcr hat, wie alle Fenster im Haus, einen Reed-Kontakt: \u00d6ffnet man die T\u00fcr, wird ein Kontakt ausgel\u00f6st, welchen ich am KNX-Bus mitbekomme.<\/p>\n<p>Damit l\u00e4sst sich prima das Klingeln der T\u00fcrsprechanlage beenden. Folgendes Linux-Script hilft dabei:<\/p>\n<pre>#!\/bin\/sh\r\neibd -d -i -u ipt:192.168.2.3\r\necho \"entering loop...\"\r\nwhile true; do\r\n grouplisten local:\/tmp\/eib 3\/5\/1 | grep -m 0 \"Write from .*: 01\"\r\n echo \"doing hangup ...\"\r\n \/opt\/hangupHaust\u00fcr.sh\r\n echo \"next ...\"\r\n sleep 2;\r\ndone<\/pre>\n<p>Zuerst wird der &#8222;eib-daemon&#8220;, kurz &#8222;<a title=\"EIBD\" href=\"https:\/\/www.auto.tuwien.ac.at\/~mkoegler\/index.php\/eibd\" target=\"_blank\">eibd<\/a>&#8220; gestartet. Die angegebene IP ist dann logischerweise die vom KNX-IP-Router. Dann wird in einer Endlosschleife die Gruppenadresse &#8222;3\/5\/1&#8220; abgeh\u00f6rt. Dieses Kommando w\u00fcrde bei jedem Schreibzugriff auf die Gruppenadresse ausgeben werd geschrieben hat und was er geschrieben hat. Zum Beispiel:<\/p>\n<pre>Write from 1.1.255: 01<\/pre>\n<p>Jedesmal wenn die Haust\u00fcre sich \u00f6ffnet, wird eine &#8222;1&#8220; gesendet, die dann als Hexadezimal &#8222;01&#8220; ausgegeben wird. Die Ausgabe wird dann zum <a title=\"grep\" href=\"http:\/\/de.wikipedia.org\/wiki\/Grep\" target=\"_blank\">grep <\/a>Kommando &#8222;gepiped&#8220;, wo nach der eben genannten Zeichenfolge gesucht wird. Die Absenderadresse ist mit einem Wildcard-Platzhalter versehen. &#8222;-m 0&#8220; gibt an, dass nach einem einzigen Vorkommen die Pipe und alles was dran h\u00e4ngt (grouplisten &#8230;) beendet wird.<\/p>\n<p>Kurzum: Es geht drum zu erkennen dass die Haust\u00fcre ge\u00f6ffnet wird.<\/p>\n<p>Im n\u00e4chsten Schritt wird das Script zum Abbrechen des Anrufs aufgerufen. Danach wird 2sek geschlafen und dann wieder auf das \u00d6ffnen der T\u00fcre gewartet.<\/p>\n<p>Das Script zum Abbrechen des Anrufs sieht wie folgt aus:<\/p>\n<pre>#!\/bin\/sh\r\nNUMBER=1000\r\nCHANNEL=`\/usr\/sbin\/asterisk -rx \"core show channels\" | grep \"SIP\/$NUMBER-\" | grep \"Ringing\" | cut -f1 -d\" \"`\r\nif [ -n \"$CHANNEL\" ]\r\nthen\r\n echo \"Will hangug ringing channel '$CHANNEL'\"\r\n \/usr\/sbin\/asterisk -rx \"channel request hangup $CHANNEL\"\r\nelse\r\n echo \"Channel with number $NUMBER is not ringing. No hangup required.\"\r\nfi<\/pre>\n<p>Die Haust\u00fcrsprechanlage hat die Rufnummer 1000. Zuerst wird Asterisk \u00fcber das &#8222;CLI&#8220; (Command Line Interface) nach den aktuellen &#8222;Channels&#8220; gefragt. Hier wird gelistet welche Nummer gerade telefoniert, anruft oder sonst was treibt. Die Ausgabe sieht ungefiltert z.B. so aus:<\/p>\n<pre>Channel Location State Application(Data)\r\nSIP\/1000-0000000f 1003@intern:1 Ring Dial(SIP\/1001)\r\nSIP\/1001-0000000e 1003@intern:1 Ringing AppDial((Outgoing Line))\r\n2 active channels\r\n1 active call\r\n8 calls processed<\/pre>\n<p>Die Ausgabe wird wieder &#8222;gegrept&#8220;. Wir suchen nach der Zeichenfolge &#8222;SIP\/1000-&#8220; und weiter nach der Zeichenfolge &#8222;Ring&#8220;. Und aus der entsprechenden Zeile nehmen wir dann die Spalte Nummer 1. Damit wird dann Asterisk gef\u00fcttert um den Anruf zu beenden. Wird kein Channel gefunden der im &#8222;Ring&#8220; Zustand ist, wird einfach nichts getan.<\/p>\n<p>Ergebnis: Wird die Haust\u00fcr ge\u00f6ffnet und der Anruf ist noch im Zustand &#8222;es klingelt noch&#8220;, dann wird der Anruf abgebrochen.<\/p>\n<p>Fall Nummer 3 muss ich glaub nicht weiter ausf\u00fchren&#8230;<\/p>\n<p>Sobald die Garage anst\u00e4ndig &#8222;elektrifiziert&#8220; und &#8222;knx-ifiziert&#8220; ist, wird f\u00fcr den Fall Nummer 2 noch die Steuerung des Garagentors implementiert&#8230; Dazu dann sp\u00e4ter mehr.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das praktische &#8211; wenn man eine T\u00fcrsprechanlage hat die VoIP beherrscht &#8211; ist, dass man damit viele tolle Spielereien umsetzen kann. Unsere T\u00fcrsprechanlage ist von 2n, einer tschechischen Firma die verh\u00e4ltnism\u00e4\u00dfig g\u00fcnstige VoIP Sprechanlagen am Markt hat. Vertrieben werden die &hellip; <a href=\"https:\/\/www.familie-christian.com\/hausbau\/?p=933\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,66,4],"tags":[],"class_list":["post-933","post","type-post","status-publish","format-standard","hentry","category-knx","category-smarthome","category-technisches"],"_links":{"self":[{"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=\/wp\/v2\/posts\/933","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=933"}],"version-history":[{"count":1,"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=\/wp\/v2\/posts\/933\/revisions"}],"predecessor-version":[{"id":934,"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=\/wp\/v2\/posts\/933\/revisions\/934"}],"wp:attachment":[{"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=933"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=933"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.familie-christian.com\/hausbau\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}