Saya melanjutkan serangkaian artikel pendek tentang penciptaan "Rumah Pintar" dan petunjuk langkah demi langkah untuk pemasangan / konfigurasi sendiri.
Tetapi sekarang ini terutama tentang Freeswitch dan IP telephony.
Pada bulan Agustus, pengembang platform telepon IP VoIP terbuka FreeSWITCH, Signalwire menerbitkan rilis publik untuk versi perangkat lunak baru - 1.8. (1.8.2 telah dirilis).
Sehubungan dengan peluncuran versi platform IP telephony Freesfitch 1.8 ini, ada keputusan untuk menginstalnya di Raspberry 3 dengan gambar dasar dari sistem rumah pintar MajorDoMo yang diinstal, di bawah sistem operasi Raspbian (Debian 9 Stretch) dengan beberapa elemen otomasi rumah.

Di bawah potongan, deskripsi menginstal platform VoIP dari sumber dengan beberapa catatan dan penjelasan.
Tiga bulan setelah rilis dan pengumuman rilis publik versi 1.8 dalam panduan instalasi untuk Debian 9 di situs web resmi, FreeSWITCH saat ini menerbitkan instruksi instalasi.
β
Menginstal FreeSWITCH 1.8Namun, saya tidak dapat menginstal salah satu opsi dalam instruksi pada Rasberry saya. Belum lama ini ada peringatan tentang ketidakcocokan dan harus diinstal dari kode sumber. Juga dalam dokumentasi resmi Anda dapat menemukan instalasi pada Raspberry Pi, tetapi sudah usang. Oleh karena itu, saya akan menjelaskan opsi instalasi saya pada Raspberry P, membuat instruksi langkah demi langkah kecil. Pada artikel sebelumnya saya mencoba menggambarkan bagaimana dan di mana mulai bekerja dengan terminal dan baris perintah, oleh karena itu, jika sedikit membingungkan, saya sarankan membaca artikel sebelumnya (tautan akan diberikan di akhir artikel). Prinsipnya sama, apakah itu - itu berhasil, memeriksa ulang, menyiapkan instruksi sehingga putra tertua dapat mengulang dan memahami sedikit apa dan bagaimana yang dia lakukan.
Menginstal FreeSWITCH 1.8.2 dari sumber
Terhubung ke Raspberry via Putty.
Untuk menghindari pengetikan sudo sebelum setiap perintah, jalankan perintah sudo βi. Setelah itu, kami bekerja dengan hak administrator sistem, mereka secara otomatis beralih ke direktori root. Untuk mengetahui direktori tempat Anda berada, Anda dapat menjalankan perintah Pwd.
Memperbarui sistem:
apt-get update apt-get upgrade
Buka direktori home, lalu unduh freeswitch versi 1.8.2:
cd /home/pi git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.8.2 freeswitch
Setelah pengunduhan selesai, folder sumber Freswitch muncul di direktori home. Buka (path lengkap: / home / pi / freeswitch) dan instal program yang diperlukan untuk membangun dari sumber dan buka direktori freeswitch:
cd freeswitch apt-get install autoconf libtool libtool-bin
Sebelum mengkompilasi program dari sumber, Anda harus terlebih dahulu merakit konfigurator, jalankan:
./bootstrap.sh βj
Platform Freeswitch memiliki struktur modular, jadi sebelum menginstal, edit daftar modul yang diperlukan:
nano /freeswitch/modules.conf
Sebagian besar, daftar tetap sebagai default, saya telah menonaktifkan beberapa codec video, opal, png.
Modul bahasa Rusia yang terhubung, titik akhir mod curl, mod_portaudio,
Instal dependensi untuk konfigurasi dan perakitan server. Kami menggunakan flag βy sehingga tim secara otomatis menjawab Ya untuk semua pertanyaan sistem:
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
Paket yang Anda instal tergantung pada plug-in. Jika sebuah paket hilang, kesalahan dapat muncul dalam dua langkah berikutnya.
Konfigurasi dan pemasangan server FreeSWITCH
Setelah itu, Anda perlu menjalankan konfigurator untuk memeriksa semua dependensi, serta menginstal opsi build tambahan. Configurator akan membangun Makefile berdasarkan pada pengetahuan yang diperoleh dan file makefile.am.
Kami menjalankan perintah:
./configure --enable-system-lua
Jika semuanya berjalan dengan baik, kami mendapatkan pesan berikut:

Mari kita lanjutkan ke instalasi itu sendiri:
make make install
Jika hasilnya positif, Freeswitch diinstal secara default di
/usr/local/freeswitch
; di akhir konfigurasi, kita dapat melihat daftar dan lokasi direktori FS.
Jika kesalahan terjadi selama instalasi atau konfigurasi, seperti mod_lua.cpp: 37: 17: kesalahan fatal: lua.h: Tidak ada file atau direktori seperti itu #include "lua.h", Anda perlu menginstal perpustakaan yang diperlukan menggunakan perintah pencarian. Saya tidak dapat menginstal freeswitch dengan paket liblua5.3-0 liblua5.3-dev, saya harus menginstal versi 5.2. Apt search lua

Instal file suara dengan dukungan bahasa Rusia:
make cd-sounds-install make cd-sounds-ru-install cd-moh-install
Proses instalasi dapat diselesaikan.
Untuk mencegah file database kecil ditulis ke memori flash dan meningkatkan masa pakainya, kami menambahkan baris dalam file / etc / fstab:
tmpfs /usr/local/freeswitch/db tmpfs defaults 0 0
Setelah restart, file sementara yang dibuat oleh FS akan ditulis ke RAM.
Pengaturan sistem setelah menginstal FreeSWITCH.
Ada peringatan dalam dokumentasi untuk FreeSWITCH, jadi saya tidak menyarankan mencoba menjalankan FS segera setelah instalasi.
** Perhatian! Jika Anda menginstal FreeSWITCH dari sumber, Anda perlu mengatur izin pada direktori dan file. Jika Anda menjalankan FreeSWITCH setelah instalasi, itu akan mulai secara default sebagai 'root'. Izin direktori harus diubah sebelum peluncuran awal. **Buat pengguna baru dan atur izin dan ubah pemilik ke file FreeSwitch
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/*
Selanjutnya, salin file luncurkan otomatis ke systemd, ganti namanya, ubah hak akses.
FreeSWITCH hadir dengan file systemd, yang, jika dikonfigurasi dengan benar saat boot, memonitor FreeSWITCH dan memulainya sebagai daemon, restart jika FS tidak berfungsi.
cp /home/pi/freeswitch/debian/freeswitch-systemd.freeswitch.service /etc/systemd/system/freeswitch.service chmod +x /etc/systemd/system/freeswitch.service
Kami membuat tautan ke file peluncuran dan membuat tautan ke file peluncuran konsol FS:
ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
Tambahkan layanan freeswitch ke pengisian otomatis:
systemctl enable freeswitch systemctl daemon-reload systemctl start freeswitch
Setelah itu, FS saya masih belum mulai, saya mendapat kesalahan dengan file * .pid, saya baru saja mengedit file autostart
nano /etc/systemd/system/freeswitch.serviceMengomentari baris berikut dalam file:
# PIDFile = / run / freeswitch / freeswitch.pid.
Untuk berjaga-jaga, kami membebani Raspberry (seperti yang Anda ingat, saat kami bekerja dari root):
reboot
Setelah restart, kami memberikan perintah lagi yang kami masukkan melalui sudo -i, jalankan htop dan lihat proses FreeSWITCH yang sedang berjalan.
Sedikit tentang pengaturan awal:
Setelah instalasi, FreeSWITCH siap bekerja, secara default ada 20 pelanggan dengan angka 1000-1019. Kata sandi default untuk pelanggan VoIP ditentukan dalam file
/usr/local/freeswitch/conf/vars.xml dan 1234. Direktori
/ usr / local / freeswitch / conf / derectory / default berisi 20 file xml, masing-masing bertanggung jawab untuk pelanggan dengan nomor yang sesuai. Kita dapat mengatur kata sandi untuk setiap pelanggan, mengubah nama file dan data dalam isinya, kita dapat mengubah penomoran dan kapasitas pelanggan.
Jika Anda perlu melakukan ini, maka setelah mengedit file yang Anda butuhkan untuk memulai konsol
fs_cli
:
fs_cli
dan di jendela konsol kami memberikan perintah
reloadxml
. Dengan perintah ini, FS membaca ulang file XML dan menerima perubahan.

Keluar dari konsol:
ctrl+D
atau dengan mengetik
/exit
atau
/quit
Sekarang mari kita coba menghubungkan pelanggan IP. Untuk memeriksa koneksi, saya menggunakan PC di Windows: MicroSIP dan PhonerLite softphones dan pada ponsel yang menjalankan Android CSipSimle OS, pengaturannya adalah sebagai berikut (nama akun - nomor telepon, server SIP - alamat Raspberry kami:
Ikon hijau di bilah status bawah program ini berarti bahwa pelanggan diotorisasi di server VoIP kami dan siap untuk berkomunikasi.

Dengan menekan nomor, kita dapat memeriksa panggilan pelanggan dan beberapa fungsi lain dari IP PBX.
Tapi saya tidak melihat aplikasi khusus di rumah untuk kantor PBX khas. Mari kita coba gunakan fitur FreeSWITCH yang lebih canggih.
Freeswitch memiliki struktur modular, plug-in dapat dilihat dalam file
modules.conf.xml
Mari kita edit, saya mematikan codec video dan menghubungkan modul bahasa Rusia serta mod_xml_rpc.
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml</> <source><!-- -->
di baris sebelum dan sesudah nama modul. Nonaktifkan - sebaliknya, dengan meletakkan simbol-simbol ini, contoh kecil, modul pertama aktif, yang kedua dinonaktifkan:
<load module="mod_xml_rpc"/> <!-- <load module="mod_xml_curl"/> -->
Setelah itu, jika Anda ingin mengubah, kami mengedit pengaturan sederhana (port, pengguna, kata sandi) dari modul itu sendiri dalam file xml_rpc.conf.xml, yang terletak di direktori yang sama.
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
Default: user - freeswitch, kata sandi berfungsi, port 8080.
Kami membebani frisvitch atau server itu sendiri. Ada beberapa cara untuk melakukan ini: reboot seluruh sistem (reboot) menggunakan perintah kontrol layanan:
systemctl stop freeswitch
kemudian
systemctl start freeswitch
atau
systemctl restart freeswitch
.
Setelah itu, ketikkan
http://IP_RASPBERRY:8080/portal/index.html#
di browser dan masuk di bawah freeswitch pengguna dengan kata sandi berfungsi, kita masuk ke panel admin FreesWITCH kecil. Kita dapat melihat status, pengguna terdaftar, dll.

Mari kita coba sedikit lebih jauh:
Mengetik permintaan di browser menampilkan status FS:
http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal

Sintaksnya cukup sederhana, jika perintah berisi lebih dari satu kata, maka kata pertama dan kedua dipisahkan oleh tanda tanya, dan sisanya oleh spasi.
Mari kita coba jalankan perintah ini dari MajorDoMo: dari halaman utama "Smart Home", buka
Control Panel - ConsoleDi dalamnya kita ketik perintah:
GetURL("http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal")
Sebagai tanggapan, kami mendapatkan status server VoIP kami.

Sekarang coba percobaan berikut:
Idenya adalah untuk memulai panggilan (menggunakan fungsi asal) dari sisi Smart Home ke pelanggan dengan nomor 1001 (MicroSip), dan kemudian mentransfer panggilan yang sudah selesai ke paket panggilan untuk panggilan keluar ke 1002 (PhonerLite). Perintah API terlihat seperti ini: pengguna asli / 1001 1002 XML default memulai panggilan ke nomor konsol 1001, setelah handset diambil (diambil secara otomatis), nomor dan 1002 dipanggil dari paket panggilan default.
Kami menerjemahkannya ke formulir yang dapat dimengerti untuk MajorDoMo dan browser:
GetURL("http://freeswitch:works@192.168.43.60:8080/webapi/originate?user/1001%201002%20XML%20default")
Pertama, satu softphone berdering, setelah beberapa detik ada panggilan ke yang kedua.

Sebagai kesimpulan, atau implementasi praktis kecil
Belum lama ini saya memiliki kebutuhan untuk menjalin komunikasi dengan seseorang yang secara fisik tidak dapat menelepon (dial) di ponsel. Saat ini, kebutuhan untuk ini telah menghilang, tetapi masih memutuskan untuk memeriksa kelayakannya. Menggunakan gateway VoIP (solusi yang lebih terjangkau di penghentian FXS atau gateway GSM yang lebih mahal), tombol nirkabel "smart home" dapat diterapkan jika Anda mau.
Opsi kedua: Sistem rumah pintar MajorDoMo memiliki asisten suara Alice. Sekarang Anda dapat mencoba menghubungkan "Rumah Pintar" dengan pemilik dan ponselnya melalui jaringan publik.
Beberapa tautan
β
Situs web ClueCon dari pengembang FreeSWITCHβ
dokumentasi berbahasa Inggris FreeSWITCHβ
Situs pengembang MajorDoMoβ
Bagian satu: Petunjuk langkah-demi-langkah kecil untuk menginstal sistem operasi Smart Home berdasarkan pada komputer papan-tunggal Raspberry, modul Z-Way RaZberry dan perangkat lunak MajorDoMoβ
Bagian dua: lanjutan: modul Z-Way RaZberry dan perangkat lunak MajorDoMoβ
Bagian Tiga: Terus Membuat Rumah Cerdas Nirkabel