HomeKit

Apple HomeKit com Homebridge e Raspberry Pi – Parte 1 29

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.

Aplicativo Apple HomeKit

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.

Servo controlando interruptor

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.

Executando o HomeBridge

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

Editando bashrc com nano

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

Arquivo bashrc

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.

Faça seu comentário

Acesse sua conta e participe

29 Comentários

  1. 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!

  2. saberia me explicar como posso instalar o homebridge em um esp 8266 esp-07 ?

    1. Jefferson,

      Talvez o link abaixo pode te ajuda:
      https://www.instructables.com/id/Siri-HomeKit-Controlled-ESP8266-Lock/

      Abraços!
      Diogo – Equipe MakerHero

  3. 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

    1. 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.

      1. 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!

        1. 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!

        2. 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:

          1. 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!

  4. 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

  5. Mais tutorial show de bola! Parabéns!
    Me diz uma coisa, esse tutorial também serve para a Raspberry 1?

    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!

      1. 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?

  6. 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!

    1. 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!

    2. 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/

  7. 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/

    1. 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

      1. 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

        1. Muito bom, e bem simples! Vou providenciar um mini pra mim 🙂

  8. 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

    1. Que bom poder ajudar Jeferson, já estou cuidando da parte 2, deve vir muita coisa bacana por aí.

      Grande abraço!

  9. Também gostei, tem previsão para a parte 2 ?

    1. Obrigado pelo feedback Ricardo!

      Acredito que ainda este mês. Farei de tudo pra soltar o post o mais rápido possível!

  10. Sensacional, deu um banho nos tutoriais gringos complexos e cheios de etapas desnecessárias.
    Ancioso para próxima etapa.

    Obrigado Alliston

    1. Obrigado Leandro!
      Fico feliz que tenha achado bem didático.

      Um grande abraço!

Trackbacks and Pingbacks

  1. […] aqui no blog o tutorial Raspberry Pi para automação residencial. Não lembra? Dá uma olhada AQUI, AQUI ou AQUI.  Mas vamos dividir com vocês um projeto do Deepsyx – membro do […]

  2. […] todos já sabemos, atuando às vezes como servidor de mídia, servidor de arquivos, e até servidor de automação utilizando dispositivos Apple. Mas essa plaquinha pode ir além disso, chegando inclusive a executar máquinas virtuais em seu […]