Si llegáis aquí desde la anterior parte del tutorial, por fin ha llegado el momento de arrancar la aplicación y realizar las primeras pruebas contra nuestro controlador eedomus. He de confesar que la primera vez que le dije a Siri: “Enciende la televisión“, y la televisión se encendió, me produjo una enorme sensación de satisfacción. Me pasé un buen rato jugando a encender y apagar la tele aún siendo consciente de que esta práctica no es muy recomendable.
Además de arrancar la aplicación, en esta tercera parte del tutorial, crearemos un script de arranque para que la aplicación se inicie automáticamente cuando la encendemos. También daremos un pequeño repaso a dos aplicaciones para iOS, y veremos algunas de las opciones de configuración que podemos aplicar para hacer que Siri nos entienda mejor.
Al finalizar esta parte del tutorial ya tendréis a Siri a vuestra casi entera disposición.
Arranque de la aplicación homebridge
En el anterior capítulo ya habíamos creado el fichero de configuración config.json, pero antes de arrancar nuestra aplicación, vamos a automatizar el proceso de arranque para que cada vez que encendamos (o reiniciemos) nuestra Raspberry Pi se ejecute de forma automática homebridge. De esta forma será más autónomo y no tendremos que hacer nada ante un corte de luz o reinicio de nuestra Raspberry Pi. Para realizar estos pasos, es recomendable hacerlo como usuario root.
Este es el script para arranque automático de homebridge:
#!/bin/sh ### BEGIN INIT INFO # Provides: homebridge # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO dir="/home/pi" cmd="DEBUG=* /usr/local/bin/homebridge" user="pi" name=`basename $0` pid_file="/var/run/$name.pid" stdout_log="/var/log/$name.log" stderr_log="/var/log/$name.err" get_pid() { cat "$pid_file" } is_running() { [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1 } case "$1" in start) if is_running; then echo "Already started" else echo "Starting $name" cd "$dir" if [ -z "$user" ]; then sudo $cmd >> "$stdout_log" 2>> "$stderr_log" & else sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" & fi echo $! > "$pid_file" if ! is_running; then echo "Unable to start, see $stdout_log and $stderr_log" exit 1 fi fi ;; stop) if is_running; then echo -n "Stopping $name.." kill `get_pid` for i in {1..10} do if ! is_running; then break fi echo -n "." sleep 1 done echo if is_running; then echo "Not stopped; may still be shutting down or shutdown may have failed" exit 1 else echo "Stopped" if [ -f "$pid_file" ]; then rm "$pid_file" fi fi else echo "Not running" fi ;; restart) $0 stop if is_running; then echo "Unable to stop, will not attempt to start" exit 1 fi $0 start ;; status) if is_running; then echo "Running" else echo "Stopped" exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit 0
Debemos guardarlo en:
/etc/init.d/homebridge
Para guardarlo, podemos hacer uso de cualquier editor, como por ejemplo vi o pico, con el que más cómodos nos sintamos.
Personalizamos el script con nuestros datos (usuario y home), si es el usuario pi no hay que cambiar nada:
dir="/home/pi" cmd="DEBUG=* /usr/local/bin/homebridge" user="pi"
Asignamos permisos al script de arranque:
# chmod 755 /etc/init.d/homebridge
Añadimos en defaults el script:
# update-rc.d homebridge defaults
Ahora debería arrancarse automáticamente cada vez que arranque la Raspberry Pi. También, a partir de ahora, podemos arrancar y parar la aplicación a nuestro gusto de la siguiente forma:
Arrancar:
sudo /etc/init.d/homebridge start
Parar:
sudo /etc/init.d/homebridge stop
Reiniciar:
sudo /etc/init.d/homebridge restart
Comprobar estado:
sudo /etc/init.d/homebridge status
Ficheros de log:
/var/log/homebridge.log /var/log/homebridge.err
Para facilitar la lectura de la salidas de todos los log de homebridge:
tail -f /var/log/homebrige.*
Ahora ya sí que por fin vamos a arrancar homebridge. Para esta primera vez conviene consultar los logs que registra la aplicación, por si surge algún problema. Si tenéis algo de soltura con linux y ssh conviene tener dos consolas (sesiones o ventanas) abiertas en nuestra raspberry, una para ver los logs que nos muestre homebridge y otra para ejecutar los comandos. Si no os sentís muy cómodos con esto, podréis ver los logs que se generan después, una vez arrancado, por tanto si elegís esta segunda opción, os podéis saltar el paso de la “Sesión 1”
– Sesión 1:
Visualizar por pantalla en tiempo real los logs que genere homebridge:
# tail -f /var/log/homebridge*
– Sesión 2:
Arrancamos homebrige:
# sudo /etc/init.d/homebridge start
Si ya lo teníamos arrancado de antes, debemos pararlo y arrancarlo nuevamente:
# sudo /etc/init.d/homebridge stop # sudo /etc/init.d/homebridge start
Una vez que lo hayamos arrancado, vamos a la primera sesión para comprobar lo que nos esté mostrando homebridge, sería algo así:
==> /var/log/homebridge.err <== *** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi. *** WARNING *** Please fix your application to use the native API of Avahi! *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node> *** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi. *** WARNING *** Please fix your application to use the native API of Avahi! *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister> ==> /var/log/homebridge.log <== Loaded plugin: homebridge-eedomus Registering accessory 'homebridge-eedomus.eedomus' --- Loaded config.json with 1 accessories and 0 platforms. --- Loading 1 accessories... [Television] Initializing eedomus accessory... Scan this code with your HomeKit App on your iOS device to pair with Homebridge: -------------- | 031-45-154 | -------------- ==> /var/log/homebridge.err <== Mon, 04 Jan 2016 12:00:00 GMT Accessory [Homebridge] Creating new AccessoryInfo for our HAP server Mon, 04 Jan 2016 12:00:00 GMT Accessory [Homebridge] Creating new IdentifierCache ==> /var/log/homebridge.log <== Homebridge is running on port 51826. ==> /var/log/homebridge.err <== Mon, 04 Jan 2016 12:00:00 GMT EventedHTTPServer Server listening on port 51826
Si la salida es similar a ésta, entonces todo parece ir bien. Como podéis ver, la primera parte son los WARNING que comentábamos anteriormente, y que podemos ignorar. Después nos carga nuestro plugin de homebridge-eedomus y lo registra como accesorio. Dependiendo del desarrollo del plugin puede ser accesorio o plataforma, en nuestro caso esta primera versión la he creado como accesorio, pero más adelante me gustaría intentar registrarlo como plataforma y que automáticamente descubra nuestros dispositivos de eedomus. A continuación, carga los accesorios (nuestros módulos de eedomus) que hemos añadido a nuestro fichero de configuración.
En el recuadro lo que tenemos es el código PIN que deberemos utilizar un poco más abajo para registrar nuestro homebridge dentro de la plataforma HomeKit de Apple.
Lo siguiente son logs internos del propio homebridge, que básicamente indican el puerto que ha levantado en nuestra Raspberry Pi.
Ahora ya podemos continuar con el siguiente paso para registar nuestro homebridge dentro de HomeKit.
Si sólo teníais una sesión o ventana abierta, podéis ejecutar lo siguiente para ver el log:
pi@raspi ~ $ cat /var/log/homebridge*
Instalación de las aplicaciones en iOS
Una vez que ya tenemos homebridge instalado y arrancado con el plugin para eedomus, es hora de instalar un par de aplicaciones en el dispositivo iOS, y así poder registrar homebridge dentro de HomeKit.
Personalmente, la que más utilizo es Elgato Eve. Se trata de una aplicación muy funcional y que permite crear estancias, escenas, zonas y grupos de servicio. Podéis probar otras aplicaciones, pero recomendamos utilizar ésta para la primera integración, y después probar el resto.
Tras haber instalado la aplicación desde la App Store, procedemos a abrirla y vamos al apartado de configuración.
La aplicación nos pedirá el código PIN que configuramos y vimos en el log de homebridge para asociarlo a HomeKit.
Lo siguiente que vamos a hacer es ponerle un nombre a nuestro hogar, podemos símplemente llamarlo “Casa”.
Dejaremos de lado el apartado de “Aspecto“, cada uno lo puede personalizar con las fotos o colores que desee.
El siguiente apartado es “Estancias“, donde crearemos las habitaciones o salas donde vayamos a tener algún dispositivo (garaje, salón, despacho…) y que será útil para cuando tengamos que interactuar con Siri (Siri, enciende las luces del Salón).
Ahora vamos a configurar el apartado “Accesorios”, que será donde nos aparezcan los dispositivos que tengamos asociados a HomeKit.
Después pulsaremos en “Añadir accesorio a Casa“, tras lo cual se pondrá a buscar accesorios compatibles.
Es importante hacer este paso desde la red local, es decir, desde la misma red en la que tengamos homebridge. Si todo ha ido bien, veremos como nos aparece “HOMEBRIDGE“, que es el nombre que le habíamos puesto en la configuración.
A partir de ahora, ya podréis controlar ese módulo que pusisteis en la configuración de homebridge-eedomus a través de Siri. Ahora queda acostumbrarse a la forma de interactuar con Siri, que como veréis, algunas veces es un poco peculiar, pero de eso, hablaremos en el próximo episodio.
Además de esa aplicación, arriba comentábamos que es recomendable instalar “Discovery – Bonjour Browser” también desde la App Store.
Esta aplicación es un buscador de Bonjour. Bonjour es un método para descubrir servicios en una red de área local. En nuestro caso nos interesa para descubrir HAP: HomeKit Accessory Protocol
Lo que queremos ver con esta aplicación es si desde nuestro dispositivo somos capaces de “ver” en local, HAP. Y dentro de HAP: homebridge.
Me he encontrado con que en algunas ocasiones, no se me actualizaban estados o no me respondía homebridge desde el dispositivo. Al probar la aplicación “Discovery – Bonjour Browser” comprobaba que no estaba viendo a homebridge.
En casi todas las ocasiones, bastó con desactivar wifi y volver a activarla para que apareciese nuevamente HAP > homebridge dentro de la aplicación.
Con esto damos por finalizada esta tercera parte del tutorial. Si todo ha ido bien ya podréis pedir a Siri que ejecute comandos en vuestro controlador eedomus. Siri, ¡nos vemos en la siguiente entrega!
Hola Carlos,
He leído que esta funcionalidad se puede con rasp o bien con apple tv, vas a explicar en una nueva entrega dichos pasos o son muy similares a estos, evidentemente saltando varios apartados.
Muchas gracias, un saludo.
Hola Iván,
esta serie de tutoriales está orientado a la instalación y funcionamiento en una Raspberry.
También sería posible hacerlo funcionar en otra distribución de linux, incluso es posible hacerlo en un windows instalando los paquetes adecuados. Pero siempre debería ser un servidor o equipo que esté siempre encendido.
Cuando hacemos referencia al AppleTV, no es por la instalación del software, sino porque es requisito imprescindible para que HomeKit de Apple funcione desde fuera de tu red wifi.
Muy buen tutorial, lo que no me queda perfectamente claro es si el homebridge funciona en español y si esto es por la compatibilidad de eedomus o tú lograste hacerlo así, pregunto porque yo estoy queriendo hacer lo mismo para el smarthost de http://www.savant.com pero solo funciona en inglés.
Muy buen tutorial, muchas gracias, ¿tiene mayores ventajas que los equipos standalone? saludos