Mi smarthome de Xiaomi

¿Qué es el Gateway de Xiaomi? ¿Qué hace Xiaomi con su Gateway? ¿Cómo funciona a nivel de red? ¿Se puede integrar con Hassi.io? En esta publicación intentaremos ver el funcionamiento interno del Gateway de Xiaomi junto con su integración en la plataforma Hass.io.

 

En el año 2015 Xiaomi decidió apostar fuerte en el mercado de los “gadgets” lanzando una gama de productos enfocados en el “smarthome”. El producto se lanzó originalmente para el continente asiático, poco tiempo después ya se podía comprar el Gateway en tiendas asiáticas de exportación. El Gateway era el “cerebro” de la infraestructura y se manipulaba siempre con una app propia de Xiaomi que podíamos usar en nuestro smartphone. Junto con el Gateway, Xiaomi decidió vender diferentes complementos para poder “domotizar” nuestra casa, en este caso se trataban de sensores de puertas, sensores de IR, sensores de vibraciones, pulsadores o incluso “sockets” para enchufar cualquier tipo de aparato eléctrico.

 

El Gateway fue todo un éxito y me hice con un par de ellos a mediados de 2018 para jugar un poco (30 euros el Gateway + 6 euros un sensor de puerta). En mi caso compré el modelo asiático (enchufe asiático solventado por un adaptador de corriente), por suerte la aplicación del móvil estaba traducida al inglés.

Actualmente y bajo el nombre de “Mi Smart Sensor Set” podemos encontrar el producto en el mercado español por unos 80 euros.

La idea del producto es buena, puedes automatizar una casa y crear automatizaciones en pocas horas, puedes por ejemplo programar un aviso al móvil si se detecta la apertura de una puerta o incluso activar el modo alarma para generar pitidos de alarma si se detecta movimiento.

El funcionamiento básico consiste en tener el Gateway conectado a la Wifi y lo manipulamos desde la APP “Xiaomi Home”. En este sentido se sobreentiende que necesita internet para funcionar. En definitiva, es fácil, es intuitivo y económico en comparación a muchos sistemas domóticos del mercado.

¿Bueno? ¿Bonito? ¿Barato? Las tres “B” que dicen algunos. Pero… ¿Qué metemos en casa?

 Análisis

 

A continuación, intentaré explicar de forma muy resumida cosas que he detectado en la red local de mi casa. Quiero remarcar que he utilizado el Gateway asiático y tendríamos que evaluar y analizar si el modelo español actúa por igual.

Tras cambiar el router de la compañía telefónica por un router comprado por mi cuenta, decidí analizar el tráfico entrante y saliente de mi casa (quizás tendría que haberlo hecho mucho antes). En este caso, el router tiene la posibilidad de segregar el tráfico por dispositivo de manera que empecé a curiosear un poco. La grata sorpresa fue al detectar que un Gateway estaba generando entre 1 y 2 MB sin que yo usase la APP del Gateway ni activase ningún sensor.

Mosqueado en ver que la volumetría no era constante en 24 horas en un dispositivo sin uso, decidí meter mano y evaluar el tráfico en una simulación de uso de sensores.

 

En la captura que se adjunta a continuación podemos ver las conexiones que hace nuestro Gateway (192.168.1.123) en una apertura de puerta. Observamos que hace hasta 3 conexiones en 1 segundo hacia el mismo destino.

Quiero añadir que tengo forzado que se le asigne la IP .123 a la MAC del Gateway ya que no he visto opción de cambiar la IP del Gateway a una IP estática.

El Gateway envía tres paquetes hacía la IP 120.92.65.254 (Beijing Kingsoft Cloud Internet Technology) de China. El contenido del paquete está cifrado y por el momento no puedo ver su contenido.

En resumen, sin internet el Gateway no sirve de nada. Ya que toda acción se va hacia China.

 

Entonces… ¿mi gozo en un pozo?

 

No del todo. Resulta que el Gateway dispone de un modo denominado “Wireless communication protocol”. Este modo de configuración está “oculto” dentro de la configuración del Gateway.

En la siguiente captura podemos ver que el Gateway nos genera una password que se autogenera cuando pulsamos el botón “refresh”. Esta password sirve para tener control sobre el Gateway (ej: encender la luz del Gateway de forma remota).

Con el modo Wireless communication protocol habilitado podremos detectar ahora una nueva traza en la red.

En la siguiente captura podemos ver de nuevo las conexiones entre el Gateway y la IP asiática que habíamos visto en anterioridad. La novedad es que ahora podemos ver paquetes que se envían a la IP 224.0.0.50 (el envío a esta IP provoca que el router haga copias del paquete y las envía a todos los receptores que hayan informado de su interés por los datos de ese emisor).

El paquete enviado a multicast podemos ver en texto claro que reporta el SID del sensor, el modelo del sensor, el short_id junto con el estado del sensor “open”. Por el contenido de este paquete intuimos una vez más que los tres paquetes hacia “China” contienen el estado de la puerta con más información adicional.

El punto de los tres paquetes hacia internet lo dejo para una futura investigación.

Personalmente no me gusta ir enviando información de mi casa junto con información que por el momento desconozco a la gente de Xiaomi. ¿Qué solución me viene a la cabeza?

 

Bloquear toda la salida hacia Internet del Gateway.

 

Para bloquear las conexiones debemos revisar si nuestro router tiene la funcionalidad de bloquear el acceso a Internet determinados dispositivos conectados a la red interna, otra opción sería la de montar un pfsense en nuestra red (quizás algún día hago tutorial).

En mi caso, el router me deja bloquear el Gateway de Xiaomi.

Quiero comentar y añadir un dato importante, en el momento que bloqueemos el acceso a Internet dejaremos de administrar y controlar el dispositivo de Xiaomi mediante la APP. Mi recomendación es tener configurados los dispositivos en la APP y bloquear después el Internet.

Una vez bloqueado podemos observar en la siguiente captura del router como el Gateway no realiza ningún tipo de conexión a Internet. En el análisis de trazas podemos observar como el Gateway intenta enviar de nuevo paquetes hacia fuera por UDP (sabemos que se bloquean por el router). Por otro lado, si filtramos por IP destino nuestro Gateway sólo vemos conexiones de red local (en este caso son los otros dos Gateways haciendo su multicast).

Finalizado el análisis puedo afirmar…

  • El sistema de Xiaomi está diseñado para funcionar sólo si está conectado a Internet.
  • Por cada acción física en los sensores, el Gateway envía como mínimo hasta 3 paquetes hacia China.
  • No he visto opción de asignar una IP estática desde el propio Gateway.
    Aislando el Gateway de internet podemos ver como el propio Gateway sigue lanzando paquetes al multicast interno. Bueno para nosotros.
  • Los paquetes hacía red interna se envían en texto claro… Nos podríamos inventar una solución nosotros mismos…

En definitiva, si aislamos el Gateway no regalaremos datos que desconocemos a terceros… ¿Te imaginas que en los paquetes se envía la ubicación del Gateway y nosotros enviamos la ubicación de nuestro smartphone con la APP? ¿Sacan estadísticas de cuanto tiempo pasamos en casa? Se tendría que ver todo… Intentaré investigar más sobre el tema en un futuro.

Integración del Xiaomi Gateway con Hass.io 

Tras analizar que el Gateway sigue realizando el multicast a red interna una vez lo hemos aislado de Internet, es el momento de ver la integración del Gateway con Xiaomi. Se adjunta vídeo de ejemplo al final de las instrucciones.

  • El primer punto y el más importante es tener habilitado el Wireless communication protocol (para habilitarlo tenemos que dar acceso a Internet el Gateway) y guardar el password que nos proporciona la app.
  • El segundo punto es instalar o revisar si tenemos instalado el “file editor”, podría ser que el “file editor” se llame configurator. En todo caso, se debe instalar desde la pestaña add-ons.
  • El tercer punto consiste en añadir la configuración delGateway en el fichero /config/configuration.yaml, en esta configuración añadiremos el gateway junto con su IP (ver formato).
  • Realizada la configuración es necesario guardar el fichero y reiniciar el HASS.
  • Finalmente podremos ver integrado el Gatway de Xiaomi en nuestro Hass.io

En el vídeo se puede ver la configuración del Gateway de Xiaomi junto con la lectura de un sensor de una puerta. 

Tengo previsto crear más tutoriales para explicar más funcionalidades con el Gateway de Xiaomi (modo alarma, enviar eventos por Telegram…)

 

Espero que os haya gustado.

 

Jordi Auladell 

22/05/2020