Como enviar notificações de voz para alto-falantes sonos

O sonho de qualquer entusiasta de casa inteligente é uma casa que você pode falar, mas a realidade é muito longe disso.

Video: �� Aumente o VOLUME do celular em 1000% | alto falantes e fones do Android com som mais potente

Amazon Eco, por exemplo, permite que você use qualquer número de recursos controlados de voz, mas de diálogo deve ser iniciado por você com uma pergunta - você não pode simplesmente tê-la anunciar uma mensagem importante.

Você posso fazer isso com um sistema Sonos, porém, e um pouco de DIY Raspberry Pi magia. Hoje vou mostrar-lhe como configurar notificações de voz no seu sistema Sonos, introduzindo um par de receitas úteis IFTTT, integrações OpenHAB, e mais, para fazer uso do recurso de notificação.

Note que existe uma ligação de Sonos nativo para OpenHAB disponíveis, mas é conhecido por causar problemas de memória devido a uma biblioteca uPnP defeituoso. Eu sugiro pular que, por enquanto, e utilizando o método neste tutorial em seu lugar.

A Raspberry Pi linux Raspian correr é ideal para este tutorial, mas também deve funcionar em qualquer servidor doméstico baseado em Linux que você tem em execução. Neste caso, estou usando o mesmo Pi Raspberry que é executado OpenHAB, o sistema de automação residencial open source. O restante deste tutorial assume que você também está executando isso em um Raspberry Pi, e quer ter uma janela de terminal local aberto na área de trabalho, ou são login remotamente com SSH.Introdução ao OpenHAB Home Automation em Raspberry PiIntrodução ao OpenHAB Home Automation em Raspberry PiOpenHAB é uma plataforma madura, open source domótica que é executado em uma variedade de hardware e é um protocolo agnóstico, o que significa que pode se conectar a praticamente qualquer hardware de automação residencial no mercado hoje.consulte Mais informação

Você precisará

  • Raspberry Pi 2 (modelos mais antigos devem funcionar, mas verificar se há alterações específicas nas instruções)
  • Pelo menos um alto-falante Sonos (outros sistemas de áudio não são suportados, este é um tutorial para Sonos apenas)
  • conta gratuita no VoiceRSS.org. Registrar em seguida, encontrar a sua chave de API, que vamos precisar mais tarde para gerar as mensagens de voz.

Instale Nó Latest

Verificar qual versão do Nó você tem digitando:

-v nó

Note-se que a versão 6 não é suportado. Se você tiver Nó 6, você vai para o primeiro removê-lo, siga as instruções abaixo para instalar v5.5.

Se você não tem v5 ou se você receber um erro não encontrado, siga estas instruções para instalar o nó. O seguinte comando assume um Raspberry Pi 2 para modelos mais antigos, o uso armv6l ao invés de armv7l.

wget https://nodejs.org/download/release/latest-v5.x/node-v5.12.0-linux-armv7l.tar.gzalcatrão -xvf nó-v5.12.0-linux-armv7l.tar.gzCD node-v5.12.0-linux-armv7lsudo cp -R * / usr / local

Confirme novamente, digitando:

-v nó

E você deve ver v5.12 (ou qualquer que seja o mais recente foi que você fez o download).

Em seguida, temos alguns módulos nó para instalar. Queremos também que o Gerenciador de Pacotes Node.

sudo apt-get instalar npmsudo npm instalar -g npmsudo npm instalar -g nó-GYP

Isso é os pré-requisitos para fora do caminho, agora para a diversão.

API Sonos HTTP

A API Sonos HTTP cria um servidor web na rede local, o que nos permite executar ping um URL com uma mensagem para anunciar em um Sonos (e para controlá-lo remotamente, se quiser, embora este tutorial se concentra apenas no aspecto notificação de voz).

git clone https://github.com/jishi/node-sonos-http-api.git SonosCD Sonosnpm instalar --Produçãonpm começar

Se você ver uma mensagem sobre tal e tal módulo não encontrado, basta fazer outra npm instalar e o nome do módulo, então tente início npm novamente. Se você tiver problemas relacionados ao “Requer um compilador C ++ 11”, corrigir com os seguintes comandos:

sudo apt-get instalar gcc-se 4,8 g ++ - 4,8sudo update-alternatives --install / usr / bin / gccgcc / usr / bin / gcc-4.6 20sudo update-alternatives --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50

Eventualmente, você deve ver algo como isto:

Sonos-http-api de trabalho

O servidor agora está em execução, a interface com Sonos. O formato desta API é fácil:

http: // [IP do servidor]: 5005 / [nome da sala] / [ACTION]

Ou como um exemplo específico:

http://192.168.1.99:5005/kitchen/playlist/chillout

A ação que estamos interessados ​​é o comando “dizer”, usados ​​como segue:

http://192.168.1.99:5005/kitchen/say/make%20use%20of%20is%20awesome/en-gb

Você vai ouvir uma mensagem de erro sobre ter de se inscrever para uma chave de API em VoiceRSS.org. Você já deve ter feito isso, então digite o seguinte e cole em sua chave de API como justificativo:

nano settings.json

{

 "voicerss":"YOURAPIKEY"}

(Hit CTRL-X, Y, para salvar o arquivo)

Reinicie o servidor, e ping o URL novamente. Após alguns segundos, você deve ouvir uma voz Inglês delicioso (embora você mudar o final da URL para en-us se preferir). Para fazer com que o servidor API Sonos HTTP começar de novo quando o Pi é reiniciado:

sudo nano /etc/rc.local

Adicionar uma linha antes do exit 0:

sudo /home/pi/sonos/server.js nó lt; / Dev / null &

Você agora tem a capacidade de criar uma mensagem de voz a partir de qualquer lugar na rede local simplesmente por ping um URL, então as possibilidades estão abertas neste momento. Se você está lutando por idéias que, para ler sobre algumas notificações úteis Eu tenho criado.

Notificações OpenHAB sobre Eventos

Vamos dar um exemplo simples em primeiro lugar: detecção de movimento. Este é um caso de uso comum para ativar luzes, mas você pode querer uma notificação voz também se é um sensor de movimento em uma área de baixo tráfego, ou talvez como um aviso para a frente que alguém está chegando o caminho do jardim.

regra "movimento Garden detectado"whenItem Garden_Motion changedthenvar mensagem cadeia = "Você tem um visitante"sendHttpGetRequest("http: // localhost: 5005 / cozinha / dizer /"+mensagem.codificar("UTF-8")+"/ En-GB")fim

Você deve ver como você pode integrar estas notificações de voz simples em qualquer de suas regras, mas vamos tentar algo um pouco mais complexo.

Weather Report diariamente das IFTTT para OpenHAB para Sonos

Nesta receita, teremos Sonos anunciar um boletim meteorológico diariamente no seu tempo preferido.

Você precisa ter o My.OpenHAB ligação habilitado, pois este cria uma conexão segura entre o servidor OpenHAB interna eo serviço IFTTT externo. Configurar isso, se você não tiver já - você pode se referir a parte 1 de nosso guia OpenHAB para obter instruções completas, caso contrário, eu vou assumir que você já tem que configurar com persistência habilitado para todos os itens.Introdução ao OpenHAB Home Automation em Raspberry PiIntrodução ao OpenHAB Home Automation em Raspberry PiOpenHAB é uma plataforma madura, open source domótica que é executado em uma variedade de hardware e é um protocolo agnóstico, o que significa que pode se conectar a praticamente qualquer hardware de automação residencial no mercado hoje.consulte Mais informação

Em seguida, crie um novo item de Cordas em seu OpenHAB instalação, que irá armazenar o boletim meteorológico diário. Antes isso é visível no canal My.OpenHAB, vamos precisar para inicializar-lo com alguma variável padrão. Ping o seguinte URL (mudança raspberrypi.local para o servidor OpenHAB, ou simplesmente usar o seu endereço IP, e Clima de hoje a tudo o que você nomeou o String):

http: //raspberrypi.local:? 8080 / CMD Todays_Weather=Ensolarado

Entrar e My.OpenHAB e verificar a Unid lista para garantir a variável já foi exportado.

meu cheque de exportação item de openhab

Voltar em IFTTT, criar uma nova receita, e usar o canal do tempo, como o gatilho em sua hora preferida do dia. Você precisa definir a sua localização em primeiro lugar se você nunca usou antes.

Selecione My.OpenHAB como a ação, e escolher o Todays_Weather como variável para atualizar.

boletim meteorológico ifttt

Por enquanto, basta escolher o slot de meia hora seguinte para o teste - você pode atualizar a receita mais tarde uma vez que você sabe que está funcionando.

Com certeza, no tempo de teste (na verdade, um pouco antes), eu tenho previsão de hoje atualizado com sucesso.

2016/02/27 10: 28: 01,689 [DEPURAR] [o.o.i.m.i.MyOpenHABServiceImpl] - Recebido comando Parcialmente nublado hoje! Com um elevado de 7C e uma baixa de 1C. Repetir. Condições serão Parcialmente nublado hoje, com uma alta de 7C e uma baixa de 1C. para item de Todays_Weather2016-02-27 10: 28: 01,697 [DEPURAR] [o.o.i.m.i.MyOpenHABServiceImpl] - loja(Clima de hoje), Estado = Parcialmente nublado hoje! Com um elevado de 7C e uma baixa de 1C. Repetir. Condições serão Parcialmente nublado hoje, com uma alta de 7C e uma baixa de 1C.

Em seguida, precisamos de uma regra OpenHAB para enviar esta variável para os Sonos “dizer” URL. O seguinte deve fazê-lo:

regra "Anunciar boletim meteorológico diário"whenItem Todays_Weather recebeu atualizaçãoentãosendHttpGetRequest("http: // localhost: 5005 / cozinha / dizer /"+Todays_Weather.state.toString.encode("UTF-8")+"/ En-GB")fim

Este é bastante simples: sempre que a variável Todays_Weather é atualizado (que será, automaticamente, às 8h todos os dias), ping o URL. Nós usamos codificar ( “UTF-8”) função de corda para fazer a sentença de IFTTT adequado para uso em uma URL. Para testar manualmente esta parte do sistema, basta usar a API OpenHAB HTTP novamente:

Video: com receber notificação por voz no whatsapp falando o nome dos contatos

http: //raspberrypi.local:? 8080 / CMD Todays_Weather=Nublado, com chance de almôndegas.

Ligue para IFTTT Sem OpenHAB, usando If-Este-Then-Node

Finalmente, vamos ver como se conectar de qualquer receita IFTTT sem a intermediação OpenHAB. Em vez disso, vamos instalar outro servidor web, e expor que a Internet aberta. Esta não é sem risco: qualquer tipo de servidor aberto é um risco de segurança, mas estamos mitigar isso por não executar uma pilha completa de servidor, apenas uma pequena serviço específico que só aceita alguns comandos em um formato de pacote de dados segura JSON (por isso não injeção de SQL ou autenticação ataques será possível). Assim que estiver pronto, você terá uma URL pública para o qual você pode enviar mensagens a partir do canal IFTTT Maker.

Começar pela criação de um dos muitos serviços de DNS dinâmico gratuitos lá fora - Eu recomendo DuckDNS, especificamente, porque dá um simples conjunto de instruções para Raspberry Pi, o que lhe permite atualizar seu adddress IP automaticamente. Siga junto com estes, e lembre-se o seu URL para os próximos passos. O roteador também pode ter uma função de DNS dinâmico integrado, de modo a verificar lá primeiro. No meu caso, posso obter um * .mynetgear.com URL de graça, então eu usei isso.5 melhores provedores de DNS dinâmico, é possível pesquisa para livre hoje5 melhores provedores de DNS dinâmico, é possível pesquisa para livre hojeDynDNS sempre foi uma menção superior quando DNSes dinâmicos livres foram criadas. Mas agora que ele se foi, existem boas alternativas? Há com certeza são.consulte Mais informação

Em seguida, encontrar o seu roteador de encaminhamento de porta configuração page- este é o lugar onde nós vamos dizer-lhe o que fazer com as solicitações de entrada. Encaminhar todas as solicitações HTTP (porta 80) para a porta 1337 em seu servidor Raspberry Pi. Estou assumindo que você tem um endereço IP já reservada para o Raspberry Pi - se você não tiver, consulte a página de configuração do roteador para IPs reservados enquanto você está lá, como você não fazê-lo a mudar na próxima semana e para o servidor parar de funcionar de repente.

roteador encaminhamento de porta de configuração

Agora para instalar o último pedaço de software de servidor.

https://github.com/sebauer/if-this-then-node.gitCD se-este-then-node /npm instalarserver.js nó

Você deverá ver o seguinte.

se este, em seguida, nó de erro valores padrão

Isso é ok, isso apenas significa que precisamos atualizar nossos dados. Abrir config.js no Nano e editar esses detalhes a qualquer coisa que não seja o padrão, em seguida, salvar. Quando você executar o servidor novamente, você deve ver o seguinte:

se este servidor em execução, em seguida, nó

Ótimo. Teste a sua máquina é acessível a partir do mundo exterior, digitando seu nome de host DNS dinâmico, e acrescentar /ifttn / ao final do URL. Se tudo funcionar, a mensagem “IFTTN - se este-então-node Versão 2.0.1 está instalado e funcionando!” será exibido em você browser. Mais uma vez, para fazer este script executado no start-up, edite o /etc/rc.local arquivo e adicione:

Video: Alto falante 6x9 - O que é e para que serve

sudo /home/pi/if-this-then-node/server.js nó lt; / Dev / null &

Se-Este-Then-Node funciona através de plugins - há uns poucos padrão fornecidos, mas não são de interesse para nós. Em vez disso, faça o download deste plug-in personalizado que eu escrevi para você com os seguintes comandos.

CD pluginswget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js

Você também vai precisar instalar o pedido módulo.

npm instalar pedido

Em seguida, reiniciar o servidor. O plugin é bastante simples, mas um pouco diferente do URL que estamos acostumados até agora. Neste caso, eu usei a ação especial “sayall”, que envia a mensagem para todos os dispositivos Sonos.

pedido(`Http: // localhost: 5005 / sayall /`+params.mensagem+`/ Pt-pt`, função (erro, resposta, corpo)

Se você preferir ser capaz de orientar dispositivos específicos, substituir essa função:

pedido(`Http: // localhost: 5005 /`+params.device +`/dizer/`+params.message +`/ Pt-pt`, função (erro, resposta, corpo)

Adicionar outro parâmetro da linha de chamada dispositivo ao pedido JSON abaixo em que especifique o nome do dispositivo Sonos.

Para testar isso, eu estou usando o IFTTT “Faça” app botão. Criar uma nova receita, procure canais e selecione o criador canal.

botão fazer

Criar uma nova receita. Digite o URL que você configurou anteriormente a partir de um provedor de DNS dinâmico livre (incluindo / Ifttn / no final da URL. Não se esqueça aquelas barras). selecionar POSTAR pedido, aplicação / json conteúdo, eo corpo da mensagem da seguinte forma, substituindo todas as variáveis ​​conforme necessário com aqueles que você configurou anteriormente:

{"açao":"Sonos","do utilizador":"youruser","pw":"SUA SENHA","mensagem":"mensagem recebida para todos: O jantar está pronto! Repetir. Jantar está pronto. Obter seus traseiros lá em cima agora."}

Agora eu tenho um botão de fácil acesso que vai anunciar a mensagem em cada dispositivo Sonos na casa. Pode, claro, Par isso com qualquer canal IFTTT você quiser fazer uma mensagem personalizada usando variáveis ​​desse canal. Você deve mesmo ser capaz de replicar o boletim meteorológico de cima sem usar OpenHAB agora, embora fez pegue o esforço extra de instalação de outro servidor.

Nota: hackers irá verificar automaticamente. Isso acontece o tempo todo, mas se você está exibindo logs, pode parecer alarmante. Abaixo você pode ver alguém sistematicamente tentou verificar se qualquer uma das interfaces phpMyAdmin padrão eram acessíveis. Que eles não estavam. Não se assuste se você ver algo semelhante. É o equivalente à Internet de frio chamando números de telefone aleatórios para ver se alguém está lá.

hack tentativas de servidor web

O que você vai anunciar?

Agora você deve ter as ferramentas e kwowledge para banhar constantemente a sua casa inteira em notificações de voz sobre tudo o que poderia pensar. Quem precisa de música? Seu único limite é de 350 pedidos diários de VoiceRSS.org - mas isso é cerca de um a cada 4 minutos, então você deve estar bem.

Então, o que você vai fazer com isso? Partilhe as suas ideias ou receita IFTTT nos comentários!


Artigos relacionados