No ecossistema Apple nos foi introduzido, juntamente com o iOS 8, o HomeKit, framework voltado para automação residencial totalmente integrado ao próprio Sistema Operacional. Mas nem tudo são flores, pois apenas dispositivos certificados podiam usufruir dessa integração. Ao menos até o surgimento do Homebridge.
O que é HomeKit
HomeKit nada mais é do que uma maneira de centralizar todos os dispositivos de automação em um só lugar no iOS. Atualmente cada dispositivo possui seu aplicativo para controle, seja ele uma lâmpada RGB, um termostato ou uma câmera. A ideia é que todos possam ser controlados de um único ponto, geralmente o aplicativo Casa.
O que é Homebridge
Homebridge é um servidor open-source para dispositivos HomeKit, escrito em NodeJS por Nick Farina. Ele permite controlar, através de plug-ins, dispositivos que não receberiam certificação para HomeKit. Na prática, isso significa que é possível controlar dispositivos dos mais diversos apenas com o aplicativo Casa, presente já desde o iOS 10. É possível ligar e desligar luzes (inclusive controlando a cor e intensidade do brilho delas), programar um horário para ligar e desligar dispositivos elétricos e até mesmo integrar sensores.
Abaixo é possível ver meu aplicativo Casa configurado onde tenho três “interruptores”, sendo um normal (Home Theater), um ventilador (Fan) e a lâmpada (Light), todos sendo dispositivos que estão no quarto (Bedroom). Vale notar também dois sensores de temperatura, um para temperatura ambiente e outro para a temperatura do processador do RaspberryPi (o qual roda o Homebridge), e também um sensor de umidade relativa do ar.
Do lado do hardware, o Home Theater e o ventilador estão ligados à um Módulo Relê 5V 2 Canais, e a lâmpada é controlada através de um Micro Servo 9g SG90 TowerPro colado no interruptor, como pode ser visto no Gif abaixo. Todos esses módulos estão anexados num RaspberryPi rodando Raspbian Stretch.
Instalação e Usabilidade
O Homebridge é muito versátil, sendo possível instalá-lo em Windows, Linux e Mac. Aqui tenho duas instâncias, uma rodando no RaspberryPi, que controla dispositivos físicos, e outra rodando no Macbook, que me permite controlar o iTunes à distância e inclusive desligar o próprio notebook.
Como dito anteriormente, o Homebridge foi escrito em NodeJS, o que significa que devemos instalar o runtime do Node no sistema em que desejemos executá-lo. Caso você não tenha um RaspberryPi e queira experimentar o servidor de automação, é possível baixar o Node e instalar em sua máquina.
Instalando o NodeJS em Mac e Windows
O NodeJS compilado pode ser baixado na página oficial de acordo com seu sistema. É uma instalação bem simples, do tipo Next, Next e Finish.
Instalando o NodeJS no RaspberryPi
Aqui a coisa fica um pouco mais trabalhosa, pois vai exigir um mínimo de conhecimento da ferramenta de terminal do Raspbian. Mas nada tão complexo assim, o tutorial vai focar bastante em todos os passos. Lembrando que, dessa maneira, até o Raspbian Stretch Lite suportará o NodeJS e também o Homebridge.
A instalação vai demonstrar como é possível rodar o NodeJS no RaspberryPi 3 e também no RaspberryPi Zero W, através de SSH (Secure Shell). Caso seja iniciante e queira configurar rede e SSH no RaspberryPi, já fizemos um tutorial para isso, acessível em Raspberry Pi Zero W: configuração rápida para Rede e SSH
Conectado em seu ambiente SSH no Raspbian Stretch, primeiro precisamos baixar o NodeJS de acordo com a arquitetura de processador desejada.
Arquitetura ARMv7 (RaspberryPi 3)
Primeiro precisamos adicionar a biblioteca do NodeJS na lista de repositórios do Raspbian:
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
Em seguida é feita a instalação de maneira bastante simples
sudo apt-get install -y nodejs
Arquitetura ARMv6 (RaspberryPi Zero W)
Na arquitetura ARMv6 vamos baixar o arquivo tar.xz do NodeJS com o seguinte comando:
wget https://nodejs.org/dist/v6.11.2/node-v6.11.2-linux-armv6l.tar.xz
E descompactá-lo logo em seguida
tar xJvf node-v6.11.2-linux-armv6l.tar.xz
Nisso é criado um diretório no caminho /opt/node
sudo mkdir -p /opt/node
Para o qual vamos mover todo o conteúdo previamente descompactado
sudo mv node-v6.11.2-linux-armv6l/* /opt/node/
Em seguida dizemos ao Raspbian que temos um novo comando chamado “node”
sudo update-alternatives --install "/usr/bin/node" "node" "/opt/node/bin/node" 1
E outro comando mais relevante para nossa instalação, chamado “NPM”(Node Package Manager)
sudo update-alternatives --install "/usr/bin/npm" "npm" "/opt/node/bin/npm" 1
Para verificar se a instalação correu bem, digitamos o comando node –v onde deve retornar a resposta “6.11.2” (a versão instalada do Node)
Instalação das dependências do Homebridge
Node instalado e configurado! Só mais um passo e já podemos ir direto ao Homebridge. Esse passo é a instalação das bibliotecas que o Homebridge faz uso, e é comum à todas as plataformas após a instalação do NodeJS. Digite primeiro o seguinte comando:
sudo apt-get update
E em seguida:
sudo apt-get install libavahi-compat-libdnssd-dev
O terminal vai perguntar se você realmente deseja instalar tais pacotes, pedindo que você aperte a tecla Y e logo em seguida o Enter.
Procedendo com a instalação do Homebridge
É o procedimento mais demorado, levando em torno de 10 minutos, o qual utiliza o NPM para baixar e configurar o servidor
sudo npm install -g --unsafe-perm homebridge
Com sua conclusão, verificamos se está tudo correto iniciando o homebridge digitando seu comando de inicialização
homebridge
Se correu tudo bem, você deve estar de frente para a tela abaixo. É possível finalizar o processo do Homebridge com o atalho ctrl + C.
Homebridge: command not found
Em algumas instalações, o comando homebridge pode não ser identificado. Mas é algo que tem uma solução bem prática. Primeiro, devemos editar o arquivo .bashrc
sudo nano ~/.bashrc
É aberto o editor nano com uma tela similar à esta
Nesse programa, precisamos adicionar uma linha ao fim do arquivo. Com as setas do teclado, ou até mesmo o scroll do mouse é possível chegar ao fim do arquivo e adicionar a seguinte linha
PATH="/opt/node/lib/node_modules/homebridge/bin:$PATH"
O arquivo resultante então deverá ficar assim
Trabalho concluído com o nano. Basta salvar (pressionando as teclas ctrl + O e Enter em seguida) e sair do editor de texto (ctrl + X).
Um último processo necessário é recarregar o arquivo .bashrc na memória:
. ~/.bashrc
E agora sim o comando homebridge é executado sem problemas!
Próximo passo: inclusão de plugins para controle de relês
Do jeito que está, o Homebridge não faz muita coisa, por isso é preciso que adicionemos alguns plugins para uma melhor execução. Na parte 2 desse artigo vamos ver como é possível ligar e desligar componentes elétricos através do módulo relê, e como integrar tudo ao iOS.
O que achou do post? Deixe seu comentário logo abaixo.
Olá amigo,.
Tenho um sonoff mini e gostaria de configura-lo para o IOS, consegue me ajudar, sou leigo de tudo,
Abraço!
Post muito bom mesmo!
saberia me explicar como posso instalar o homebridge em um esp 8266 esp-07 ?
Jefferson,
Talvez o link abaixo pode te ajuda:
https://www.instructables.com/id/Siri-HomeKit-Controlled-ESP8266-Lock/
Abraços!
Diogo – Equipe MakerHero
muito bom
Caro Alliston,
Tenho muito interesse neste projeto. Estou instalando no Raspberry Pi 3. Creio que instalei tudo corretamente até chegar em:
“sudo npm install -g –unsafe-perm homebridge”
Então, recebi a seguinte resposta:
“sudo: npm: comando não encontrado”
Por favor, o que fiz de errado e como corrigir?
Antecipadamente agradeço,
dionizio.barbosa
Meu comando “node -v” responde: “v8.11.1”
Creio q os 2 comandos
“sudo update-alternatives –install “…
são apenas para o Raspberry Pi Zero; msm assim, como meu “sudo npm…” não funcionou, tentei esses comandos, os quais tbm não funcionaram.
Oi Dionizio, bom dia!
Pra instalação na versão 3 da Raspberry Pi, você precisa seguir os comandos abaixo:
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash –
sudo apt-get install -y nodejs
Depois você instala as dependências do Homebridge
sudo apt-get update.
sudo apt-get install libavahi-compat-libdnssd-dev
E só em seguida você executa o comando de instalação.
Lembrando que, de outubro (quando foi escrito esse tutorial) pra cá, pode ter havido alguma mudança de libs e outros comandos… Caso ainda esteja enfrentando dificuldades, posta aqui pra gente resolver, ou você pode ir direto no Github do Homebridge pra dar uma olhada.
https://github.com/nfarina/homebridge
Grande abraço!
Gnd Alliston,
Sou péssimo em inglês; logo, fui à página que você citou, mas não adiantou. Outrossim, o problema que foi resolvido com o seguinte comando:
sudo apt-get install npm nodejs
Homebridge monstrous-me um QR code e ou código de 8 dígitos. Agora, vou continuar.
Abrigado!
Alliston td bom?
quando vou instalar no RPI3 a biblioteca libavahi-compat-libdnssd-dev ele da erro para encontrar um mirror para download, segue abaixo:
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libdbus-1-dev
The following NEW packages will be installed:
libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd-dev
libavahi-compat-libdnssd1 libdbus-1-dev
0 upgraded, 5 newly installed, 0 to remove and 60 not upgraded.
Need to get 423 kB of archives.
After this operation, 1,277 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Err:1 http://mirror.nbtelecom.com.br/raspberryPI/raspbian stretch/main armhf libavahi-common-dev armhf 0.6.32-2
Could not connect to mirror.nbtelecom.com.br:80 (189.45.5.90), connection timed out
Err:2 http://mirror.nbtelecom.com.br/raspberryPI/raspbian stretch/main armhf libdbus-1-dev armhf 1.10.26-0+deb9u1
Unable to connect to mirror.nbtelecom.com.br:http:
Oi Felipe, boa tarde!
Tente rodar o comando sudo apt-get update e depois execute novamente o comando para instalar a dependência 😉
Grande abraço!
Muito bom o tutorial, uma sugestão, a instalação com o Docker é mais simples.
https://github.com/oznu/docker-homebridge/wiki/Homebridge-on-Raspberry-Pi
Mais tutorial show de bola! Parabéns!
Me diz uma coisa, esse tutorial também serve para a Raspberry 1?
Oi Edmar, muito obrigado!
Infelizmente a primeira versão da placa não suporta a execução do NodeJS. O mínimo para esse tutorial seria a versão 2.
Um grande abraço!
Estou tentado fazer na Pi zero w e estou tendo o seguinte problema na instalação do homebridge:
npm WARN enoent ENOENT: no such file or directory, open ‘/home/pi/package.json’
npm WARN pi No description
npm WARN pi No repository field.
npm WARN pi No README data
npm WARN pi No license field.
Alguém sabe o que pode ser?
Bom tutorial Alliiston!
Estou tentando fazer com que o Homebridge inicie sozinho no Boot.
Já ví alguns tutoriais… até consegui fazer… mas agora tive que formatar tudo e nnão estou conseguindo reimplementar por nada!
Pode dar uma força?
Obrigado!
Fala Tales, tudo joia?
Cara, se tiver tentando rodar no RaspberryPi, você vai ter que dar uma olhada no seguinte tutorial: https://github.com/nfarina/homebridge/wiki/Running-Homebridge-on-a-Raspberry-Pi (mais especificamente, na seção Running Homebridge on Bootup (init.d))
Já no macOS, o link é esse aqui https://github.com/nfarina/homebridge/wiki/Install-Homebridge-on-macOS
Os procedimentos são um pouco trabalhosos, mas os tutoriais estão bem entendíveis. Caso precise do Windows, tem o link nessas páginas também.
Grande abraço, e qualquer coisa posta aí pra gente resolver!
Nas versões mais novas do Raspbian não precisa configurar o init.d não. Faz pelo systemd que é mais fácil.
Eu configurei utilizando esse tutorial aqui: https://timleland.com/setup-homebridge-to-start-on-bootup/
Muito bom o tutorial. Eu já ia fazer um pra postar pro pessoal do HT Fórum, mas achei esse teu. Tá bem simples e direto.
Eu fiz a instalação (utilizando tutoriais gringos) no meu Macbook e funcionou de boa. Testei com meu controlador IR/RF Broadlink RM Pro e funcionou de boa pra controlar TV, HT, inclusive criei cenas no Homekit.
Estou esperando chegarem meus interruptores da Livolo que funcionam por RF, daí automatizo minha sala toda.
Esse fim de ano vou comprar um RPi 3 pra deixá-lo como Homebridge ligado direto.
Uma sugestão para a Parte 2: dicas de como editar o config.json. Estou utilizando o programa Atom (Mac) e testando os comandos no site https://jsonlint.com/
Que bom que gostou Marlos, a ideia foi exatamente deixar o tutorial bem acessível, sem enrolação.
E tenho que te agradecer, pois não conhecia esse produto da Broadlink, fiquei bastante interessado, ainda mais que integra no Homebridge.
Além disso, muito boa a ferramenta para validar o JSON, bastante simples.
Muito obrigado pelo feedback!
Grande abraço
Fiz esse vídeo com o homebridge rodando no Mac e utilizando a Siri por comando de voz pra legar/desligar a TV. Utilizando o Broadlink como controlador.
https://youtu.be/2dVG4XBvzwA
Muito bom, e bem simples! Vou providenciar um mini pra mim 🙂
Muito bom o tutorial , estou com um projeto de automaçao residencial, seu tutorial foi perfeito, sem enrolaçoes e objtivo!
Ansioso pela parte 2
Que bom poder ajudar Jeferson, já estou cuidando da parte 2, deve vir muita coisa bacana por aí.
Grande abraço!
Também gostei, tem previsão para a parte 2 ?
Obrigado pelo feedback Ricardo!
Acredito que ainda este mês. Farei de tudo pra soltar o post o mais rápido possível!
Sensacional, deu um banho nos tutoriais gringos complexos e cheios de etapas desnecessárias.
Ancioso para próxima etapa.
Obrigado Alliston
Obrigado Leandro!
Fico feliz que tenha achado bem didático.
Um grande abraço!