¡Por fin he podido añadir compatibilidad HomeKit a accesorios incompatibles como los enchufes WeMo! Algo que llevaba deseando desde que se lanzó HomeKit y de lo que (casi) había perdido la esperanza.
Este proceso que hoy quiero compartir sirve para dar compatibilidad con Apple HomeKit a cualquier accesorio usando Homebridge instalado en un Mac, aunque también existe la opción de instalarlo en un NAS o en una Raspberry Pi. Es un proceso que no dura más de 10 minutos, tras los cuales podrás controlar desde la aplicación Casa de HomeKit tus accesorios no compatibles. Suena bien, ¿no? De momento lo he hecho con WeMo, pero el siguiente va a ser el Tado AC Control Climatizador Inteligente
Créditos
Antes de nada quiero compartir cómo y dónde encontré la información, proceso que comenzó haciendo una simple búsqueda en internet que me devolvió varios resultados, entre los cuales encontré este post de iMore, este plugin de NSM y este otro post en Raging Tech que me facilitó el bueno de Manuel Arroyo.
Con toda esa información me puse manos a la obra para darle compatibilidad HomeKit a WeMo, concretamente a los dos enchufes que tengo, el WeMo Switch y el WeMo Insight, siguiendo los pasos indicados, pero me encontré con alguno que no funcionaba. Con la suma de las partes que sí funcionan he querido escribir este post para que te sirva de ayuda si lo que quieres es controlar tus accesorios incompatibles con HomeKit.
De todas formas, si lo que quieres es hacerlo con otros accesorios que no sean el WeMo te recomiendo que veas la lista completa de plugins disponibles, donde encontrarás plugins que añaden compatibilidad HomeKit a accesorios como Nest (puedes seguir este tutorial de Ruben en AppsInSwift donde detalla paso a paso la configuración), SamsungTV, TV Sony, TV LG, accesorios como el Tado o, incluso, características de los coches eléctricos Tesla, como el climatizador o la apertura y cierre de las puertas.
Utilizaré algunas capturas del proceso de iMore mezcladas con capturas mías.
Advertencia
Me veo obligado a advertirte que hagas el proceso bajo tu única responsabilidad. Yo lo he hecho y ha funcionado, pero no deja de ser «algo» que hace que productos que no tienen compatibilidad con HomeKit la tengan, con lo que desconozco qué «procesos» se salta para conseguirlo.
Para hacerlo has de tocar «Terminal». Si te limitas a copiar y pegar los comandos que he puesto todo irá bien. No es fácil romper algo desde Terminal si no tienes conocimientos, pero por si acaso limítate a copiar y pegar.
Tampoco sé si tras hacer el proceso tu Mac pasa a formar parte de una red de Macs zombies que envía mails de spam con vídeos de Rick Astley… Así que, lo dicho, bajo tu responsabilidad.
Requerimientos
Lo primero que vas a necesitar es un Mac que esté encendido siempre en casa para hacer de «puente de HomeKit» entre los accesorios y el Apple TV. Si tienes un Mac mini o un iMac encendido siempre en casa sería lo ideal.
Imprescindible también tener un Apple TV, la «central HomeKit.
Vas a necesitar Xcode, que puedes descargar de forma gratuita desde la Mac App Store
Vas a necesitar también descargar Node.js e instalarlo como cualquier app en el Mac.
Y también necesitarás algún editor de texto que no corrija las comillas tipográficas ni guiones inteligentes. Te debería servir TextEdit siempre y cuando tengas predefinido que abra y cree los archivos en texto plano. Yo lo probé y, aún teniéndolo así, me dio error la primera vez, así que decidí seguir los pasos de la guía de iMore e instalé la aplicación que ellos recomiendan y que es gratuita: Atom, que puedes descargar desde aquí.
Con todo esto vamos a poner manos a la obra:
Añadir compatibilidad HomeKit a accesorios incompatibles tipo WeMo
Crear el servidor NodeJS
Tras haber instalado Node.js haz lo siguiente:
- Abre Spotlight con Comando (⌘) + barra espaciadora.
- Escribe «Terminal» y pulsa Enter
- Cuando se abra la app Terminal entra el siguiente comando para instalar Homebridge:
sudo npm install -g --unsafe-perm homebridge
- Homebridge se instalará. Espera a que se complete el proceso.
- Una vez haya finalizado escribe
homebridge
y pulsa Enter. - Debería aparecerte el siguiente mensaje:
No plugins found. See the README for information on installing plugins.
¡Esto significa que Homebridge ya se ha instalado en tu Mac!
- Sal de Homebridge con esta combinación de teclas: Control ⌃ + C.
captura de iMore
Crear el archivo de configuración
Parar poder añadir accesorios al sistema HomeKit (Casa) con Homebridge son necesarias dos cosas: El plugin de tu accesorio (que más adelante veremos cómo instalarlo) y una pequeña modificación en el archivo de configuración del Homebridge. Para esto último deberás crear el archivo de configuración siguiendo estos pasos:
- Abre una ventana de Finder y pulsa la combinación de teclas Mayúsculas (⇧) + Comando (⌘) + G para que aparezca el diálogo «Ir a la carpeta»
- Pega la siguiente ruta en la ventana de «Ir a la carpeta» y pulsa Enter:
/usr/local/lib/node_modules/homebridge
- Copia el archivo llamado config-sample.json a tu Escritorio.
- Abre otra ventana nueva de Finder y pulsa Mayúsculas (⇧) + Comando (⌘) + G para abrir otra vez el diálogo «Ir a la carpeta»
- Pega el siguiente comando y pulsa Enter:
~/.homebridge
- Ahora copia el archivo config-sample.json que antes has puesto en tu escritorio y pégalo en la carpeta .homebridge que te ha aparecido.
- Renombra el archivo config.json (borra la parte -sample del nombre).
captura de iMore
En este punto ya habrás creado el archivo necesario para hacer que todo funcione, archivo que ahora tocará modificar y, para ello, como ya te he dicho antes, te recomiendo algún editor de texto que no corrija las comillas tipográficas ni guiones inteligentes. Yo decidí seguir los pasos de la guía de iMore e instalé la aplicación que ellos recomiendan y que es gratuita: Atom, que puedes descargar desde aquí.
El archivo de configuración
Ahora toca abrir el archivo de configuración del Homebridge que has creado en ~/.homebridge
. Ya sabes, botón derecho y Abrir con Atom.
Te recomiendo borrar todo lo que aparece y dejarlo así antes de seguir:
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"description": "este es un ejemplo de archivo de configuración. Úsalo como plantilla para crear tu propia configuración.",
"accessories": [ ],
"platforms": []
}
Cómo instalar los plugins
Ahora toca buscar el plugin que necesitas (en mi caso y en este ejemplo el de WeMo)
- Visita la página de NPM donde está el plugin de WeMo.
- Abre Terminal e introduce este código:
npm install -g homebridge-platform-wemo
Esto instalará el plugin necesario para hacer que tus accesorios WeMo tengan compatibilidad HomeKit.
- Si te fijas en la página de NPM verás que hay una sección de Configuración con un ejemplo. Yo te voy a poner enseguida la configuración tal y como la he puesto yo con mis accesorios WeMo.
- Abre el archivo de configuración (el que antes habías copiado en
~/.homebridge
) con el editor de texto Atom. - Pega el texto del ejemplo de configuración, teniendo en cuenta lo siguiente:
- Donde pone
"BelkinWeMo_name"
tienes que poner el nombre de tu dispositivo WeMo exactamente igual que lo tienes en la app de WeMo en tu iPhone. En mi caso he puesto WeMo Switch y WeMo Insight que es tal y como están en la app. - Donde pone
"name"
tienes que poner el nombre que quieres que aparezca en la App «Casa», que también será el nombre que utilices cuando quieras usar el WeMo con Siri, por ejemplo,lámpara
oenchufe
Así debería quedar tu archivo (con los nombres de tus dispositivos)
`{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"description": "Esta es nuestra configuración Homebridge",
"platforms": [
{
"platform": "BelkinWeMo",
"name": "Enchufe",
"description": "WeMo Switch",
"BelkinWeMo_name": "WeMo Switch"
},
{
"platform": "BelkinWeMo",
"name": "Lámpara",
"description": "WeMo Insight",
"BelkinWeMo_name": "WeMo Insight"
},
{
"platform": "BelkinWeMo",
"name": "Detector movimiento",
"description": "WeMo Motion",
"BelkinWeMo_name": "WeMo Motion"
}
]
}`
- Guarda el archivo que acabas de modificar, el config.json
A probar si funciona lo hecho hasta ahora
Ahora toca comprobar que todo funciona, abriendo Terminal y poniendo el comando siguiente comando y pulsando Enter
homebridge
Deberías ver cómo Homebridge detecta los accesorios que has configurado.
Si te aparece esto es que lo has hecho todo bien.
Conectar el Homebridge a tu Casa HomeKit
Ahora toca añadir los accesorios WeMo a la aplicación Casa, para ello sigue estos pasos:
- Asegúrate de tener abierto Terminal en tu Mac.
- Escribe
homebridge
y pulsa Enter. - Se lanzará Homebridge.
- Abre la aplicación Casa en tu iPhone (estando conectado a la misma red que tu Mac).
- Pulsa el botón añadir de la parte superior derecha de la pantalla (+).
- Pulsa en Añadir un accessorio.
- Pulsa en el accesorio Homebridge
- Te aparecerá una alerta que dice, «This accessory is not certified and may not work reliably with HomeKit.» pulsa en añadir igualmente.
- Pulsa ahora en añadir el código de forma manual que aparece en la parte inferior.
- Entra el código, que debería ser
031-45-154
- Añade el «accesorio» Homebridge y pulsa siguiente.
- Añade ahora tu accesorio WeMo (o tus accesorios WeMo).
captura de iMore
Y… ¡BOOOM! Si lo has hecho todo bien ya puedes disfrutar de tus accesorios WeMo en HomeKit y controlarlos desde tu iPhone.
Recomendaciones
- Recuerda que tu Mac tiene que estar encendido para que funcione.
- Recuerda también que tiene que estar conectado a la misma red (WiFi o LAN) que tus accesorios WeMo. Si lo usas en casa no deberías tener problema a no ser que tengas 2 routers / 2 redes distintas.
- Recuerda, por último, que Terminal tiene que estar abierto y corriendo Homebridge. Para ello lo recomendable es que crees un servicio que se inicie cada vez que inicies tu Mac, aunque también puedes no hacerlo y limitarte simplemente a abrir Terminal e introducir
homebridge
y pulsar Enter. Si optas por crear el servicio te pongo los pasos (opcionales) a continuación:
Crear el servicio
Actualización 15/07/17
Lo ideal es crear un servicio que haga que Homebridge arranque al encender el Mac o que se levante si se cae. Añado cómo hacerlo, pasos que me ha enviado el bueno de Frank de Batería 2×100.
Para establecer Homebridge como un servicio y que arranque desde el inicio o si “crashea”
- Crear en launchd un fichero plist en ~/Library/LaunchAgents
- Contenido de este fichero (crear en Atom por ejemplo)
- Donde hay /Path/to/logfile.log, sustituirlo por una ruta real
Por ejemplo, podéis crear una carpeta LogHomebridge en /Users/apple/Documents/LogHomeBridge/logfile.log
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd …">
<plist version="1.0">
<dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.homebridge.server</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/homebridge</string>
<string>-I</string>
</array>
<key>StandardOutPath</key>
<string>/path/to/logfile.log</string>
<key>StandardErrorPath</key>
<string>/path/to/logfile.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin/:$PATH</string>
</dict>
</dict>
</plist>
- Ejecutar en terminal :
launchctl load ~/Library/LaunchAgents/com.homebridge.server.plist
¡Y ya está!
Compra un WeMo y a disfrutarlo con HomeKit
Te invito a probar alguno de los productos WeMo y que los integres en tu ecosistema HomeKit, la domótica convertida en comodidad de la mano de Apple.
Excelente. Me interesa poder hacerlo desde Windows. ¿Será posible?
Hola, mira a ver si te sirve esto:
https://github.com/nfarina/homebridge/wiki/Install-Homebridge-on-Windows
Hazte con una raspberry, ya por consumo electrico, lo agradeceras…
¡Eso hice!
TE QUIERO TÍO.
Casi dos años esperando para tener algo similar con mis enchufes WIWO (mierderos de los chinos) y por fin me haces ver la luz. No te imaginas la alegría que me has dado!!
Gracias por tu comentario. ¡Qué bien saber que te ha sido de ayuda!
Hola, luego de instalar homebridge, cuando intento ejecutarlo me aparece el siguiente error
/usr/local/lib/node_modules/homebridge/node_modules/bindings/bindings.js:91
throw err
^
Error: Could not locate the bindings file. Tried:
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/build/ed25519.node
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/build/Debug/ed25519.node
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/build/Release/ed25519.node
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/out/Debug/ed25519.node
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/Debug/ed25519.node
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/out/Release/ed25519.node
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/Release/ed25519.node
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/build/default/ed25519.node
→ /usr/local/lib/node_modules/homebridge/node_modules/ed25519/compiled/6.10.2/darwin/x64/ed25519.node
at bindings (/usr/local/lib/node_modules/homebridge/node_modules/bindings/bindings.js:88:9)
at Object. (/usr/local/lib/node_modules/homebridge/node_modules/ed25519/index.js:1:99)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object. (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:8:15)
Sabrías como solucionarlo?
Gracias!
En homebridge existe el concepto de plataforma y accesorios. Cuando utilizas una plataforma, no es necesario crear una entrada por cada dispositivo que en homebridge se llaman accesorios. Con una sóla entrada de plataforma Belkin_Wemo encontrarás todos los dispositivos.
Existe una gran cantidad de plugins para homebridge, que permiten utilizar gran cantidad de dispositivos no compatibles con HomeKit o bien que añaden características no contempladas en el soporte oficial.
También existe otra posibilidad que es utilizar un software de domotica tipo Domoticz o HAB y luego configurar homebridge con un plugin para ese software.
En mi caso utilizó Domoticz para controlar y establecer reglas en mis dispositivos, y el plugin eDomoticz con homebridge para poder controlarlos con SIri y utilizar los servicios de geolocalización de los iPhone.
Enhorabuena por el tutorial pero hay que perfilar un poco ese archivo de configuración y eliminar entradas innecesarias, afianzando un poco más conceptos y diferencias entre plataforma y accesorios.
Por último, para un uso en producción mi última recomendación es utilizar una raspberry pi o cualquier otra placa con Linux y un procesador ARM. ¿Por qué? Por que una placa con ARM consume entre 2w y 4w a la hora, mientras que un Mac encendido todo el día sólo para esperar unas pocas ordenes es un desperdicio en cuanto a consumo eléctrico. Consideren que en el mejor de los casos un Mac en estado idle o espera consume unos 40w a la hora.
¿Tiene aplicación práctica esto del homebridge? En mi caso, encender La Luz de la entrada cuando llego a casa y es de noche, y apagarla automáticamente a los 10 minutos. Encender el termo por las mañanas y por las trades entre semana, durante media hora únicamente, suficiente para el uso que hago de agua caliente, y apagado automático a la media hora de estar encendido, por si lo enciendo un día manualmente. Esto con enchufes Wemo o Dlink, o los que mejor resultado me han dado que son los TP Link.
Con el termo he conseguido un ahorro de unos 25€~30€ mensuales respecto a tenerlo conectado todo el día.
Saludos y mucho ánimo !!!!
Hola Gustavo,
muchísimas gracias por tu comentario y por tu tiempo en hacerlo llegar. La verdad es que es muy valioso todo lo que comentas y estoy seguro que será de ayuda para muchos.
Tomo nota de lo que comentas de plataformas y accesorios, seguro que se puede simplificar todavía más el ejemplo que puse. ¡Lo probaré!
Respecto a lo del consumo, efectivamente, el consumo del Mac es muchísimo más elevado que el de la Raspberry Pi. De hecho creo que ese será mi siguiente paso, buscar una Raspberry Pi e investigar cómo ponerla en marcha con Homebridge (nunca he tocado una Raspberry Pi…. 😉
Lo del termo hace unos años que lo uso y el ahorro ha sido más que considerable. Escribí un post hace un par de años http://marcalonso.com/ahorra-en-la-factura-de-la-luz-con-tu-iphone/
Me gusta lo de “encender la luz de la entrada cuando llego a casa y es de noche, y apagarla automáticamente a los 10 minutos”, ¿cómo lo haces? Directamente desde HomeKit no he sabido… ¿Quizás con alguna regla de IFTTT?
Muchísimas gracias de nuevo por tu valioso comentario.
Es fácil Marc, sólo tienes que programar una automatización en Homekit. Yo lo tengo de forma que cuando por posición me detecta a 100m de casa y ya se ha puesto el sol enciende La Luz de la entrada. Se pueden hacer mogollón de cosas
Gracias!
Aunque mi principal duda era cómo haces que se apague a los 10 minutos, eso es lo que no he sabido hacer desde HomeKit.
Hola Marc, vas a poner como poder hacerlo desde una Raspberry? seria super interesante gracias.
Hola Dani,
sí, lo tengo pendiente. Lo he probado en casa con una Raspberry Pi y funciona perfecto.
Si te sirve de ayuda, yo seguí estas instrucciones https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi
Buenas, no tengo ni idea de esto y voy muy perdido, Cuando hago desde Terminal lo de instalar Homebridge, acto seguido me pide contraseña y no me deja hacer nada mas, ni escribir lea contraseña de mi iMac ni nada, Que puedo hacer?
Hola,
Tranquilo, no estás haciendo nada mal. Cuando te aparece el campo para introducir la contraseña, mientras la tecleas no sucederá nada, pero en realidad sí que la estás escribiendo, pero en terminal no verás la contraseña ni asteriscos que te indiquen que estás escribiendo.
Tú escribe la contraseña y pulsa Enter, verás como te deja seguir.
Buenas, ya he conseguido hacerlo, muchas gracias. El problema ahora lo estoy teniendo para cargar el plugin, lo he intentado vi una luces Mi Light y ahora con una tele LG con webOs. He puesto el puerto que me daba Terminal, he puesto la ip de la tele y la Mac de la tele. No se si el fallo está en tener que modificar la Mac de Homebridge o en alguna línea. Gracias.
Hola. Soy nuevo en este mundillo y estoy empezando a hacer mis primeros movimientos con raspberry y Homebridge. Muchas gracias por dedicar tiempo a escribir vuestros pasos y pruebas. Adjunto un documento que puede servir de bastante ayuda para los nuevos como yo
https://core.ac.uk/download/pdf/200977246.pdf
saludos
Hola, me he decidido a hacer el proceso, ya que tengo un iMac siempre encendido en casa y resulta que al ejecutar el primer comando en terminal la respuesta es sudo: npm: command not found a si que no consigo ni comenzar con el proceso (tengo Mac OS Catalina, iMac 21,5 finales 2013)
Hola. Tengo varios accesorios compatibles de forma nativa con HomeKit en casa (luces, persianas, TV, AA…). He instalado Homebridge en un MackBook Pro con la idea de hacer compatible un ventilador de techo a través de un BroadlinkRM Mini3. He conseguido instalar el pluging y copiar los comandos ON/OFF; el caso es que no consigo pasar de ahí. En la App Casa no me aparece el accesorio “Ventilador” que tengo configurado, en principio, correctamente (al menos, sin errores de sintaxis).Tan solo sigue el botón “Learn”
¿Sabéis qué puede estar pasando?.
Saludos y gracias.