sábado, 2 de setembro de 2017

HomeKit da Apple com Home Assistant no Raspberry PI

Homebridge é um servidor NodeJS leve que você pode executar em sua rede doméstica que emular a API do iOS HomeKit. Ele suporta plugins, que são módulos elaborados pela comunidade que fornecem uma ponte com HomeKit para várias APIs de terceiros fornecidas pelos fabricantes de dispositivos de "casa inteligente".

Como o Siri suporta dispositivos adicionados através do HomeKit, isso significa que, com a Homebridge, você pode pedir ao Siri para controlar dispositivos que não possuem suporte para o HomeKit.

Instalando Homebridge


O Home Assistant já é uma plataforma de automação residencial, então este plugin pretende apenas expor seus dispositivos de forma a poder controlá-los com Siri. Embora você possa integrar seus acessórios em HomeKit para automação, os objetivos deste plugin são estritamente para permitir que Siri seja um frontend para seus acessórios.

Quando você configura o plugin do Home Assistent, tudo o que você precisa fazer é apontá-lo no seu servidor. O plugin puxa todos os seus dispositivos e os expõe automaticamente. 

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install git make


$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
Instalando G++


$ sudo apt-get install g++
Instalando o nodejs

$ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -

$ sudo apt-get install -y nodejs
Instalando dependências Avahi 

$ sudo apt-get install libavahi-compat-libdnssd-dev

O Homebridge é publicado através do NPM e deve ser instalado "globalmente" digitando

$ sudo npm install -g --unsafe-perm homebridge

Após a instalação e configuração do Homebridge , você pode instalar o plugin do Home Assistant:

$ sudo npm install -g homebridge-homeassistant

Para atualizar o o plugin do Home Assistant basta executar o comando abaixo:

$ sudo npm upgrade -g homebridge-homeassistant


Configuração do Plugin homebridge-homeassistant


Tal como acontece com outros plugins do Homebridge, você configura o plugin do Home Assistente, adicionando-o ao seu config.json. Para evitar demasiadas informações no seu registro, apenas esteja configurado logging para false assim que tudo funcione sem problemas.

{
    "bridge": {
        "name": "Homebridge",
        "username": "XX:XX:XX:XX:XX:XX",
        "port": 51826,
        "pin": "031-45-154"
    },
    
    "description": "This configuration file with one fake accessory .",
    
    "platforms": [
        {
    "platform": "HomeAssistant",
    "name": "HomeAssistant",
    "host": "http://localhost:8123",
    "password": "yourapipassword",
    "default_visibility": "hidden",
    "supported_types": ["automation", "binary_sensor", "climate", "cover", "device_tracker", "fan", "group", "input_boolean", "light", "lock", "media_player", "remote", "scene", "sensor", "switch"],
    "default_visibility": "hidden",
    "logging": true
         }
    ] 
}

Adicionar o Homebridge na inicialização

Crie primeiro um usuário homebridge.

$ sudo useradd --system homebridge

Crie um diretório para armazenar o arquivo de configuração e depois copie o arquivo de configuração "config.json" para esse diretório.

$ sudo mkdir /var/lib/homebridge

Crie o arquivo homebridge com o conteúdo logo a seguir.

$ sudo nano /etc/default/homebridge
# Defaults / 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/lib/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 script do systemd  homebridge.service com o conteúdo logo a seguir.

$ sudo nano /etc/systemd/system/homebridge.service
[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)
# See comments below for more information
ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target
Habilite o serviço para inicialização no boot.

$ sudo systemctl daemon-reload

$ sudo systemctl enable homebridge

$ sudo systemctl start homebridge

Referências


  • https://www.npmjs.com/package/homekit2mqtt
  • https://github.com/home-assistant/homebridge-homeassistant
  • https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi

Um comentário:

  1. Não estou conseguindo conectar com app

    {
    "hosts": [{
    "address": "192.168.1.76",
    "mac": "34:ea:34:e7:d7:28",
    "isRFSupported": true
    }],

    "bridge": {
    "name": "Homebridge",
    "username": "CC:23:3D:E3:CE:30",
    "pin": "031-45-154"
    },

    "description": "This is an example configuration file with one fake accessory and one fake platform. You can use this as a template for creating your own configuration file containing devices you actually own.",


    "platforms": [{
    "platform": "BroadlinkRM",
    "name": "Broadlink RM",
    "accessories": [{
    "name": "ar",
    "host": "192.168.0.41",
    "type": "switch",
    "data": {
    "on": "26006801120001f26100012710110f330e120f120e120f120e130f1110110f3210110f111031101110110f3210320f320f320f330f1110110f1210100f12101010110f120f1111100f120f110f130e120f120e120f120e130e1210110f1111100f120f11101110110f1110110f1210110e130e120f320f330e330e331063600001270f3210110f1110110f120f1110120e120f120e330f120e120f330f111031113110310f32103110320f120f120e120f120e130e120f120f1110111011101010110f1110110f120f1111100f120f120f120e120f120e120f120f120f1110110f120f1110110f1110110f120f1110110f120f63600001280f320f120f120f1110110f12101010110f1110320f1110110f320f3310310f330e120f3210320f320f3210311131103110320e130e120f120e330e331031101110110f1110110f11101110110f11101110320f120e120f120e330f120f1110110f120f1110110f11103210310f32103210000d05",
    "off": "260068011400024964000124120f1130120f110f120f110f120f120f111011301110101110311130120f1130122f122f1230113011111010111010101110101011101011110f120f1110110f120f110f120f1110110f120f11101110111010100f12101011101011110f120f110f120f120f110f120f1110113011301162620001260f321011101011101110110f120f110f120f122f120f111011301110113011311031103111301230110f120f110f120f120f110f120f1111101011100f111110101011101110110f120f1110110f120f110f120f120f110f120f1111101011100f111110101011101110110f120f11101161630001241230110f120f1110110f121010101110101110311010120f1130120f110f120f122f122f12301130113110311130113111301110110f120f1130122f12301110111010101110101011101011110f120f1130120f110f120f122f120f1110110f1210101011101010111010111031113012000d05"
    }
    },
    {
    "name": "tv",
    "host": "192.168.0.41",
    "type": "switch",
    "data": {
    "on": "26004800000125951312111411391212131211141113121411381138121312381138113911381336131310151212123714111115111311141138113910391213113910391138123813000d05",
    "off": "26004800000125951312111411391212131211141113121411381138121312381138113911381336131310151212123714111115111311141138113910391213113910391138123813000d05"
    }
    }

    ]
    },
    {
    "platform": "HomeAssistant",
    "name": "HomeAssistant",
    "host": "192.168.0.41",
    "password": "123456",
    "default_visibility": "hidden",
    "supported_types": ["automation", "binary_sensor", "climate", "cover", "device_tracker", "fan", "group", "input_boolean", "light", "lock", "media_player", "remote", "scene", "sensor", "switch"],
    "logging": "false"
    }
    ]
    }

    ResponderExcluir