Ich setze eine kurze Reihe von Artikeln über die Erstellung von "Smart Home" und schrittweise Anleitungen zur Selbstinstallation / Konfiguration fort.
Aber jetzt geht es hauptsächlich um Freeswitch und IP-Telefonie.
Im August veröffentlichte der Entwickler der offenen VoIP-IP-Telefonieplattform FreeSWITCH, Signalwire, eine öffentliche Version der neuen Softwareversion 1.8. (1.8.2 wurde bereits veröffentlicht).
Im Zusammenhang mit der Veröffentlichung dieser Version der IP-Telefonieplattform Freesfitch 1.8 wurde beschlossen, sie auf Raspberry 3 mit dem Basisimage des MajorDoMo-Smart-Home-Systems unter dem Raspbian-Betriebssystem (Debian 9 Stretch) mit einigen Elementen der Heimautomation zu installieren.

Unter dem Schnitt eine Beschreibung der Installation einer VoIP-Plattform aus dem Quellcode mit einigen Hinweisen und Erklärungen.
Drei Monate nach der Veröffentlichung und Ankündigung der Veröffentlichung von Version 1.8 im Installationshandbuch für Debian 9 auf der offiziellen Website veröffentlichte FreeSWITCH derzeit Installationsanweisungen.
→
Installieren von FreeSWITCH 1.8Ich konnte jedoch keine der Optionen in den Anweisungen auf meinem Rasberry installieren. Vor nicht allzu langer Zeit gab es eine Warnung vor Inkompatibilitäten und musste aus Quellcodes installiert werden. Auch in der offiziellen Dokumentation finden Sie die Installation auf dem Raspberry Pi, die jedoch bereits veraltet ist. Daher werde ich meine Installationsoption auf dem Raspberry P beschreiben und eine kleine Schritt-für-Schritt-Anleitung machen. In früheren Artikeln habe ich versucht zu beschreiben, wie und wo mit dem Terminal und der Befehlszeile gearbeitet werden soll. Wenn dies etwas unverständlich ist, empfehle ich, die vorherigen Artikel zu lesen (Links finden Sie am Ende des Artikels). Das Prinzip ist das gleiche, hat es getan - es hat funktioniert, doppelt überprüft, Anweisungen vorbereitet, damit der älteste Sohn ein wenig wiederholen und verstehen konnte, was und wie er tat.
Installieren von FreeSWITCH 1.8.2 von der Quelle
Verbinde dich mit Himbeere über Putty.
Führen Sie den Befehl sudo –i aus, um zu vermeiden, dass Sie vor jedem Befehl sudo eingeben. Danach arbeiten wir mit den Rechten des Systemadministrators, sie wechseln automatisch in das Stammverzeichnis. Um herauszufinden, in welchem Verzeichnis Sie sich befinden, können Sie den Befehl Pwd ausführen.
System aktualisieren:
apt-get update apt-get upgrade
Gehen Sie zum Home-Verzeichnis und laden Sie die Freeswitch-Version 1.8.2 herunter:
cd /home/pi git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.8.2 freeswitch
Nach Abschluss des Downloads wird der Freswitch-Quellordner im Home-Verzeichnis angezeigt. Gehen Sie dorthin (vollständiger Pfad: / home / pi / freeswitch) und installieren Sie die erforderlichen Programme zum Erstellen aus dem Quellcode. Wechseln Sie in das Freeswitch-Verzeichnis:
cd freeswitch apt-get install autoconf libtool libtool-bin
Bevor Sie ein Programm aus dem Quellcode kompilieren, müssen Sie zuerst den Konfigurator zusammenstellen und Folgendes ausführen:
./bootstrap.sh –j
Die Freeswitch-Plattform ist modular aufgebaut. Bearbeiten Sie daher vor der Installation die Liste der erforderlichen Module:
nano /freeswitch/modules.conf
Zum größten Teil ist die Liste standardmäßig erhalten geblieben. Ich habe einige Video-Codecs, Opal, PNG deaktiviert.
Verbundenes russisches Sprachmodul, Mod Curl-Endpunkte, mod_portaudio,
Installieren Sie Abhängigkeiten für die Serverkonfiguration und -assemblierung. Wir verwenden das Flag –y, damit das Team alle Systemfragen automatisch mit Ja beantwortet:
apt-get install -y g++ zlib1g-dev libjpeg9 pkg-config sqlite3 libsqlite3-dev libcurl4-openssl-dev libpcre3 libpcre3-dev libspeexdsp-dev libldns-dev libedit-dev libtiff-dev apt-get install -y yasm lua5.2 lua5.2-dev libsndfile-dev portaudio19-dev
Die von Ihnen installierten Pakete hängen von den Plug-Ins ab. Wenn ein Paket fehlt, kann in den nächsten beiden Schritten ein Fehler auftreten.
Konfiguration und Installation des FreeSWITCH-Servers
Danach müssen Sie den Konfigurator ausführen, um nach allen Abhängigkeiten zu suchen und zusätzliche Build-Optionen zu installieren. Der Konfigurator erstellt das Makefile basierend auf dem erworbenen Wissen und der Datei makefile.am.
Wir führen den Befehl aus:
./configure --enable-system-lua
Wenn alles gut gegangen ist, erhalten wir die folgende Meldung:

Fahren wir mit der Installation selbst fort:
make make install
Wenn das Ergebnis positiv ist, wird Freeswitch standardmäßig im
/usr/local/freeswitch
. Am Ende der Konfiguration können wir die Liste und den Speicherort der FS-Verzeichnisse anzeigen.
Wenn während der Installation oder Konfiguration ein Fehler aufgetreten ist, z. B. mod_lua.cpp: 37: 17: Schwerwiegender Fehler: lua.h: Keine solche Datei oder kein solches Verzeichnis #include "lua.h", müssen Sie die erforderlichen Bibliotheken mit dem Suchbefehl installieren. Ich konnte freeswitch nicht mit liblua5.3-0 liblua5.3-dev-Paketen installieren, ich musste Version 5.2 installieren. Apt search lua

Installieren Sie Audiodateien mit russischer Sprachunterstützung:
make cd-sounds-install make cd-sounds-ru-install cd-moh-install
Der Installationsvorgang kann abgeschlossen werden.
Um zu verhindern, dass kleine Datenbankdateien in den Flash-Speicher geschrieben werden und dessen Lebensdauer verlängert wird, fügen wir die Zeile in die Datei / etc / fstab ein:
tmpfs /usr/local/freeswitch/db tmpfs defaults 0 0
Nach dem Neustart werden von FS erstellte temporäre Dateien in den RAM geschrieben.
Systemeinrichtung nach der Installation von FreeSWITCH.
In der Dokumentation zu FreeSWITCH ist eine Warnung enthalten. Ich empfehle daher nicht, FS sofort nach der Installation auszuführen.
** Achtung! Wenn Sie FreeSWITCH von der Quelle installiert haben, müssen Sie Berechtigungen für Verzeichnisse und Dateien festlegen. Wenn Sie FreeSWITCH nach der Installation ausführen, wird es standardmäßig als "root" gestartet. Die Verzeichnisberechtigungen müssen vor dem ersten Start geändert werden. **Erstellen Sie einen neuen Benutzer, legen Sie Berechtigungen fest und ändern Sie die Eigentümer in FreeSwitch-Dateien
cd /usr/local groupadd freeswitch adduser --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH open source softswitch" --ingroup freeswitch freeswitch --disabled-password chown -R freeswitch:freeswitch /usr/local/freeswitch/ chmod -R ug=rwX,o= /usr/local/freeswitch/ chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*
Kopieren Sie als Nächstes die Datei für den automatischen Start nach systemd, benennen Sie sie um und ändern Sie die Zugriffsrechte.
FreeSWITCH wird mit einer systemd-Datei geliefert, die bei korrekter Konfiguration während des Startvorgangs FreeSWITCH überwacht und als Daemon startet und neu startet, wenn FS nicht funktioniert.
cp /home/pi/freeswitch/debian/freeswitch-systemd.freeswitch.service /etc/systemd/system/freeswitch.service chmod +x /etc/systemd/system/freeswitch.service
Wir stellen einen Link zur Startdatei her und erstellen einen Link zur Startdatei der FS-Konsole:
ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
Fügen Sie dem Autoload den Freeswitch-Dienst hinzu:
systemctl enable freeswitch systemctl daemon-reload systemctl start freeswitch
Danach wurde mein FS immer noch nicht gestartet. Ich habe einen Fehler mit einer * .pid-Datei erhalten. Ich habe gerade die Autostart-Datei
nano /etc/systemd/system/freeswitch.service bearbeitetKommentieren Sie die folgende Zeile in der Datei aus:
# PIDFile = / run / freeswitch / freeswitch.pid.
Nur für den Fall, dass wir Raspberry überladen (wie Sie sich erinnern, während wir von root aus arbeiten):
reboot
Nach dem Neustart geben wir den Befehl erneut ein, den wir über sudo -i eingeben, führen htop aus und sehen die laufenden FreeSWITCH-Prozesse.
Ein bisschen über die Grundeinstellungen:
Nach der Installation ist FreeSWITCH betriebsbereit. Standardmäßig gibt es 20 Abonnenten mit den Nummern 1000-1019. Das Standardkennwort für VoIP-Abonnenten ist in der Datei
/usr/local/freeswitch/conf/vars.xml angegeben und lautet 1234. Das Verzeichnis
/ usr / local / freeswitch / conf / derectory / default enthält 20 XML-Dateien, von denen jede für den Abonnenten verantwortlich ist mit der entsprechenden Nummer. Wir können für jeden Abonnenten ein Passwort festlegen, indem wir den Dateinamen und die Daten in seinem Inhalt ändern. Wir können die Nummerierung und Kapazität der Abonnenten ändern.
Wenn Sie dies tun müssen, müssen Sie nach dem Bearbeiten der Dateien die FreeSwitch-Konsole starten:
fs_cli
und im Konsolenfenster geben wir den Befehl
reloadxml
. Mit diesem Befehl liest FS die XML-Dateien erneut und akzeptiert die Änderungen.

Beenden Sie die Konsole:
ctrl+D
oder geben Sie
/exit
oder
/quit
Versuchen wir nun, IP-Teilnehmer zu verbinden. Um die Verbindung zu überprüfen, habe ich auf einem PC unter Windows: MicroSIP- und PhonerLite-Softphones und auf einem Mobiltelefon mit Android CSipSimle OS die folgenden Einstellungen vorgenommen (Kontoname - Telefonnummer, SIP-Server - Adresse unserer Himbeere:
Ein grünes Symbol in der unteren Statusleiste dieser Programme bedeutet, dass der Teilnehmer auf unserem VoIP-Server autorisiert und zur Kommunikation bereit ist.

Durch Wählen der Nummer können wir den Anruf des Teilnehmers und einige andere Funktionen der IP-PBX überprüfen.
Zu Hause sehe ich jedoch keine spezielle Anwendung für eine typische Büro-Telefonanlage. Versuchen wir, erweiterte Funktionen von FreeSWITCH zu verwenden.
Freeswitch ist modular aufgebaut, Plug-Ins können in der Datei angezeigt werden
modules.conf.xml
Lassen Sie es uns bearbeiten, ich habe die Video-Codecs ausgeschaltet und das russische Sprachmodul sowie mod_xml_rpc angeschlossen.
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml</> <source><!-- -->
in der Zeile vor und nach dem Namen des Moduls. Deaktivieren - im Gegenteil, wenn Sie diese Symbole setzen, ein kleines Beispiel, ist das erste Modul aktiviert, das zweite ist deaktiviert:
<load module="mod_xml_rpc"/> <!-- <load module="mod_xml_curl"/> -->
Wenn Sie danach Änderungen vornehmen möchten, bearbeiten wir die einfachen Einstellungen (Port, Benutzer, Kennwort) des Moduls selbst in der Datei xml_rpc.conf.xml, die sich im selben Verzeichnis befindet.
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
Standard: Benutzer - Freischalter, Passwort funktioniert, Port 8080.
Wir überlasten entweder Frisvitch oder den Server selbst. Es gibt verschiedene Möglichkeiten, dies zu tun: Starten Sie das gesamte System neu (Neustart) mit den Dienststeuerungsbefehlen:
systemctl stop freeswitch
dann
systemctl start freeswitch
oder
systemctl restart freeswitch
.
http://IP_RASPBERRY:8080/portal/index.html#
in den Browser eingeben und unter dem Benutzer freeswitch mit dem Kennwort arbeiten, gelangen Sie in das kleine FreesWITCH-Administrationsfenster. Wir können den Status, registrierte Benutzer usw. sehen.

Versuchen wir noch etwas weiter zu gehen:
Wenn Sie eine Anfrage in den Browser eingeben, wird der Status von FS angezeigt:
http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal

Die Syntax ist recht einfach: Wenn der Befehl mehr als ein Wort enthält, werden das erste und das zweite Wort durch ein Fragezeichen und der Rest durch Leerzeichen getrennt.
Versuchen wir, diesen Befehl von MajorDoMo aus auszuführen: Gehen Sie von der Hauptseite von "Smart Home" zur
Systemsteuerung - KonsoleDarin geben wir den Befehl ein:
GetURL("http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal")
Als Antwort erhalten wir den Status unseres VoIP-Servers.

Versuchen Sie nun das folgende Experiment:
Die Idee ist, einen Anruf (unter Verwendung der Ursprungsfunktion) von der Seite des Smart Home an den Teilnehmer mit der Nummer 1001 (MicroSip) zu initiieren und dann den abgeschlossenen Anruf an den Wählplan für ausgehende Anrufe an 1002 (PhonerLite) weiterzuleiten. Der API-Befehl sieht folgendermaßen aus: Ursprungsbenutzer / 1001 1002 XML-Standard initiiert einen Anruf an die Konsolennummer 1001, nachdem das Mobilteil angehoben (automatisch angehoben) wurde, werden die Nummer und 1002 aus dem Standardwählplan aufgerufen.
Wir übersetzen es in eine verständliche Form für MajorDoMo und den Browser:
GetURL("http://freeswitch:works@192.168.43.60:8080/webapi/originate?user/1001%201002%20XML%20default")
Zuerst klingelt ein Softphone, nach einigen Sekunden wird das zweite angerufen.

Als Schlussfolgerung oder kleine praktische Umsetzung
Vor nicht allzu langer Zeit musste ich eine Kommunikation mit einer Person herstellen, die physisch nicht in der Lage war, auf einem Mobiltelefon anzurufen (zu wählen). Im Moment ist die Notwendigkeit dafür verschwunden, aber es wurde immer noch beschlossen, die Machbarkeit zu überprüfen. Mit einem VoIP-Gateway (eine kostengünstigere Lösung bei FXS-Terminierungen oder einem teureren GSM-Gateway) kann auf Wunsch die drahtlose Smart-Home-Taste implementiert werden.
Zweite Option: Das MajorDoMo Smart Home-System verfügt über eine Sprachassistentin Alice. Jetzt können Sie versuchen, das "Smart House" über öffentliche Netzwerke mit dem Eigentümer und seinem Mobiltelefon zu verbinden.
Einige Links
→
ClueCon-Website des FreeSWITCH-Entwicklers→
Englischsprachige Dokumentation FreeSWITCH→
Entwicklerseite MajorDoMo→
Erster Teil: Eine kleine Schritt-für-Schritt-Anleitung zur Installation des Smart Home-Betriebssystems basierend auf einem Raspberry-Einplatinencomputer, einem Z-Way RaZberry-Modul und der MajorDoMo-Software→
Teil zwei: Fortsetzung: Z-Way RaZberry-Modul und MajorDoMo-Software→
Dritter Teil: Fortsetzung der Erstellung eines drahtlosen Smart Home