Ontem nós mostramos a você como criar uma luz DIY Wi-Fi Como fazer uma luz de Wi-Fi DIY Siri-controlado Como fazer uma luz de Wi-Fi DIY Siri-Controlled Neste guia, você vai aprender como criar uma luz controlável Wi-Fi e controle-a com o Siri. Leia mais que poderia ser controlado com Siri; hoje vamos aproveitar esse conhecimento para fazer a Siri trabalhar com um sistema de som da Sonos também, e depois juntar tudo em uma cena romântica.
Confira o resultado final:
O vídeo acima não foi falsificado ou encenado - tudo é possível usando o Siri e o guia abaixo. Não é necessário fazer o jailbreak, embora haja alguma programação para a qual forneci o código.
Coisas que você precisa:
- Raspberry Pi
- dispositivo iOS
- Iluminação colorida compatível com Siri, como Philips Hue com um hub de 2ª geração, ou nosso DIY Wi-fi Light
- Sonos (ou outro dispositivo de reprodução com uma API HTTP)
- (Opcional) NodeMCU / ESP8266, relé e soquetes de energia; ou um acessório de tomada de energia HomeKit comercial
Por que isso é tão complicado?
HomeKit, e controlar seus dispositivos através do controle de voz é realmente legal. Infelizmente, o ecossistema fechado que a Apple é, o HomeKit é restrito a um punhado de dispositivos. Sonos não é um deles. No entanto, nem tudo está perdido. Graças a alguns hackers que trabalham duro, o protocolo HomeKit foi recentemente projetado com engenharia reversa e, como demonstrado em nosso último projeto, agora você pode criar seus próprios dispositivos HomeKit falsos. Nós estaremos aproveitando isso.
Comece por seguir o nosso tutorial de luz Wi-Fi DIY Como fazer uma luz Wi-Fi controlada por Siri DIY Como criar uma luz Wi-Fi controlada por Siri DIY Neste guia, você aprenderá a criar um Wi-Fi Fi luz controlável, e controlá-lo com Siri. Leia mais, porque isso vai formar a base de todo o resto. Na verdade, se você ainda não tiver um sistema de iluminação Philips Hue, pode ir em frente e realmente criar a luz Wi-Fi descrita nesse tutorial.
Mesmo se você tiver um sistema Hue, vá em frente e siga o tutorial, porque você precisará criar acessórios HomeKit falsos para todo o resto (código fornecido abaixo). Continuando com este guia, vou assumir que você já tem o servidor HAP-NodeJS em execução e adicionou com sucesso uma luz falsa e testou o servidor, mesmo que não esteja conectado a um bit real de bricolagem. hardware.
Faça uma lista de reprodução
Vá em frente e crie uma nova Playlist da Sonos chamada "Romantic". Não precisa ser exatamente o mesmo nome, mas você terá que ajustar os scripts de acessórios mais tarde, se você alterá-lo. Eu adicionei algumas faixas de Marvin Gaye e Sade ao meu. Suave .
Em seguida, no Raspberry Pi que está executando o HAB-NodeJS (se você não sabe do que estou falando, você não leu o tutorial de luz do Wi-Fi. Faça isso primeiro), navegue até o seu diretório home e digite o seguinte para instalar a API HTTP para Sonos. Isso nos dará uma URL da web que podemos fazer ping para acionar certas ações no Sonos.
git clone https://github.com/jishi/node-sonos-http-api.git sonos cd sonos npm install production npm install basic-auth sonos-discovery require-fu request-promise node-static async npm start
Se você vir uma mensagem sobre tal módulo e tal não encontrado, basta fazer outra instalação do npm e o nome do módulo, então tente o npm start novamente. É possível que eu já tenha alguns módulos instalados globalmente de outros projetos, e você pode precisar instalar mais. Espero que você veja algo assim:
Parabéns, agora você tem uma API HTTP simples que pode ser usada para acionar seus Sonos. Leia a documentação para a lista completa de comandos, mas o formato em que estamos mais interessados é:
http: // [IP DO SERVIDOR]: 5005 / [NOME DA SALA] / [AÇÃO]
ou como um exemplo específico:
http://192.168.1.99:5005/master%20bedroom/playlist/romantic
O caso não parece importar. O% 20 é uma codificação de URL de um caractere de espaço, mas você também deve poder digitar um espaço real e seu navegador o converterá automaticamente. O comando acima simplesmente aciona a playlist romântica para o dispositivo Master Bedroom. Use o comando pause para pará-lo:
http://192.168.1.99:5005/master%20bedroom/pause
Além disso, a API também nos fornece uma função que será muito útil para outros projetos: a capacidade de dizer uma instrução específica, como uma notificação, e continuar a reproduzir a fila atual. Experimentar:
http://192.168.1.99:5005/master%20bedroom/say/make%20use%20of%20is%20awesome/en-gb
Na primeira vez que fizer isso, você receberá uma mensagem sobre ter que se registrar em uma chave de API no VoiceRSS.org (até 350 solicitações por dia são gratuitas). Quando você terminar com isso, digite:
nano settings.json
e cole sua chave no seguinte exemplo:
{ "voicerss":"YOURAPIKEY" }
Reinicie o servidor e execute ping na URL novamente. Depois de alguns segundos, você deve ouvir uma voz inglesa encantadora. Você pode alterar o final do URL para en-us se preferir uma voz americana. Arrumado! Totalmente irrelevante para este projeto, mas de qualquer maneira!
Finalmente, vamos fazer este servidor iniciar novamente quando o Pi for reiniciado:
sudo nano /etc/rc.local
Adicione uma linha antes da saída 0 :
sudo node /home/pi/sonos/server.js< /dev/null &
CTRL-X, Y para salvar. Você pode ver que estou rodando isso junto com o OpenHAB, um detector de presença Bluetooth e o servidor HomeKit HAP-NodeJS - você também deve ter isso em execução se já tiver seguido o tutorial de pré-requisito de luz Wi-Fi.
Fazendo um dispositivo HomeKit para o Sonos
O ponto crucial deste projeto é que o Sonos não pode ser controlado pelo Siri, mas podemos adicionar algum grau de controle criando um falso dispositivo HomeKit que ativa uma lista de reprodução específica quando a ligamos - uma luz falsa é a maneira mais fácil de fazer isso.
Navegue para o diretório HAP-NodeJS / primeiro e instale o módulo “request”.
sudo npm install request
Em seguida, pule para o diretório accessories / e pegue meu equipamento pré-fabricado com o seguinte comando simples:
wget https://gist.githubusercontent.com/jamesabruce/72bd250fbcf054acaa25/raw/8272d4b9a4ef76db752cab2ddd9bdc47d09a65f1/Romantic_accessory.js
Faça algumas alterações, se necessário - isso é definido para o local "Master Bedroom" padrão da Sonos, portanto, altere o string master% 20bedroom para o início do código, se desejar que ele seja direcionado para uma sala diferente. Como fingimos ser uma luz, enviar o comando de brilho não fará nada, embora em algum momento eu atualize isso para lidar com o volume. Este é o bloco de código que faz a mágica:
setPowerOn: function(on) { console.log("Turning the light %s!", on ? "on" : "off"); FAKELIGHT.powerOn = on; console.log(on); if(on){ request('http://localhost:5005/master%20bedroom/playlist/romantic', function (error, response, body) { console.log("Sent play request"); }) } else{ request('http://localhost:5005/master%20bedroom/pause', function (error, response, body) { console.log("Sent pause request"); }) } },
Você pode ver que é surpreendentemente simples: quando a luz recebe um comando setPowerOn do HomeKit, ele verifica se o valor é 1 (ou verdadeiro) e em que ponto ele insere a URL da Sonos HTTP API para reproduzir essa lista de reprodução. Se for qualquer outra coisa (ou seja, 0, false), ele envia o comando pause. Reinicie seu servidor HAP-NodeJS, em seguida, vá para um dispositivo iOS e siga o mesmo procedimento de antes para adicionar sua luz "Romantic Playlist" (você precisará do código de pareamento 031-45-154) .
Verifique se o novo dispositivo está funcionando e siga em frente. Se você está se sentindo até um pouco de programação, tente mapear as mudanças de brilho para o volume (e compartilhe seu código nos comentários, por favor!).
(Opcional) Luzes de fadas e outros dispositivos AC
Você pode se surpreender ao saber que não há luzes de fadas oficiais do HomeKit, nem eu poderia encontrar qualquer fonte de alimentação genérica do HomeKit que eu gostei do visual / preço - então eu montei um DIY usando uma placa de desenvolvimento NodeMCU / ESP8266 the Arduino Killer: ESP8266 Conheça o Arduino Killer: ESP8266 E se eu dissesse a você que há uma placa de desenvolvimento compatível com Arduino com Wi-Fi integrado por menos de US $ 10? Bem, existe. Leia mais, um relé e um soquete de energia padrão de dois grupos. Eu não vou detalhar muito o hardware, já que você não deve colocar coisas dentro de tomadas se você não estiver totalmente confiante com esse tipo de coisa, mas eu lhe darei meu código para o lado do NodeMCU (conecte o disparador de relé para fixar D2 / GPIO4), e o acessório para acompanhar.
Como a luz Wi-Fi, isso comunica comandos em um canal MQTT (“bedroomplug”), portanto, será necessário modificar o código com o endereço do broker MQTT (confira a parte 2 do nosso guia OpenHAB sobre como configurar um MQTT O OpenHAB, o software de automação residencial de código aberto, excede em muito as capacidades de outros sistemas de automação residencial no mercado - mas não é fácil de configurar. Na verdade, pode ser francamente frustrante. Leia mais), altere os nomes dos canais, se desejar, e, claro, insira seus próprios detalhes de Wi-Fi.
Colocando tudo junto
Finalmente, vamos fazer algumas “cenas” usando o aplicativo Elgato Eve ou o seu gerenciador de HomeKit preferido. No jargão do HomeKit, uma cena pode consistir em qualquer número de acessórios e comandos para esses acessórios.
Você pode nomear uma cena como quiser, e a Siri poderá combiná-la mesmo sem dizer “set scene” . Então eu fiz duas cenas: uma chamada “as crianças estão na cama” e outra “vamos ficar sérios agora”.
O primeiro desliga uma das luzes de Hue, transforma a outra em rosa, depois liga o acessório de playlist romântico e as luzes de fadas. O último torna as luzes brancas novamente e faz uma pausa nos Sonos (ou seja, desliga o acessório de playlist romântico). Simples!
Espero que você tenha gostado deste tutorial, e possa realmente ver como podemos estender o controle Siri para qualquer coisa sem muita dificuldade, graças ao poder do HAP-NodeJS. Há algo que você gostaria de ver algumas ações especiais da Siri? Deixe-nos saber nos comentários e diga-nos como você tem usado o Siri para controlar sua casa.