Telefonanlage mit Asterisk 13 und PJSIP

In diesem Artikel habe ich das große Ganze zu meiner Heiminstallation mit Asterisk 13 und auf Raspberry Pi-Basis erläutert.
Es war nicht ganz leicht, PJSIP zu konfigurieren, da es im Internet kaum Einrichtungsbeispiele für PJSIP-Installationen gibt (zumindest deutlich weniger als für chan_sip), insbesondere gab es nichts, was auf die Spezialitäten für den Telekom AllIP-Anschluss eingeht und über die Verwendung von pjsip_wizard.conf konnte ich in diesem Zusammenhang garnichts finden.
Daher stelle ich in diesem Artikel die Konfiguration meines Asterisk vor und gehe auf ein paar Herausforderungen ein, die sich durch die Umstellung von chan_sip ergeben haben.

Mein Dank geht an Jürgen Büssert und Dr. Martin Rother, die ebenfalls Einblick in die Dokumentation ihrer „Asteriskse“ geben.

Weiterlesen

Heim-Server auf Raspberry Pi mit Asterisk, fhem, LDAP und davical

Vorgeschichte

Als ich vor ein paar Jahren meine jetzige Wohnung bezog, hatte ich eigentlich vor, ISDN als Amtsanschluss zu buchen und mir eine kleine HiPath-Telefonanlage zu installieren.
Es stellte sich heraus, dass ADSL-mäßig in der Wohngegend aber wohl alles ziemlich dicht ist, dafür ist aber VDSL verfügbar. Damit fiel ISDN als Option weg, da mir schnelles und stabiles Internet wichtig ist.

Ich habe dann zunächst zwei DECT-Mobilteile an die bereits vorhandene Fritzbox angemeldet um das Thema „Telefonie“ in Ruhe neu bewerten zu können.
Eine konventionelle Telefonanlage bietet zwar viele Funktionen was Rufverteilung, Berechtigungen, etc. angeht, aber es ist schwierig, die Außenwelt anzubinden, z. B. mit selbst geschriebener Software.
Meist sind dazu zusätzliche (auf Windows basierende) Server und (teure) Lizenzen notwendig, was ich weder aus Kostengründen noch aus Energiegründen für sinnvoll hielt.
Die sonstigen Funktionen werden auch nicht benötigt, denn in der Regel wird eine Telefonnummer genutzt, bei der alle (aktuell vier) Telefone klingeln.

Dazu kommt, dass man bei den HiPath-Anlagen zur Wartung immer die Windows-Software Manager C bzw. Manager E benötigt, selbst, um Telefonbucheinträge zu verwalten. Das ist ungünstig in einem Haushalt, in dem keine Windows-PCs vorhanden sind.

Ein möglichst einfach zu administrierendes Anlagentelefonbuch war mir wichtig. Die HiPath kann zwar LDAP, aber nur als Namensauflösung für eingehende Rufe.

Bei Asterisk, das wusste ich aus vorhergehenden Projekten, kann man sehr einfach diverse Dinge steuern.

Eine konventionelle TK-Anlage schied also aus, auch die Fritzbox erwies sich alsbald als ungenügend für meine Ansprüche. Die Details führe ich hier mal nicht aus, bei Interesse kann ich dazu mal noch einen eigenen Artikel spendieren.
Ich nahm also einen Raspberry Pi (ursprünglich Model B, heute Version 3) und Raspbian als Basis.
Der Raspberry Pi regelt die Telefonie, Zusatzdienste zur Telefonie, Telefonbuch, Kalender und auch Heimautomation.
Wenn jemand an zusätzlichen Details interessiert ist: einfach melden!

Folgende Dienste sind im Einzelnen realisiert:

Asterisk

In der Installation sollen folgende Endgeräte unterstützt werden:

  • SIP-Tischtelefone
  • DECT-Mobilteile
  • Fax (für alle Fälle)
  • POTS

Die Fritzbox wird dazu als Gateway missbraucht: Fax und ein analoges Wandtelefon sind an die a/b-Ports angeschlossen und in der Fritzbox sind „Internet-Rufnummern“ eingerichtet, die sich am lokalen Asterisk registrieren. Die SIP-Tischtelefone (bei mir z. B. Snom 370 und 720) registrieren sich direkt am Asterisk.
Da alle Telefone auf der „einen Seite“ der Wohnung sind, hört man sie schlecht, wenn man sich in einem der anderen Räume aufhält, daher gibts das Siemens Miniset 325 im Flur.
Auch die DECT-Mobilteile sind (zur Zeit noch) an der Fritzbox angemeldet. Ich habe mich für Gigaset SL3 professional entschieden. Diese Geräte bieten einen guten Kompromiss, da sie an verschiedenen HiPath-Telefonanlagen als Systemmobilteil funktionieren, gleichzeitig aber auch an der Fritzbox ein Anlagenmenü bekommen.
Demnächst (Gigaset N510 IP Pro), damit soll das alles besser funktionieren, man hat dann auch nicht die 3 Gedenksekunden als Wahlende-Erkennung.

Mit dem Umstieg auf den Raspberry Pi 3 habe ich das System komplett neu und damit auch auf aktuellsten Versionen aufgesetzt. Bei Asterisk entschied ich mich für die aktuelle LTS-Version, also Version 13. Bei Asterisk ist derzeit die Migration vom aktuellen SIP-Channeldriver chan_sip zu PJSIP im Gange. Ich entschied mich dafür, gleich für die Zukunft gerüstet zu sein und den neuen Stack zu verwenden. Da ich im Internet keine Einrichtungsbeispiele für mein Setup finden konnte, habe ich die Konfiguration meines Asterisk in einem separaten Beitrag dokumentiert.

LDAP

Alle Telefone sollen auf dasselbe, einfach zu administrierende Telefonbuch zugreifen können. Auf dem Raspberry Pi läuft daher ein handelsüblicher OpenLDAP-Server. Für die Administration des Telefonbuchs nutze ich den Teil eines Skripts, das ich im IP-Phone-Forum gefunden habe. Dieses Skript stellt ein Telefonbuch für Cisco-Telefone zur Verfügung und nutzt dafür eine Möglichkeit, das Telefonbuch der Fritzbox als XML zu laden. Das mache ich mir zunutze: ich lade das Telefonbuch per Cronjob runter, konvertiere es per XSLT in LDIF und beschicke damit den LDAP-Server. So haben alle das gleiche Telefonbuch und ich kann es bequem mit dem Webinterface der Fritzbox administrieren.

FHEM

Unsere Waschmaschine steht in einem Gemeinschafts-Waschkeller. Der Strom wird über die einzelnen Haushalte über einen sogenannten Haushaltsumschalter geschaltet, das heißt, es kann immer nur ein Haushalt gleichzeitig waschen. Das führt dazu, dass die Möglichkeit zur Nutzung der Waschmaschine immer nur zeitweise gegeben ist. Dazu kommt, dass die Waschmaschine zwar eine Restzeitanzeige besitzt, die aber eher ein Schätzeisen ist. Was sie besonders gut kann: 7 Minuten als Restzeit anzeigen, die dann über 30 Minuten dauern. Somit besteht großes Interesse, genau dann mitzubekommen, wenn die Waschmaschine fertig ist.
Ich habe hier eine elegante und minimalinvasive Lösung auf der Basis von Homematic-Komponenten und dem freien Heimautomationsserver fhem gefunden.
Dazu wird eine Funksteckdose Homematic 130248 eingesetzt, die eine eingebaute Leistungsmessung hat. Der Regelkreis ist einfach: wird über 50W verbraucht, wird eine Zustandsvariable auf „ON“ gesetzt. Wird länger als 5 Minuten weniger als 5W verbraucht, wird der Zustand auf „OFF“ gesetzt und eine Push-Nachricht aufs Handy geschickt, über das offene Framework „Pushover“.
Ich habe das dann erweitert und lasse auf einem Snom-Telefon ein Bild anzeigen und eine Taste fängt an zu blinken.

Davical

Schließlich entstand auch die Notwendigkeit gemeinsamer Kalender. Diese sollten „cloudlos“ umgesetzt werden. Somit wurde ein einfacher davical-Server installiert. Wann immer ein Gerät im heimischen WLAN eingebucht ist, erfolgt eine Synchronisierung.