我将继续撰写有关“智能家居”创建的简短系列文章,以及有关自我安装/配置的分步说明。
但是现在主要是关于Freeswitch和IP电话。
8月,开放式VoIP IP电话平台FreeSWITCH的开发者Signalwire发布了新软件版本1.8的公开发行版。 (1.8.2已经发布)。
为了与该版本的IP电话平台Freesfitch 1.8的发行版相关联,决定将其安装在Raspberry 3上,并安装了MajorDoMo智能家庭系统的基本映像,该系统在具有一些家庭自动化元素的Raspbian操作系统(Debian 9 Stretch)下。

下面是从源头开始安装VoIP平台的说明,并附带一些注释和解释。
在官方网站上发布和宣布Debian 9安装指南中的1.8版已公开发布三个月后,FreeSWITCH当前已发布了安装说明。
→
安装FreeSWITCH 1.8但是,我无法在Rasberry上的说明中安装任何选项。 不久前,出现了有关不兼容的警告,必须从源代码中进行安装。 同样在官方文档中,您可以在Raspberry Pi上找到安装,但是已经过时了。 因此,我将在Raspberry P上描述我的安装选项,并做一些小的逐步说明。 在以前的文章中,我尝试描述了如何以及从何处开始使用终端和命令行,因此,如果有点难以理解,我建议您阅读以前的文章(链接将在文章末尾给出)。 原理是一样的,确实做到了–它起作用,经过仔细检查,准备了指示,以便长子可以重复一遍,并了解他的所作所为和工作方式。
从源代码安装FreeSWITCH 1.8.2
通过腻子连接到Raspberry。
为了不在每个命令前键入sudo,请执行sudo –i命令。 之后,我们以系统管理员的权限工作,他们自动切换到根目录。 要找出您所在的目录,可以运行Pwd命令。
更新系统:
apt-get update apt-get upgrade
转到主目录,然后下载freeswitch版本1.8.2:
cd /home/pi git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.8.2 freeswitch
下载完成后,Freswitch源文件夹出现在主目录中。 转到它(完整路径:/ home / pi / freeswitch)并安装用于从源代码构建所需的程序,然后转到freeswitch目录:
cd freeswitch apt-get install autoconf libtool libtool-bin
从源代码编译程序之前,必须首先汇编配置程序,然后运行:
./bootstrap.sh –j
Freeswitch平台具有模块化结构,因此在安装之前,请编辑必需模块的列表:
nano /freeswitch/modules.conf
在大多数情况下,该列表仍保持默认状态,我禁用了一些视频编解码器,蛋白石,png。
连接的俄语模块,mod curl端点,mod_portaudio,
安装服务器配置和组装的依赖项。 我们使用–y标志,以便团队自动回答所有系统问题:
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
您安装的软件包取决于插件。 如果缺少软件包,则在接下来的两个步骤中可能会出现错误。
FreeSWITCH服务器的配置和安装
之后,您需要运行配置器以检查所有依赖项,并安装其他构建选项。 配置器将基于所获取的知识和makefile.am文件来构建Makefile。
我们执行命令:
./configure --enable-system-lua
如果一切顺利,我们将收到以下消息:

让我们继续安装本身:
make make install
如果结果是肯定的,则Freeswitch默认安装在
/usr/local/freeswitch
;在配置结束时,我们可以查看FS目录的列表和位置。
如果在安装或配置过程中发生错误,例如mod_lua.cpp:37:17:致命错误:lua.h:没有这样的文件或目录#include“ lua.h”,则需要使用search命令安装必要的库。 我无法使用liblua5.3-0 liblua5.3-dev软件包安装freeswitch,我必须安装5.2版。 Apt search lua

安装具有俄语支持的声音文件:
make cd-sounds-install make cd-sounds-ru-install cd-moh-install
安装过程可以完成。
为了防止将小型数据库文件写入闪存并延长其使用寿命,我们在/ etc / fstab文件中添加以下行:
tmpfs /usr/local/freeswitch/db tmpfs defaults 0 0
重新启动后,由FS创建的临时文件将被写入RAM。
安装FreeSWITCH之后的系统设置。
FreeSWITCH的文档中有警告,因此,我不建议您尝试在安装后立即运行FS。
**注意! 如果从源代码安装FreeSWITCH,则需要设置目录和文件的权限。 如果在安装后运行FreeSWITCH,则默认情况下它将以“ root”启动。 在首次启动之前,必须更改目录权限。创建一个新用户并设置权限并将所有者更改为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/*
接下来,将自动启动文件复制到systemd,重命名它,更改访问权限。
FreeSWITCH带有一个systemd文件,如果在引导过程中配置正确,它将监视FreeSWITCH并将其作为守护程序启动,如果FS不起作用,则重新启动它。
cp /home/pi/freeswitch/debian/freeswitch-systemd.freeswitch.service /etc/systemd/system/freeswitch.service chmod +x /etc/systemd/system/freeswitch.service
我们创建一个指向启动文件的链接,并创建一个指向FS控制台的启动文件的链接:
ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
添加freeswitch服务以自动加载:
systemctl enable freeswitch systemctl daemon-reload systemctl start freeswitch
此后,我的FS仍然无法启动,* * .pid文件出现错误,我只编辑了自动启动文件
nano /etc/systemd/system/freeswitch.service注释掉文件中的以下行:
#PIDFile = /运行/ freeswitch / freeswitch.pid。
以防万一,我们会使Raspberry重载(如您所记得,当我们从root用户工作时):
reboot
重新启动后,我们再次通过sudo -i输入命令,运行htop并查看正在运行的FreeSWITCH进程。
关于初始设置的一些知识:
安装后,FreeSWITCH准备就绪,默认情况下有20个用户,编号为1000-1019。 VoIP订户的默认密码在
/usr/local/freeswitch/conf/vars.xml文件中指定,密码为1234。目录
/ usr / local / freeswitch / conf / derectory / default包含20个xml文件,每个文件都由订户负责与相应的号码。 我们可以为每个用户设置密码,更改其内容中的文件名和数据,我们可以更改用户编号和容量。
如果需要执行此操作,则在编辑文件后,需要启动FreeSwitch控制台:
fs_cli
并在控制台窗口中提供
reloadxml
命令。 使用此命令,FS重新读取XML文件并接受更改。

退出控制台:
ctrl+D
或通过键入
/exit
或
/quit
现在,让我们尝试连接IP用户。 为了检查连接,我在Windows下的PC上使用了MicroSIP和PhonerLite软电话,并在运行Android CSipSimle OS的手机上使用了以下设置(帐户名-电话号码,SIP服务器-我们的Raspberry地址:
这些程序底部状态栏中的绿色图标表示该订户已在我们的VoIP服务器上获得授权并可以进行通信。

通过拨打该号码,我们可以检查用户的呼叫以及IP PBX的其他功能。
但是我看不到典型的办公室PBX在家里有什么特殊的应用。 让我们尝试使用FreeSWITCH的更多高级功能。
Freeswitch具有模块化结构,可以在文件中查看插件
modules.conf.xml
让我们对其进行编辑,我关闭了视频编解码器,并连接了俄语模块和mod_xml_rpc。
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml</> <source><!-- -->
在模块名称之前和之后的行中。 禁用-相反,将这些符号放在一个小例子中,第一个模块打开,第二个模块禁用:
<load module="mod_xml_rpc"/> <!-- <load module="mod_xml_curl"/> -->
之后,如果要更改,我们将在同一目录下的xml_rpc.conf.xml文件中编辑模块本身的简单设置(端口,用户,密码)。
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
默认值:用户-freeswitch,密码有效,端口8080。
我们使frisvitch或服务器本身过载。 有几种方法可以执行此操作:使用服务控制命令重新引导整个系统(重新引导):
systemctl stop freeswitch
然后
systemctl start freeswitch
或
systemctl restart freeswitch
。
之后,在浏览器中输入
http://IP_RASPBERRY:8080/portal/index.html#
并使用密码在用户freeswitch下进入我们可以进入小型FreesWITCH管理面板。 我们可以查看状态,注册用户等。

让我们尝试进一步:
在浏览器中键入请求将显示FS的状态:
http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal

语法非常简单,如果命令包含多个单词,则第一个单词和第二个单词用问号分隔,其余用空格隔开。
让我们尝试从MajorDoMo执行此命令:从“智能家居”的主页转到“
控制面板-控制台”在其中键入命令:
GetURL("http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal")
作为响应,我们获得了VoIP服务器的状态。

现在尝试以下实验:
想法是从Smart Home端发起呼叫(使用始发功能)到号码为1001(MicroSip)的订户,然后将完成的呼叫转移到拨号计划,以将拨出的呼叫转移到1002(PhonerLite)。 API命令如下所示:原始用户/ 1001 1002 XML默认启动对控制台号码1001的调用,在拿起听筒(自动拾取)后,将从默认拨号计划中呼叫该号码和1002。
我们将其翻译成MajorDoMo和浏览器可以理解的形式:
GetURL("http://freeswitch:works@192.168.43.60:8080/webapi/originate?user/1001%201002%20XML%20default")
首先,一个软电话响起,几秒钟后有第二个电话响起。

作为结论,还是一个很小的实际实现
不久前,我需要与一个实际上无法用手机打电话(拨号)的人建立通信。 目前,对此的需求已消失,但仍决定检查可行性。 使用VoIP网关(在FXS终端上使用更具成本效益的解决方案,或者使用更昂贵的GSM网关),可以根据需要实现无线“智能家居”按钮。
第二种选择:MajorDoMo智能家居系统具有语音助手Alice。 现在,您可以尝试通过公共网络将“智能房屋”与所有者及其手机连接。
一些链接
→
FreeSWITCH开发人员的ClueCon网站→
英文文档FreeSWITCH→
开发人员网站MajorDoMo→
第一部分:有关安装基于Raspberry单板计算机,Z-Way RaZberry模块和MajorDoMo软件的Smart Home操作系统的简短分步说明→
第二部分:继续:Z-Way RaZberry模块和MajorDoMo软件→
第三部分:继续创建无线智能家居