Propaganda
A gama de luzes Philips Hue certamente não é barata (existem algumas alternativas Alternativas da Philips Hue que realmente valem a penaO sistema Philips Hue lidera a cobrança quando se trata de iluminação inteligente, mas existem algumas alternativas dignas. Escolhemos três que oferecem o mesmo conjunto de recursos básicos e capacidade de hackers. consulte Mais informação ), mas uma coisa que eu realmente aprecio é o bem documentado API O que são APIs e como as APIs abertas estão mudando a InternetVocê já se perguntou como os programas em seu computador e os sites visitados "conversam" entre si? consulte Mais informação para criar seus próprios aplicativos Hue. Hoje mostrarei como controlar suas luzes Hue de um Arduino e, em seguida, adicionando um simples sensor de movimento.
Por que estamos fazendo isso? Porque os sistemas de automação residencial podem ser bastante rígidos e caros. Ao aprender a controlar o Hue do Arduino, você abre as portas para uma variedade de projetos de automação residencial personalizados que simplesmente não podem ser derrotados por componentes prontos para uso. Se hackear as coisas juntas não é o seu lugar, tente estas
8 aplicativos Hue fabulosos Os 7 melhores aplicativos Philips Hue para Android e iPhoneProcurando os melhores aplicativos Philips Hue para usar com suas luzes inteligentes? Aqui estão vários ótimos aplicativos para iPhone e Android. consulte Mais informação em vez de.O Sistema Matiz
Vamos ficar um pouco técnicos para que você conheça os sistemas subjacentes com os quais está trabalhando. As luzes de matiz criam um malha de rede Redes Mesh: O Futuro da ComunicaçãoAs redes de malha são quase invulneráveis. Em uma rede mesh, não há pontos de estrangulamento pelos quais todo o tráfego passa. Em vez disso, as informações são passadas de um dispositivo para o próximo até chegar ao seu destino. consulte Mais informação , usando um protocolo sem fio de curto alcance chamado ZigBee - especificamente, eles são ZigBee Light Link certificado, o que significa que outros produtos da ZLL também devem funcionar ao lado do Hue (em teoria).
Embora tecnicamente de curto alcance, o recurso de rede em malha do ZigBee significa que cada nova lâmpada estende a rede, retransmitindo mensagens para outras lâmpadas. Isso significa que, se você estiver com problemas para controlar uma luz do outro lado da casa, tente colocar outra luz entre as duas.
O Zigbee é um ótimo protocolo, mas é bem diferente do Wi-Fi ou de uma rede de computadores com fio, por isso precisamos do Philips Hue Bridge para unir os dois. A ponte Hue executa um firmware Linux de código aberto modificado, que transmite um servidor Web básico.
É interagindo com este servidor da web local que você pode descobrir o status atual das luzes e controlá-las.
É um sistema lindamente simples e pronto para projetos de bricolage. Parabéns à Philips por tornar essa coisa tão hacker.
Começando
Antes de acessar a documentação da API, você precisará registrar como desenvolvedor. É gratuito, mas você precisa aceitar os termos e condições. Faça isso agora.
Qualquer pessoa familiarizada com serviços da Web padrão ou Javascript deve poder trabalhar com o Hue: todos os dados são passados e recebidos como Pacotes JSON O que é o JSON? Visão geral de um leigoSe você planeja ser desenvolvedor da Web ou não, é uma boa idéia, pelo menos, saber o que é JSON, por que é importante e por que é usado em toda a Web. consulte Mais informação .
Para dar uma olhada nisso em ação, você precisa saber o endereço IP da sua ponte Hue. Há algumas maneiras de fazer isto:
- Veja a tabela de atribuição de endereços DHCP na interface de administração do seu roteador
- Execute um programa de mapeamento de rede como Página inicial do scanner IP
- Tente o Ferramenta de corretor Philips UPnP
- Ping "philips-hue.home"
Quando terminar, vá em frente e digite-o na barra de endereço do navegador com debug / clip.html anexado ao URL. No meu caso, isso foi:
http://192.168.1.216/debug/clip.html
Essa é uma ferramenta de depuração que permite enviar e receber pacotes JSON por meio de uma interface da web simples. A primeira etapa é ativar o perfil do desenvolvedor no Hue Bridge - que é desativado por padrão por razões de segurança. Cole o seguinte no campo BODY, deixe o URL como /api/e envie uma solicitação POST clicando no botão de postagem:
{"devicetype": "usuário de teste", "nome de usuário": "newdeveloper"}
Na primeira vez em que você fizer isso, verá um "botão de link não pressionado" em algum lugar da resposta. Esse é um recurso de segurança que exige que todos os novos aplicativos que você usa sejam fisicamente autorizados. Vá e encontre seu Bridge, pressione o botão e envie a mesma solicitação novamente dentro de 30 segundos. Dessa vez, você receberá uma resposta diferente e o usuário será autorizado. Se você deseja usar um nome de usuário diferente, leia os documentos da API sobre criando usuários. Por enquanto, isso será suficiente.
Após a configuração do usuário, o URL base com o qual você deve interagir se torna /api/newdeveloper/. Você pode enviar uma solicitação GET para descobrir tudo o que o Bridge atualmente sabe sobre luzes conectadas, alarmes, cenas e um breve registro de aplicativos que foram usados. Aqui está uma amostra de algumas das informações de status contidas em uma única lâmpada.
"state": {"on": true, "bri": 254, "matiz": 14910, "sat": 144, "efeito": "nenhum", "xy": [0,4596, 0,4105], "ct": 369, "alert": "none", "colormode": "ct", "alcançável": false}, "type": "Extended color light", "name": "Bedroom 1", "modelid": "LCT001",
Observe que o "On": true o estado não mostra se a lâmpada está acesa ou não; apenas que, de acordo com as configurações do Bridge, devemos estar ligado. "Alcançável": falso pode indicar uma lâmpada que está muito longe ou simplesmente desligada no interruptor.
Um último exemplo antes de integrarmos isso ao Arduino: verifique se uma de suas luzes está visível e acesa e se você sabe qual é o número. Mude o URL para /api/newdevelopers/lights/1/state (alterando o número para sua luz) e envie uma solicitação PUT com os seguintes dados:
{"matiz": 50100, "sab": 255, "bri": 255}
Você deve ver sua luz reagir assim:
O que você fez é empurrar um novo estado para a lâmpada. Você também pode adicionar "tempo de transição", que é um método de animação primitivo, indicando quantos segundos você deseja que a alteração de estado leve.
A cor pode ser definida em várias maneiras diferentes, mas infelizmente não há uma maneira simples de enviar um valor RGB. No exemplo acima, enviamos matiz, Sentouorientação e brigrosseria. Tente alterar o valor da tonalidade e enviar a solicitação PUT novamente.
Trabalhando no Arduino
Existe uma biblioteca Hue / Arduino existente chamada ArduinoHue aos quais a Philips se vincula na documentação da API, mas o problema com esta biblioteca é que ela comunica através da conexão USB com o seu PC, que também precisa estar executando um aplicativo Python constantemente. Eugh. Você também pode deixar seu computador executar a coisa toda nesse ponto e cortar completamente o Arduino.
Em vez disso, mostrarei como controlar o Hue do Arduino usando um escudo Ethernet. O seu Arduino não precisa estar conectado a um computador, portanto ele pode operar independentemente em qualquer lugar em que você possa colocar um cabo Ethernet. Na verdade, ele também deve funcionar com um escudo Wi-Fi, mas não tenho um para brincar.
Se você quiser pular adiante, o código de exemplo completo está incorporado abaixo, ou disponivel aqui. Eu o adaptei a partir de um exemplo publicado de Gilson Oguime. Se você nunca brincou com seu escudo Ethernet antes, convém dar uma rápida olhada no tutorial do cliente da web - Assumirei algum nível de familiaridade com isso e não cobrirei o código usado para estabelecer um IP de rede etc. Também mostramos a você como criar um mini servidor web com o escudo Ethernet Dê ao seu projeto Arduino seu próprio mini-servidor com um escudo EthernetHá um tempo, mostrei como configurar um sistema de controle da Internet para o seu Arduino - mas ele precisava permanecer conectado a um computador via USB para manter a conexão à Internet ... consulte Mais informação .
Criando alterações de estado
Criar um novo estado para enviar às lâmpadas é um caso simples de criar um novo Corda variável e escapando de todas as aspas duplas. Eu adicionei um aleatória() funcionar lá também para criar uma animação um tanto dinâmica. Tente fazer a variável matiz aleatória também para cores diferentes.
Comando da string = "{\" on ": true, \" matiz \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" transittime \ ":" + String (aleatório (15, 25)) + "}";
Enviando o comando
Para realmente enviar o comando, você tem uma função auxiliar chamada setHue () que aceita o número da luz e a sequência de comandos como argumento, da seguinte forma:
setHue (1, comando);
Tudo o que faz é conectar-se à ponte, emitir o comando como uma solicitação PUT, juntamente com todas as outras bobagens que a criação de uma solicitação HTTP envolve.
client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); client.println ("/ state HTTP / 1.1"); client.println ("keep-alive"); client.print ("Host:"); client.println (hueHubIP); client.print ("Comprimento do conteúdo:"); client.println (command.length ()); client.println ("Tipo de conteúdo: texto / sem formatação; conjunto de caracteres = UTF-8 "); client.println (); // linha em branco antes do corpo. client.println (comando); // Comando Hue.
Adicionando um sensor de movimento
Finalmente, eu liguei um simples Sensor de movimento HC-SR501 ao pino de E / S digital 2. Quando o movimento é detectado, uma série de estados é empurrada para a ponte por 2 lâmpadas para criar uma animação lenta e dinâmica. Quando o sensor de movimento é desativado, um único comando de desligamento é enviado para ambos. Idealmente, eles seriam revertidos para o estado em que estavam antes que o movimento fosse detectado, mas a lógica não é tão inteligente - vamos apenas ativá-los e desativá-los.
Limitações
Embora o código seja não otimizado, leva quase um segundo para a interface de rede do Arduino enviar uma única solicitação de comando. Testei o mesmo comando em um Mac, usando a mesma conexão Ethernet, e era capaz de dez a vinte vezes essa velocidade (aqui está o AppleScript caso você queira testar). Consequentemente, qualquer tipo de animação rápida (eu estava tentando criar um efeito de vela trêmula) simplesmente não é possível a partir de um Arduino. Isso não deve ser um problema para a maioria dos projetos, apenas para animações de luz de alta velocidade, mas é bom estar ciente da limitação.
Também é difícil analisar completamente qualquer resposta JSON que você voltar da ponte; simplesmente não há RAM suficiente no Arduino para armazenar todos os dados brutos. Por esse motivo, convém limitar-se principalmente ao envio.
Hack the Hue
Agora que você está armado com o conhecimento de como controlar o Hue de forma totalmente independente, ele abre um mundo de hacks de automação residencial do Hue. A verdadeira questão é: o que você vai fazer?
James é bacharel em Inteligência Artificial e possui certificação CompTIA A + e Network +. Ele é o principal desenvolvedor do MakeUseOf e passa seu tempo livre jogando paintball e jogos de tabuleiro em VR. Ele está construindo PCs desde que era criança.