Uma maneira fácil de criar um alerta de voz no sistema de automação residencial (“Smart Home”)

Tendo testado o cliente SIP do console Linphonec, vi nele a possibilidade de uma maneira simples e rápida de implementar alertas de voz em um telefone celular, para um sistema de automação residencial.

Eu acho que esse método é adequado para muitos sistemas de automação residencial DIY, darei minha versão.

Eu tenho um sistema de automação residencial MajorDoMo Smart instalado em um computador de placa única Raspberry Pi (executando o Raspbian (Debian 9).

Criaremos a possibilidade de notificação do MajorDoMo para um smartphone sem o uso de equipamento adicional e do nosso servidor VoIP.

Um breve princípio do alerta: no caso de um acidente crítico (todos podem definir uma lista de alarmes para si mesmos), o sistema de automação gerencia o cliente VoIP do console e chama o host via protocolo SIP, após a resposta que ele reproduz o arquivo de som gravado anteriormente com a mensagem do acidente.

Primeiro de tudo, precisamos de duas contas do provedor SIP com entrada / saída gratuitas dentro da rede. Por exemplo, considere o serviço de telefonia em nuvem Zadarma.com.

O primeiro passo: registramos com o provedor, enquanto acessamos sua conta pessoal e sua conta SIP. Podemos registrar-se em várias caixas de correio, mas podemos reabastecer a conta e obter números adicionais. De qualquer forma, devemos ter 2 números (contas) e uma senha.

Em um smartphone (funciona para mim no Androd OS), instalamos um aplicativo móvel do mercado, qualquer cliente SIP o fará. Por conveniência e minimização das configurações iniciais, podemos usar o aplicativo proprietário para chamadas do Zadarma, mas podemos ser mais funcionais.
Após a instalação, fazemos o registro indicando seu número e senha, concluindo a configuração do smartphone. Então usamos um número.

No Raspberry Home Automation Server, precisamos de um cliente de terminal SIP da Linphonec. Ao instalar a partir do repositório Raspbian, é instalada uma versão 3.6.1 bastante antiga, que não funciona corretamente com o sistema de som ALSA, mas como não há necessidade de usar a voz diretamente, vamos seguir o caminho mais fácil.

Instalando a versão atual do pacote Linphone (3.12.0) sem uma interface gráfica para Debian 9, descrevi em um artigo anterior: botão de chamada DIY. Raspberry Pi, MajorDoMo, Freeswitch e Linphonec . Lá você encontra informações sobre a instalação de uma placa de som USB e as configurações de som para o Raspberry Pi.

No terminal, execute o seguinte comando:

sudo apt-get install linphone-nogtk 

A instalação do utilitário cliente do console linphonec e linphonecsh é realizada - um programa do console para gerenciar o linphonec em execução em segundo plano no diretório / usr / bin.
Vamos fazer a primeira execução digitando:

 linphonec 

Nós o lançamos, o cliente SIP jura na ALSA, não prestamos atenção a ele.

Executamos o comando de registro do cliente (Linphonec) no servidor zadarma, especifique seu segundo número e senha:

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

Se a entrada estiver correta, veremos a resposta sobre o registro bem-sucedido:

imagem

Saímos do cliente (Ctrl + c, enquanto o cliente salva as configurações no arquivo .linphonerc do usuário atual, no meu caso, o diretório / home / pi /. Na próxima vez que o SIP for iniciado, o cliente será automaticamente registrado no servidor do provedor.

Gravamos uma mensagem de voz (por exemplo: "A atenção do sistema foi reiniciada, o status está agora em operação":

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

Para executar e controlar o Linphonec no modo daemon, o utilitário Linphonecsh é usado. Inicialmente, na inicialização, a inicialização do cliente linphonecsh -init é necessária. Quando esse comando é executado, o cliente do console inicia sem carregar o arquivo de configuração.

Para que na inicialização a configuração seja lida, execute o sinalizador com:

  linphonecsh init -c /home/pi/.linphonerc 

Agora podemos gerenciar o cliente do console a partir do terminal.

Lista de comandos 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. 



Vamos tentar os seguintes comandos:

 linphonecsh generic 'soundcard use files' 

 linphonecsh generic 'play alarm.wav' 

 linphonecsh dial sip:@sip.zadarma.com 

Onde genéricos são as equipes do próprio programa Linphonec. XXXXXX é o nosso número SIP instalado no smartphone.

Nesse caso, ocorre uma chamada ao atender - você pode ouvir a reprodução de um arquivo gravado anteriormente com um acidente.

Manualmente funcionou. Para integrar-se ao sistema de automação residencial baseado em MajorDoMo, por exemplo, tome a emergência de reiniciar o servidor.
Escrevemos a seguinte linha no crontab (ao carregar o PC, o cliente do console carrega:

 crontab -e 

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

Em seguida, vá para a página da web do sistema DD, vá para Painel de controle - Scripts - Eventos - Inicialização. .



Os scripts são implementados na linguagem de programação PHP. Já existe uma linha no código que, ao iniciar o sistema, pronuncia uma frase com o endereço IP do servidor.

Adicione mais alguns:

 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 "); 

Instalamos para executar após salvar , salvamos, ao mesmo tempo em que há uma chamada no telefone celular.

Nós reinicializamos o sistema MajorDoMo, através do Serviço - Reinicialização / desligamento .
Após uma reinicialização, uma notificação de voz chega ao telefone. O mesmo algoritmo de ações pode ser feito para outro acidente crítico para você.

Após alterar ligeiramente a sequência de ações, você pode instalar seu próprio servidor de telefonia IP (Asterisk, Freeswitch, etc.) em seu sistema de automação residencial, conectar um gateway de VoIP a ele e acessar diretamente uma operadora de celular ou PSTN. Essa opção é mais funcional, possui mais recursos, mas também exige alguns custos grandes, tanto de material quanto para a configuração do sistema.

Source: https://habr.com/ru/post/pt466735/


All Articles