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.
Controlando sua casa usando por comando de voz com a Siri, isso é uma coisa linda de Deus.
O Homebridge é um servidor escrito em NodeJS que você pode rodar na sua rede e simular a API Homekit do iOS. Eleé um projeto super modular e pode ser expandido com diversos módulos feitos pela comunidade, inclusive integrando com alguns dispositivos inteligentes que não se integram automaticamente ao HomeKit, como por exemplos as lampadas e tomadas da Belkin Wemo e Philips Hue. Tem um plugin reservado no céu para cada um deles.
Homekit
O HomeKit não chega a ser um aplicativo, ele na verdade é um banco de dados e uma API, mais ou menos como o HealthKit para dados de saúde e o PassKit para os tíquetes e cartões, sendo que cada um tem seu aplicativo no iOS, no caso o Health e o Wallet respectivamente.
O HomeKit no caso é um banco de dispositivos de automação e seu aplicativo a partir do iOS 10 é o Home, mas nada impede de instalar outros como o Elgato EVE por exemplo. Eu gosto bastante do visual do aplicativo padrão.
O bacana de utilizar o HomeKit é que todos os dispositivos registrados pode ser comandados e consultados via comandos de voz com a Siri. E como o Homebridge possui diversos plugins, você consegue adicionar diferentes dispositivos sem gastar muito. Alguns dos comandos que podem ser utilizados:
- Siri, desligue o ventilador.
- Siri, ligue a luz do escritório
- Siri, bom dia. (Ativa cenas configuradas na casa)
- Siri, qual a temperatura no quarto ?
O Homekit possui vários dispositivos oficiais que são comercializados no mercado, mas a maioria deles não tem um preço muito convidativo, então seguindo este tutorial poderemos integrar nossos próprios dispositivos com essa API bem bacana de automação e casa inteligente da Apple.
Passo a Passo de instalação do Homebridge
A maioria dos passos foi extraída da própria Wiki do projeto, que pode ser visto aqui. Se quiser algo mais detalhado e não se importar com inglês, está ai a fonte.nfarina/homebridgehomebridge – HomeKit support for the impatientgithub.com
Ao final vou mostrar como configurar o Homebridge no iOS e como integrar com o minha central favorita: Home Assistant. Ainda não sabe o que é o Home Assistant ? Ouvi falar que esse post é muito bom para iniciar com ele no Raspberry Pi.Iniciando com Home Assistant no Raspberry PiSua casa conectada e de fazer inveja nos amiguinhosmedium.com
Instalando o NodeJS no Raspberry Pi
- Digite o comando a seguir para adicionar o repositório do Node ao seu Linux e instalar o NodeJS:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
- Se estiver com uma versão antiga do Raspberry, talvez não dê certo instalar direto do repositório (é o meu caso com o Raspberry Pi 1). Baixe o NodeJS já compilado para Linux embarcado disponibilizado no site deles e instale manualmente com os comando:
wget https://nodejs.org/dist/v6.9.2/node-v6.9.2-linux-armv6l.tar.xz#Descompacte e renomeie com os comandos:
tar -xvf node-v6.9.2-linux-armv6l.tar.xz
mv node-v6.9.2-linux-armv6l node-v6# Mude para o diretório e copie seu conteúdo para /usr/local
cd node-v6/
sudo cp -R * /usr/local/
- Se tudo estiver correto, rodando o comando node -v deve imprimir algo como:
pi@minhacasa:~ $ node -v
v6.9.2
Instalando algumas dependências extras
O projeto Homebridge utiliza como base a biblioteca HAP-NodeJS que implementa as primitivas do Homekit e essa lib tem algumas dependências extras com o módulo Avahi. Apenas execute o comando a seguir que isso será instalado:
sudo apt-get install libavahi-compat-libdnssd-dev
Instalando o Homebridge
Agora finalmente para a instalação do Homebridge. Se você estiver instalado via apt-get, você deve substituir /usr/local/lib por /usr/lib nos comandos a seguir:
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/local/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum
cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild
Configurando o Homebridge como serviço de sistema
Em sistemas Linux Debian mais novos o gerenciador de serviços de sistema utilizado é o systemd, ele é normalmente bem mais simples de configurar do que por scripts init.d. Vamos criar dois arquivos de acordo com esse Gistde um dos mantenedores do projeto.
- Crie o arquivo homebridge dentro de /etc/default e copie o conteúdo a seguir, você pode usar o nano como já usamos anteriormente.
# Configuration options for homebridge
# The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS=-U /var/homebridge# If you uncomment the following line, homebridge will log more
# You can display this via systemd’s journalctl: journalctl -f -u homebridge
# DEBUG=*
- Crie o arquivo homebridge.service dentro de /etc/systemd/system e copie o conteúdo a seguir:
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge# Adapt this to your specific setup (could be /usr/bin/homebridge)
ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process [Install]
WantedBy=multi-user.target
Com os arquivos criados agora precisamos registrar o serviço. Para isso vamos criar um usuário para o Homebridge e os diretório para as configurações.
- O usuário pode ser criado com o comando:
useradd — system homebridge
- Criar um diretório /var/homebridge que o usuário criado possa escrever e também o arquivo config.json dentro do diretório.
# Cria diretório
sudo mkdir /var/homebridge# Adiciona permissão ao usuário
sudo chown -R homebridge:homebridge /var/homebridge/# Abra o arquivo e copie o próximo conteúdo
nano config.json /var/homebridge/config.json
Copie no config.json o conteúdo a seguir, podendo mudar o nome da ponte e a senha, que são os atributos name e pin respectivamente.
{
"bridge": {
"name": "Home Viebrantz",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"platforms": []
}
Agora recarregue os arquivos do systemd e habilite o serviço do Homebridge com os comandos:
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge
Você pode checar os logs com o comando:
sudo systemctl status homebridge
Agora você tem um Homebridge rodando, que reinicia se o serviço falhar e inicia junto com a inicialização do sistema.
Instalando plugins
Sem plugins o Homebridge não faz nada, com eles você pode adicionar várias integrações a ele e disponibilizar via Homekit no seu iOS. Os plugins são módulo NPM e devem ser instalados globalmente para que possam ser adicionados ao Homebridge.
Vou dar um exemplo configurando é claro o meu querido Home Assistant, que possui um plugin oficial para isso chamado homebridge-homeassistant. Com essa integração diversos tipos componentes configurados são automagicamente integrados ao HomeKit.
Alias uma forma de encontrar novos plugins, buscando por módulo que iniciem o nome com homebridge- no repositório NPM. Para instalar globalmente o homebridge-homeassistant rode o comando:
sudo npm install -g homebridge-homeassistant
Após instalado um plugin você deve registra-lo no arquivo config.json no atributos platform. Cada plugin tem os atributos específicos, segue o exemplo para adicionar o Home Assistant.
...
"platforms": [
{
"platform": "HomeAssistant",
"name": "HomeAssistant",
"host": "http://127.0.0.1:8123",
"password": "",
"supported_types": ["binary_sensor", "cover", "fan", "input_boolean", "light", "lock", "media_player","scene", "sensor", "switch"]
}
]
Para que essa integração funcione você deve ativar o componente http no Home Assistant no configuration.yml.
http:
Com isso é só reiniciar o Homebridge para que ele carregue a nova configuração. Isso pode ser feito com o systemd.
sudo systemctl restart homebridge
Adicionando ao seu dispositivo iOS
Bom agora vem a parte mais interessante que é configurar a ponte do Homebridge no iOS. Para isso abra o aplicativo Casa e siga os passos:
- Toque em + no canto superior direto e escolha Adicionar Acessório.
- Espere aparecer a sua ponte do Homebridge, no meu caso Home Viebrantz.
- Ao seleciona a ponte, vai aparecer um aviso que o acessório não é certificado (que blasfêmia), toque em Adicionar Mesmo Assim e digite o código de 8 dígitos o pin que foi configurado no config.json do Homebridge.
- Após isso todos os acessórios disponíveis no Home Assistant vão aparecer um a um para serem configurados. Neste momento você pode alocar cada um em um comodo da casa e dar um nome fácil a ser chamado via comando de voz.
ATENÇÃO, se o nome que você quer usar tem acentuação, coloque corretamente, a Siri não entende “luminaria” sem acento, coloque “luminária” para não ter problemas.
Agora é só correr pro abraço e começar a utilizar os comandos de voz para controlar sua casa.
O Homekit é uma API muito interessante e deixa a Apple um pouco a frente no mercado de automação e casa inteligente com relação aos seus concorrentes, pois isso tudo já está embutido no próprio iOS.
Somando isso a nossa central, o Home Assistant, podemos criar dispositivos próprios, funcionando até mesmo com equipamentos legados, como dei o exemplos com um ventilador e luminárias, sem ter que recorrer aos equipamentos oficiais, que normalmente são bem caros.