O sistema de iluminação da Philips Hue permite controlar a iluminação em sua casa a partir de um aplicativo móvel ou de qualquer aplicativo que você escreva que possa se conectar à Internet. O centro do sistema é a Hue Bridge, um dispositivo conectado à Ethernet que se comunica com lâmpadas compatíveis através do protocolo de rádio Zigbee Ha. A Philips faz uma variedade de lâmpadas compatíveis com tonalidade, e muitas lâmpadas de terceiros funcionam com o mesmo protocolo. O ICONNECTHUE mantém uma lista completa de lâmpadas compatíveis com matiz. Principalmente centrado no euro-mercado, mas ainda muito útil.
Cada Hue Bridge é seu próprio servidor Web HTTP e pode ser controlado usando a API REST HUE. Existem bibliotecas para controlar o tom disponível em muitas linguagens de programação. Os tutoriais aqui estão todos no JavaScript do lado do cliente usando P5.Js, JavaScript simples ou do lado do servidor usando Node.js ou Micrcontroller baseado em Arduino.
O Hue API V2 foi lançado recentemente e acabará substituindo a V1. Atualmente, essas notas se referem à v1 (19 de janeiro de 2021) e ainda funcionam. O Hue API V2 apresenta HTTPS, bem como algumas mudanças de quebra de V1.
Para começar a programar aplicativos de matiz, você precisará de acesso a uma ponte de matiz. Você também vai querer uma conta de matiz. As contas do desenvolvedor são gratuitas. Mantenha o link do site de desenvolvedores de matiz à mão.
O aplicativo Hue para Android ou iOS é útil ao se desenvolver, porque funciona quando seu projeto ainda não. O aplicativo Hue Essentials também é uma alternativa bastante útil.
Todo Hue possui uma interface de depuração, disponível em http://$ADDR/debug/clip.html substitua $ADDR pelo endereço IP da sua ponte. Ao desenvolver, você pode usar isso para enviar comandos da API para a ponte para testar as coisas.
A biblioteca de nó-hue-api de Peter Murray para Node.js é o melhor das várias bibliotecas JavaScript Node.js que testei para controlar o tom.
Para controlar o tom de um cliente do navegador, o P5.JS faz um bom trabalho, pois ele tem uma API de solicitação HTTP simples. Você também pode usar JavaScript simples, é claro.
A biblioteca ArduinohttpClient e a Biblioteca Arduino_json são úteis se você estiver usando alguma das placas enabaçadas do Arduino WiFi para se conectar à sua ponte de matiz. (Nota: há outra biblioteca JSON com o mesmo nome, sem sublinhamento. Essa não é a usada aqui).
O Curl da ferramenta de linha de comando é útil para testar solicitações HTTP para sua ponte, se você estiver familiarizado com a linha de comando POSIX (Linux/Unix). O CURL não está disponível na interface de comando do Windows, mas você pode obtê -lo através do subsistema do Windows para Linux no Windows 10, ou através do Cygwin, um aplicativo que fornece um shell Linux para Windows. Aqui estão alguns detalhes sobre o uso do CURL para acessar uma ponte de matiz.
Fora isso, você precisará conhecer alguns HTML e JavaScript, e um editor de texto, uma interface da linha de comando e um navegador para experimentar os exemplos neste site. Os exemplos da linha de comando mostrados aqui são todos para Linux ou Unix, mas funcionarão no Windows 10 usando o subsistema do Windows para Linux no Windows 10.
Seu aplicativo precisará ser identificado em sua ponte usando um nome de usuário exclusivo. Esta página de exemplo simplificará que, se você conhece o endereço IP da sua ponte. Você não pode executar esta página de um servidor remoto; Faça o download e abra o arquivo index.html em um navegador do seu sistema de arquivos. Isso ocorre porque a API Hue versão 1 usa HTTP, não HTTPS.
Você também pode seguir as instruções de início do site do desenvolvedor de matiz.
Quando você faz certo, você deve obter uma resposta como esta:
[
{
"success": {
"username": "newusername"
}
}
]
Agora você está pronto para escrever código para sua ponte. Independentemente do ambiente em que você esteja programando, você usará o nome de usuário que você estabeleceu aqui.
A interface do clipe de depuração é uma página que você pode usar para testar funções em sua ponte. Seu endereço é:
http://your.bridge.ip.address/debug/clip.html
Pode ser usado para enviar qualquer comando da API para sua ponte. A sequência de consulta geral é a seguinte:
/api/$HUE_USER/command
Geralmente, a consulta do estado do dispositivo é feita usando comandos GET e alterá -los é feito usando o put. Por exemplo, para consultar o estado de todas as suas luzes, insira o seguinte no campo URL:
/api/$HUE_USER/lights
E clique em Get. Para consultar a configuração, digite:
/api/$HUE_USER/config
E clique em Get. Para ativar a luz 1, insira o seguinte no campo URL:
/api/$HUE_USER/lights/1/state
E insira o seguinte no campo do corpo da mensagem:
{"on":true}
E clique em Put. A luz deve acender e a ponte deve responder:
[
{
"success": {
"/lights/1/state/on": true
}
}
]
Para saber mais sobre a API da Hue, consulte o Guia de Introdução do Hue, os Conceitos do Core da API Hue e a documentação completa da API da Hue. Você precisará criar uma conta gratuita e fazer login para usar o portal do desenvolvedor.
Quando você adicionou sua ponte à sua rede, poderá usar o aplicativo Hue ou o aplicativo Hue Essentials para obter o endereço IP. Mas em uma rede complexa como uma rede escolar, isso pode não funcionar. Seu dispositivo móvel e sua ponte Hue precisam estar na mesma rede local para que isso funcione. Por exemplo, se a sua rede Wi -Fi não for a mesma rede local da rede Ethernet com fio (onde a ponte mora), talvez você não consiga obter o endereço. Mas se você pode obter o endereço MAC da ponte, poderá pesquisá -lo em sua rede. Aqui está como
Cada ponte tem um único que você pode encontrar o endereço MAC na parte inferior da sua ponte. É um número de seis bytes em notação hexadecimal assim:
00:17:88:0B:14:48
Algumas pontes mostrarão apenas os últimos três bytes. Por exemplo, a ponte acima pode mostrar apenas 0B1448. Com as pontes de matiz mais antigas, os três primeiros bytes sempre serão 00:17:88 . Com os mais novos, você também pode ver EC:B5:FA .
Para procurar sua ponte em sua rede, verifique se você tem os três primeiros dígitos da rede local e que você pode acessá -la e abra uma interface da linha de comando e digite:
$ ping -c 5 xxx.xxx.xxx.255
Onde xxx.xxx.xxx são os três primeiros números da sua rede. Por exemplo, em uma rede cujo roteador é 172.16.130.1, você digitaria 172.16.130.255. Às vezes, as grandes instituições usam duas sub -redes diferentes para redes com fio vs. sem fio, mas ainda estarão na mesma rede local maior.
Você receberá uma lista de respostas, pois os dispositivos na rede respondem às suas solicitações de ping. Quando estiver pronto, digite:
$ arp -a
Você receberá uma lista de todos os dispositivos na mesma rede que seu computador pode ver. Procure aquele que corresponda ao endereço MAC da sua ponte e o endereço IP ao lado será o endereço IP da sua ponte. Os últimos três bytes do seu endereço MAC da etiqueta na parte inferior. Os três primeiros provavelmente serão 00:17:88 ou EC: B5: FA, como explicado acima. Aqui está um exemplo típico:
$ arp -a
? (192.168.0.1) at ac:b7:16:61:e3:77 on en0 ifscope [ethernet]
? (192.168.0.3) at 00:17:88:0B:14:48 on en0 ifscope [ethernet]
? (192.168.0.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
Nesse caso, o endereço IP do tom é 192.168.0.3.
Você pode procurar novas lâmpadas na ponte usando o aplicativo Mobile Hue comum. Você também pode fazer isso na interface do clipe de depuração usando uma solicitação de postagem no seguinte URL:
/api/$HUE_USER/lights/
Preencha o endereço da sua ponte para $ addr e seu nome de usuário do Hue para $ hue_user. Você deve receber uma resposta como esta:
[[ { "success": { "/lights": "Searching for new devices" } }]
Após 90 segundos, você pode digitalizar novas lâmpadas que foram adicionadas assim:
/api/$HUE_USER/lights/new
Em Curl:
$ curl -X GET http://$ADDR/api/$HUE_USER/lights/new
Isso listará apenas as novas lâmpadas adicionadas após uma varredura para novas lâmpadas.
Se você está tentando adicionar uma lâmpada que estava anteriormente conectada a uma ponte diferente, precisará usar uma abordagem diferente. Coloque a lâmpada próxima à ponte com a qual você deseja controlá -la (mais próxima do que qualquer outra lâmpada, idealmente menos de 1 metro). Desligue todas as outras lâmpadas conectadas à ponte ou verifique se elas estão muito mais longe do que a que você deseja.
Envie a seguir a interface do clipe de depuração usando uma solicitação de put:
/api/$HUE_USER/config/
No corpo do seu pedido, colocou:
{"touchlink": true}
Em Curl, é:
$ curl -X PUT -d '{"touchlink": true}' http://$ADDR/api/$HUE_USER/config
A lâmpada deve piscar algumas vezes, e o servidor responderá com uma mensagem de sucesso. Agora você pode adicionar a lâmpada usando a nova solicitação de lâmpadas descrita acima.
Se o TouchLink não conseguir redefinir uma lâmpada, pode ser necessário redefini -la manualmente. É diferente para cada fabricante, mas o padrão geral é ligar e desligar a lâmpada três a cinco vezes, após o que piscará ou diminuirá levemente para indicar que foi redefinida. Por exemplo, com as lâmpadas GE Link, o padrão é:
Para algumas lâmpadas de terceiros, como o Cree Connect ou o Innr Bulbs, você pode fazê -lo com intervalos de 2 segundos. Em caso de dúvida, vá com três segundos, no entanto.
Se você possui um dos controles remotos do Hue, também poderá redefinir uma lâmpada usando -a. Para fazer isso, ligue a lâmpada e coloque o controle remoto a quinze centímetros da lâmpada. Pressione os botões ligados e desligar a energia (ou ligar e selecionar os botões de seleção de cena em modelos mais recentes) similtaneamente e mantenha -os até que a lâmpada pisque. Isso colocará a lâmpada em seu estado de fábrica padrão, pronto para combinar com uma nova ponte.
Você pode excluir uma lâmpada de uma ponte da interface do clipe de depuração usando uma solicitação de exclusão no seguinte URL:
/api/$HUE_USER/lights/1
Em Curl:
$ curl -X DELETE http://$ADDR/api/$HUE_USER/lights/1
Substitua 1 pelo número da luz que você deseja excluir.
Para obter o status de todas as luzes conectadas, envie o seguinte da interface do clipe de depuração usando uma solicitação GET:
/api/$HUE_USER/lights/
Em Curl, isso é:
$ curl http://$ADDR/api/$HUE_USER/lights/
Isso deve retornar a lista de luzes disponíveis, assim:
{"1":{"state":{"on":true,"bri":254,"hue":14314,"sat":172,"effect":"none","xy":[0.4791,0.4139],"ct":405,"alert":"none","colormode":"ct","reachable":true},"type":"Extended color light","name":"Hue color light 1","modelid":"LCT001","manufacturername":"Philips","uniqueid":"00:17:88:01:00:ff:9a:28-0b","swversion":"5.127.1.26581"}}
Para ativar uma luz, você precisa saber qual número é. Então você muda de estado assim:
Envie o seguinte da interface do clipe de depuração usando uma solicitação de put:
/api/$HUE_USER/lights/4/state
No corpo do seu pedido, colocou:
{"on": true}
Em Curl, isso é:
$ curl -X PUT -d '{"on":true}' http://$ADDR/api/$HUE_USER/lights/4/state
Para desligá -lo, mude o corpo da solicitação para
{"on": false}
Você pode alterar qualquer uma das propriedades do estado de uma luz dessa maneira. Dê uma olhada, por exemplo, à luz 1 da seção Obtendo o estado de todas as luzes acima:
{"1":{"state":{"on":true,"bri":254,"hue":14314,"sat":172,"effect":"none","xy":[0.4791,0.4139],"ct":405,"alert":"none","colormode":"ct","reachable":true},
Enquanto a propriedade reachable for verdadeira, o que significa que a ponte tentou alcançar a lâmpada e obteve uma resposta, você pode alterar qualquer uma das outras propriedades. Esta é uma lâmpada de cores e possui três modos, HS (para matiz, saturação), CT (para temperatura colorida) e XY (para dimensões x e y no espaço de cores CIE1931). Se você alterar o tom ou a saturação, a lâmpada de colormodo muda para o HS e, se você alterar a temperatura da cor, o código de colméia mudará para a CT. Se você enviar valores XY, o ColorMode mudará para o modo XY.
Luzes diferentes terão propriedades diferentes em sua variável de estado que você pode mudar. O esboço do P5.js escaneará todas as propriedades de cada lâmpada no
Os modelos MKR1000, MKR1010 e Nano 33 IoT Arduino também podem controlar a ponte Hue por meio de solicitações HTTP. Existem alguns exemplos de Hue Arduino, com notas, neste repositório também.