在家庭自动化系统(“智能家居”)中创建语音警报的简便方法

在测试了控制台SIP客户端Linphonec之后,我发现其中有一种简单快捷的方法可以用于家庭自动化系统的手机语音提示。

我认为这种方法适用于许多DIY家庭自动化系统,我会给出自己的版本。

我有一个安装在Raspberry Pi单板计算机(运行Raspbian(Debian 9))上的MajorDoMo智能家居自动化系统。

我们将创造从MajorDoMo通知到智能手机的可能性,而无需使用其他设备和VoIP服务器。

警报的简要原理:发生严重事故时(每个人都可以确定他们自己的事故清单),自动化系统将管理控制台VoIP客户端并通过SIP协议呼叫所有者,在响应之后它将播放先前记录的带有事故消息的声音文件。

首先,我们需要来自SIP提供商的两个帐户,这些帐户在网络内具有免费的入站/出站功能。 例如,使用Zadarma.com云电话服务。

第一步:我们在访问您的个人帐户和SIP帐户的同时向提供商注册。 我们可以向多个邮箱注册,但是可以补充帐户并获取其他号码。 无论如何,我们应该有2个数字(帐户)和一个密码。

在智能手机上(它在Androd OS上对我有效),我们从市场上安装了一个移动应用程序,任何SIP客户端都可以。 为了方便起见并最小化初始设置,我们可以将专有应用程序用于Zadarma调用,但我们可以提供更多功能。
安装后,我们通过输入您的号码和密码进行注册,从而完成了智能手机的设置。 因此,我们使用了一个数字。

在Raspberry Home Automation Server上,我们需要一个Linphonec SIP终端客户端。 从Raspbian存储库安装时,会安装较旧的3.6.1版本,该版本无法在ALSA声音系统上正常工作,但是由于不需要直接使用声音,因此让我们继续简单的方法。

在上一篇文章中描述了安装没有用于Debian 9的图形界面的当前版本的Linphone软件包(3.12.0),我在上一篇文章中进行了介绍: DIY呼叫按钮。 Raspberry Pi,MajorDoMo,Freeswitch和Linphonec 您可以在此处找到有关安装Raspberry Pi的USB声卡和声音设置的信息。

在终端中,执行以下命令:

sudo apt-get install linphone-nogtk 

执行控制台客户端实用程序li​​nphonec和linphonecsh的安装-一个管理程序,用于管理在/ usr / bin目录中后台运行的linphonec。
让我们通过键入以下内容进行第一次运行:

 linphonec 

我们启动它,SIP客户在ALSA发誓,我们对此并不关注。

我们在zadarma服务器上执行客户端注册命令(Linphonec),指定您的第二个数字和密码:

 register sip:xxxxxx@sip.zadarma.com sip.zadarma.com PASSWORD 

如果输入正确,那么我们将看到有关成功注册的答案:

图片

我们退出客户端(Ctrl + c,而客户端将设置保存到当前用户的.linphonerc文件中,在我的情况下为目录/ home / pi /。下一次SIP启动时,客户端会自动在提供程序的服务器上注册。

我们记录一条语音消息(例如:“系统的注意事项已重新启动,状态现在正在运行”:

 arecord -D plughw:1,0 -f cd /home/pi/alarm_restart.wav 

要在守护程序模式下运行和控制Linphonec,请使用Linphonecsh实用程序。 最初,在启动时,需要初始化linphonecsh -init客户端。 执行此命令后,控制台客户端将启动,而不会加载配置文件。

为了在启动时读取配置,请使用带有以下标志的运行:

  linphonecsh init -c /home/pi/.linphonerc 

现在,我们可以从终端管理控制台客户端。

Linphonecsh命令列表
 Usage: linphonecsh <action> [arguments] where action is one of init : spawn a linphonec daemon (first step to make other actions) followed by the arguments sent to linphonec generic : sends a generic command to the running linphonec daemon followed by the generic command surrounded by quotes, for example "call sip:joe@example.net" register : register; arguments are --host <host> --username <username> --password <password> unregister : unregister dial : dial <sip uri or number> status : can be 'status register', 'status autoanswer' or 'status hook' soundcard : can be 'soundcard capture', 'soundcard playback', 'soundcard ring', followed by an optional number representing the index of the soundcard, in which case the soundcard is set instead of just read. exit : make the linphonec daemon to exit. 



让我们尝试以下命令:

 linphonecsh generic 'soundcard use files' 

 linphonecsh generic 'play alarm.wav' 

 linphonecsh dial sip:@sip.zadarma.com 

Linphonec程序本身的团队是通用的。 XXXXXX是我们安装在智能手机上的SIP号码。

在这种情况下,接听电话时会发生呼叫-您可以意外听到以前录制的文件的播放。

手动工作。 例如,要与基于MajorDoMo的家庭自动化系统集成,请紧急重启服务器。
我们在crontab中编写以下行(在加载PC时,控制台客户端将加载:

 crontab -e 

 @reboot sudo -u pi linphonecsh init -c /home/pi/.linphonerc 

接下来,转到DD系统的网页,转到“ 控制面板”-“脚本”-“事件”-“启动”。



脚本是用PHP编程语言实现的。 代码中已经有一行在启动系统时用服务器IP地址发音一个短语。

再添加一些:

 exec ("sudo -u pi linphonecsh generic 'soundcard use files'"); 

 exec ("sudo -u pi linphonecsh generic 'play alarm.wav'"); 

 exec ("sudo -u pi linphonecsh dial sip:576935@sip.zadarma.com "); 

保存安装执行 ,保存,同时手机上有通话。

我们通过Service-Reboot / shutdown重新启动MajorDoMo系统。
重新启动后,语音通知会到达电话。 对于另一个对您至关重要的事故,可以执行相同的操作算法。

稍作更改后,您就可以在家庭自动化系统中安装自己的IP电话服务器(Asterisk,Freeswitch等),将VoIP网关连接到该网关,然后直接访问移动运营商或PSTN。 此选项功能更强大,功能更多,但还需要大量的材料和系统安装成本。

Source: https://habr.com/ru/post/zh-CN466735/


All Articles