Agregando la iRobot Roomba 671 a Amazon Alexa

En el último post les comenté que había llegado un nuevo miembro a nuestra familia domótica, la Roomba 671 de iRobot.

Hoy corresponde contarles cómo se puede agregar la Roomba a Amazon Alexa de manera tal de poder darle órdenes a través de este asistente de voz y de los distintos parlantes dispersos en la casa compatibles con dicho asistente, ya sea el Amazon Echo Dot, Amazon Echo Show 5 o Sonos One.

Para esto basta que abramos la aplicación Amazon Alexa en nuestro smartphone, en el menú inferior seleccionamos la sección «Más», luego seleccionamos la opción «Skills y juegos», pinchamos en la lupa en la esquina superior derecha, escribimos «iRobot» y seleccionamos el resultado «iRobot Home» y activamos la skill con lo cual automáticamente podremos comenzar a buscar nuestra Roomba.

Si ya tenemos instalada la skill de «iRobot Home» y por alguna razón no se agregó la Roomba, o queremos agregar una segunda Roomba o una Braava, en el menú inferior seleccionamos la sección «Dispositivos» y luego pinchamos en el símbolo «+» en la esquina superior derecha de la pantalla. Seleccionamos «Añadir dispositivo», en la lista buscamos «Aspiradora» y lo seleccionamos, luego seleccionamos «iRobot».

Nos pedirá que nos aseguremos que la aplicación «iRobot Home» esté descargada y la Roomba esté configurada. Una vez hecho esto, volvemos a la app de Amazon Alexa y pinchamos en el botón «Detectar dispositivos». La aplicación comenzará a buscar nuevos dispositivos, para lo cual es recomendable que enciendas la Roomba presionando 1 vez el botón «Clean».

Una vez detectado el dispositivo, podemos asignarlo a alguna de las habitaciones de nuestra casa, y darle órdenes verbales como «Alexa, pídele a Roomba que comience a limpiar», «Alexa, pídele a Roomba que deje de aspirar» o «Alexa, pídele a Roomba que regresa a su base».

Por emontes, hace

Nuevo miembro en la familia: iRobot Roomba 671

Tenemos un nuevo miembro en la familia… No se trata de mi familia física sino de mi familia domótica. Se trata de una Roomba 671 de iRobot.

Este robot llegó a la casa de la mano de mi esposa, y aunque al principio lo miré con sospecha y poco convencimiento, después de revisar que podía agregarlo a Alexa y a Home vía Homebridge, comenzó a gustarme.

La Roomba 671 tiene es un robot aspiradora con la posibilidad de conectarse a la red WiFi de tu casa, dispone de sensores para detectar las zonas más sucias de la casa, para detectar zonas potenciales de caída como una escalera

Para comenzar a usar la Roomba es necesario descargar la aplicación iRobot Home desde la App Store. Abres la aplicación, creas una cuenta, haces login, y comienzas con el proceso de configuración de la Roomba, para lo cual tendrás que seleccionar la red WiFi a la cual quieres que se conecte e ingresar el password de esta.

En este punto debes interactuar con la Roomba para ponerla en «modo emparejamiento», para lo cual primero la enciendes presionando 1 vez el botón «Clean» y luego mantienes presionados juntos «Dock» y «Spot» hasta escuchar un sonido el cual es la verificación auditiva de que la Roomba está en «modo emparejamiento».

Continúas los pasos en la aplicación iRobot Home hasta que te indique que la Roomba está configurada y lista para comenzar a mantener limpia tu casa.

Cabe hacer notar que el manual del usuario indica que no es un dispositivo para «limpiar» la casa sino para «mantenerla limpia», así que no nos exime de la obligación de realizar aseo, sobre todo porque tenemos un antiguo piso de madera en base a parquet el cual es bastante más complejo de mantener por ejemplo que un piso flotante.

No hay mucho que pueda decir de la Roomba puesto que lleva apenas algo más de 1 día en casa, pero en ese poco tiempo me sorprendió la cantidad de pelo de mascotas y polvo que aspiró. Además me gustó mucho que pueda meterse debajo de las camas, las cuales por tratarse de camas americanas son bastante bajas y por lo tanto es muy complejo hacer aseo debajo de ellas de manera rutinaria.

Para mi gusto, el único punto en contra está en la aplicación, la cual permite que sólo un usuario pueda operar de forma remota la Roomba, aunque como veremos más adelante, esto tiene solución gracias a Amazon Alexa y a Homebridge.

Por emontes, hace

Agregando una ampolleta Philips ZhiRui a Home via Homebridge

Como buen cacharrero, cada cierto tiempo reviso la web de AliExpress buscando alguna novedad tecnológica que pueda ser de alguna utilidad, especialmente si se trata de artículos de domótica.

En una de estas andanzas, encontré unas ampolletas inteligentes marca Xiaomi modelo Philips ZhiRui, las cuales tienen un precio bastante menor (USD$9.95) que las ampolletas Philips Hue y además tienen la cualidad de no necesitar un hub para funcionar, ya que funcionan a través de WiFi.

Específicamente necesitaba una ampolleta inteligente con rosca E14 para una lámpara de pie que instalé en el living de casa. Esta lámpara tiene un soquete E27 en el cual por ahora instalé una ampolleta Philips LED normal, y un soquete E14 para una luz de lectura en el cual tenía instalada una ampolleta LED normal.

De forma nativa estas ampolletas sólo pueden ser utilizadas a través de la aplicación Xiaomi Home, pero se pueden integrar a Home gracias a HomeBridge como veremos a continuación.

1. Obteniendo el token de la ampolleta Philips Zhirui

El primer paso es obtener el token de la ampolleta, pues es un dato requerido por el plugin de homebridge al momento de configurarlo. Antes de esto debemos poner la ampolleta en modo de emparejamiento.

Si es primera vez que instalamos la ampolleta simplemente basta con instalarla y encenderla. Si por el contrario previamente fue agregada a Xiaomi Home, es necesario restaurarla a la configuración de fábrica para lo cual basta con apagarla y encenderla rápidamente 5 veces en 5 segundos.

Una vez que la ampolleta está en modo de emparejamiento, seguimos los pasos para obtener el token. Para esto tenemos dos formas de hacerlo.

1.1 Obteniendo el token con Packet Sender

La primera forma es a través de la aplicación Packet Sender. Descargamos la aplicación en nuestro computador, y la ejecutamos.

Con la ampolleta en modo de emparejamiento, esta crea una red WiFi a la cual tenemos que conectar nuestro computador.

Una vez conectados a esta red, necesitamos conocer la IP de la ampolleta, para lo cual vamos a Preferencias del Sistema – Red, luego seleccionamos la opción WiFi y finalmente pinchamos en el botón «Avanzado». Esto no mostrará una caja de diálogo en la cual tenemos que seleccionar la pestaña TCP/IP. En la etiqueta Router aparecerá la dirección IP de la ampolleta.

Ahora en Packet Sender, tenemos que enviar un paquete con los siguientes datos, reemplazando XXX1 por la IP de la ampolleta.

HEX: 21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
IP: XXX1
Puerto: 54321
Menú desplegable de protocolo: UDP

 La ampolleta debiera devolvernos un mensaje cuyos últimos 32 caracteres hexadecimales corresponden al token.

Guardamos este valor para cuando tengamos que configurar el plugin correspondiente en Homebridge.

1.2 Obteniendo el token con miio

La segunda forma de obtener el token es utilizando la aplicación miio desarrollada por aholstenson y disponible en GitHub. Antes de instalar miio, es necesario que hayas instalado Homebrew tal como discutimos previamente.

Para instalar miio basta con ejecutar el siguiente comando.

sudo npm install -g miio

Es posible instalarla en la Raspberry Pi, pero debido a que para obtener el token es necesario conectarse a la red WiFi que genera la ampolleta, es recomendable instalarla en otro dispositivo puesto que la administración de redes de la Raspberry no es tan sencilla.

En mi caso, la instalé en mi MacBook Pro ya que la gestión de redes del Mac es mucho más flexible. Para instalarla en el MacBook es necesario tener instalado Homebrew, lo cual fue tratado en post anteriores, y obviamente como en el Mac no existe el comando sudo, la forma de instalarla es la siguiente.

npm install -g miio

Ahora que tenemos instalado miio, conectamos nuestro dispositivo a la red WiFi creada por la ampolleta Xiaomi Philips ZhiRui, y ejecutamos el siguiente comando.

miio discover

La aplicación comenzará a buscar los dispositivos que utilizan el protocolo Xiaomi Mi Home, y mostrará una lista entre los cuales estará la ampolleta en cuestión y su respectivo token, el cual debemos guardar para cuando la configuremos en Homebridge.

2. Agregando la ampolleta Philips ZhiRui a Xiaomi Home

Ahora que tenemos el token, tenemos que agregar la ampolleta a Xiaomi Home, para que a través de esta aplicación se conecte a nuestra red WiFi local y el router le asigne una IP, el cual es otro de los datos que necesitaremos para configurarla en Homebridge.

Volvemos a poner la ampolleta en modo de emparejamiento, entramos en la aplicación Xiaomi Home en nuestro smartphone, pinchamos en el símbolo «+» en la esquina superior derecha de la pantalla y en la caja de búsqueda escribimos «zhirui». Seleccionamos «Philips ZhiRui E14 candle lamp» y seguimos con el proceso de emparejamiento tras lo cual la ampolleta será exitosamente agregada al sistema de domótica de Xiaomi.

Para identificar la IP, seleccionamos la ampolleta, pinchamos en los «…» de la esquina superior derecha, seleccionamos «Ajustes adicionales», luego seleccionamos «Información de red», y de esta forma obtendremos la dirección IP.

3. Instalando el plugin homebridge-mi-philips light

Una vez que ya hemos hecho los 2 pasos previos, lo único que resta es la instalación del plugin  homebridge-mi-philips-light, el cual permitirá integrar la ampolleta Philips ZhiRui a Home vía Homebridge. Si bien es cierto que este plugin no fue desarrollado para este modelo específico de ampolleta Xiaomi, funciona sin problemas.

Para instalar dicho plugin basta con abrir una ventana de un navegador web, escribir la dirección IP y el puerto correspondiente a nuestra instalación de Homebridge y loguearnos. Una vez que estemos dentro del sistema, seleccionamos la opción «Plugins» del menú, y en la caja de búsqueda escribimos el nombre del plugin y lo instalamos.

Una vez instalada procedemos a configurar la ampolleta Philips ZhiRui con los siguientes parámetros.

  • En «Light Model» selecciona la opción MiPhilipsSmartBulb.
  • En «IP Address» escribe la IP de la ampolleta Philips ZhiRui que obtuviste en el paso 2.
  • En «Token» escribes el token que obtuviste en el paso 1.
  • En «Name» le das un nombre que la identifique.
  • Finalmente pinchas en «Guardar» y reinicias Homebridge para que los cambios surtan efecto.

Con esto la ampolleta Philips ZhiRui ya aparecerá en Home, y sólo restará asignarla a una habitación ya que tendrá asignado el nombre correctamente.

Por emontes, hace

Instalando Homebrew en MacOS

Cuando comienzas a trabajar con tu Mac al nivel de un usuario avanzado, es muy probable que quieras instalar aplicaciones o paquetes que Apple «no quiere que conozcas». Homebrew es uno de esos productos que Apple no quiere que conozcas.

Con Homebrew podemos instalar todas aquellas aplicaciones que un usuario avanzado de Linux conoce y usa a menudo, por ejemplo daemon, daemontools, npm o wget. Sin embargo yo lo utilizaré para instalar herramientas relacionadas con domótica como veremos más adelante.

Para instalar Homebrew basta abrir una ventana de Terminal y copiar le siguiente comando.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Una vez que el proceso de instalación haya terminado podremos instalar otros paquetes. En mi caso yo instalé wget y npm lo cual se hace con los siguientes comandos.

brew install wget
brew install npm

Eso es todo, ahora a disfrutar del software de línea de comandos como todo un linuxero.

Por emontes, hace

Cómo mantener actualizado el custom firmware de la cámara Xiaomi Xiaofang 1S

Cada cierto tiempo Xiaomi-Dafang-Hacks de EliasKotlyar, es actualizado, como cualquier otro proyecto de desarrollo de software.

Obviamente queremos que nuestro sistema se mantenga actualizado y saque provecho de las nuevas funcionalidades, pero puede que nos de pereza tener que sacar la tarjeta microSD de la cámara, insertarla en nuestro laptop, etc.

Afortunadamente hay dos formas de actualizar el custom firmware de la cámara Xiaomi Xiaofang 1S sin necesidad de sacar la tarjeta microSD de esta.

1. Actualización del custom firmware a través de la interfaz gráfica

El primer método es a través de la interfaz gráfica que nos entrega el custom firmware instalado en la cámara.

Abrimos una ventana de navegador, escribimos la dirección IP de nuestra cámara, ingresamos con el nombre de usuario root y el password ismart12, en el menú «System» seleccionamos la opción Update, y pinchamos en «Update to master firmware». Esperamos a que termine el proceso, tras lo cual la cámara se reiniciará automáticamente.

2. Actualización del custom firmware a través del Terminal y ssh

Para este segundo método sólo necesitamos conectarnos via ssh utilizando el mismo usuario y password para conectarnos a través de la IP en una ventana de navegador, es decir, root y ismart12, y ejecutar algunos comandos.

Abrimos una ventana de Terminal y escribimos lo siguiente.

ssh root@CAMERAIP 
#  cd /system/sdcard/
# ./autoupdate.sh --verbose

Debes reemplazar «CAMERAIP» por la dirección IP de la cámara. El sistema te pedirá que ingreses el password y presiones la tecla ENTER.

Con esto el sistema comenzará a verificar si existe una actualización, y si cada uno de los archivos está actualizado o no, de manera tal que el Terminal nos entregará información similar a la siguiente.

Starting AutoUpdate on branch master
Version file missing. Upgrade to last commit 2c2990b
Getting list of remote files.
autoupdate.sh is up to date.
run.sh is up to date.
.
.
.

Al finalizar el proceso tendremos actualizado el custom firmware de la cámara Xiaomi Xiaofang 1S, o de cualquier otra que sea compatible con Xiaomi-Dafang-Hacks.

Por emontes, hace

Agregando una cámara Xiaomi Xiaofang 1S a Homekit vía Homebridge

Dentro de las cosas que tenía pendiente de realizar era sumar a mi sistema de domótica una cámara Xiaomi Xiaofang 1S la cual había comprado hace tiempo simplemente para probar su calidad y ver si podría ser de alguna utilidad. Hasta ahora sólo la había utilizado a través de la aplicación Xiaomi Home, con lo cual si bien es cierto podía visualizar la cámara, no estaba integrada a Homekit.

Buscando entre los plugins de Homebridge, encontré 2  plugins los cuales permitían agregar dicha cámara a Homekit vía Homebridge. El primero fue homebridge-dafang desarrollado por sahilchaddha, con el cual no logré mi objetivo probablemente porque no logré entender las instrucciones ya que eran algo enredadas. Afortunadamente con homebridge-dafang-mqtt-republish desarrollado por sunookitsune logré agregar exitosamente la cámara a Homekit.

1. Instalando el bootloader y el custom firmware en la cámara Xiaomi Xiaofang 1S

Lo primero que debemos hacer es instalar un bootloader y un custom firmware para lo cual simplemente seguimos las instrucciones publicadas en el repositorio Xiaomi Dafang Hacks en Github desarrollado por EliasKotlyar.

Para esto necesitamos una tarjeta microSD de al menos 512 Mb, aunque en mi caso utilicé una de 2 Gb sin problemas. Es necesario formatearla en FAT32 para lo cual utilicé la aplicación SD Card Formatter descargada desde el sitio web de la sdcard.org.

Una vez formateada seguimos los siguientes pasos

  • Descargamos el bootloader correspondiente a la cámara Xiaomi Xiaofang 1S desde Xiaomi Dafang Hacks.
  • Renombramos el archivo descargado a «demo.bin».
  • Copiamos «demo.bin» a la microSD.
  • Expulsamos la microSD.
  • Desconectamos el cable de alimentación de energía de la cámara.
  • Insertamos la microSD en la cámara apagada.
  • Mantenemos presionado el botón «reset» de la cámara.
  • Volvemos a conectar el cable de alimentación.
  • Mantenemos presionado el botón «reset» por al menos 10 segundos.
  • Esperamos a que el led de la parte posterior de la cámara se apague.

Con esto la cámara ya tiene cargado el bootloader y ahora corresponde instalar el custom firmware.

  • Descargamos el custom firmware desde Xiaomi Dafang Hacks.
  • Editamos el archivo «config/wpa_supplicant.conf.dist», reemplazamos los campos «SSID» y «psk» respectivamente por el nombre y el password de nuestra red WiFi.
  • Guardamos el archivo con el nombre «config/wpa_supplicant.conf».
  • Desconectamos el cable de alimentación de energía de la cámara.
  • Retiramos la microSD de la cámara apagada.
  • Insertamos la microSD en nuestro computador.
  • Copiamos el contenido del directorio «firmware_mod» en la raíz de la microSD. Esto es muy importante.
  • Expulsamos la microSD.
  • Desconectamos el cable de alimentación de energía de la cámara.
  • Insertamos la microSD en la cámara apagada.
  • Volvemos a conectar el cable de alimentación.

El archivo «config/wpa_supplicant.conf» debe verse de la siguiente manera antes de modificarlo. Tal como indiqué más arriba, modifiquen «your_wifi_name» por el nombre de su red WiFi, y «your_wifi_pswd» por el password de esta.

# For more configuration option please see:
# https://w1.fi/cgit/hostap/plain/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1

network={
        ssid="your_wifi_name"
        # Uncomment to connect to Hidden SSIDs
        #scan_ssid=1 
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP WEP104 WEP40
        psk="your_wifi_pswd"
        priority=2
}

Con esto la cámara Xiaomi Xiaofang 1S queda configurada y podemos verificarlo conectándonos a la IP de nuestra cámara. En mi caso la IP asignada fue «192.168.1.100».

  • Abrimos una ventana de navegador y escribimos la IP de nuestra cámara. https://camera_ip.
  • Ingresamos con el nombre de usuario root y con la contraseña ismart12 en el cuadro de diálogo que nos aparecerá para ingresar al sistema operativo de la cámara.

Puede que Chrome no les permita ingresar a la cámara ya que por defecto no acepta conexiones https sin certificado, así que pueden utilizar Safari o Firefox, con los que pueden bypassear este problema.

2. Instalación de Mosquitto en la Raspberry Pi

Antes de instalar y configurar los plugins de Homebridge que permiten agregar la cámara Xiaomi Dafang 1S a Homebridge, es necesario instalar Mosquitto en el dispositivo en que tenemos corriendo Homebridge, en mi caso, una Raspberry Pi.

Para esto nos logueamos en nuestra Raspberry Pi, e instalamos Mosquitto utilizando el siguiente comando.

sudo apt-get install mosquitto mosquitto-clients

Una vez instalado Mosquito, tenemos que activar e iniciar el daemon de Mosquito con los siguientes comandos.

sudo systemctl enable mosquitto
sudo systemctl start mosquitto

3. Configuración de Mosquitto en la cámara Xiaomi Xiaofang 1S

Antes de instalar y configurar los plugins que permiten agregar la cámara Xiaomi Xiaofang 1S a Homebridge, es necesario configurar Mosquitto para que funcione correctamente.

Para esto tendremos que seguir los siguientes pasos.

  • Desconectamos el cable de alimentación de la cámara.
  • Retiramos la tarjeta microSD de la cámara.
  • Insertamos la tarjeta microSD en nuestro computador.
  • Editamos el archivo «config/mqtt.conf.dist».
# Options for mosquitto_sub & mosquitto_pub
#USER=mqtt-user
#PASS=mqtt-password
HOST=your_homebridge_IP
PORT=1883

# Define a location
LOCATION="your_location"

# Define device name
DEVICE_NAME="camera_name"
  • Reemplazamos en HOST el valor «your_homebridge_IP» por la IP del dispositivo en que está instalado Homebridge. En mi caso 192.168.1.30.
  • Reemplazamos en LOCATION el valor «your_location» por algún valor que les haga sentido, sin espacios. En mi caso utilicé «montes-tapia» que es el nombre que tiene mi casa en Home.
  • Reemplazamos en DEVICE_NAME el valor «camera_name» por el nombre que le quieren asignar a la cámara, sin espacios. En mi caso utilicé «camara-comedor».
  • Guardamos el archivo con el nombre «config/mqtt.conf».
  • Expulsamos la microSD.
  • Retiramos la microSD de nuestro computador.
  • Insertamos la microSD en la cámara apagada.
  • Volvemos a conectar el cable de alimentación de energía a la cámara.

4. Configuración de la cámara Xiaomi Xiaofang 1S

Este paso es opcional, pero puede ser útil para asegurarse que la cámara funcione correctamente en Homebridge.

  • Abrimos una ventana de navegador y escribimos la IP de nuestra cámara. https://camera_ip.
  • Ingresamos con el nombre de usuario root y con la contraseña ismart12.
  • En el menú «Configuration» seleccionamos la opción «Video».
  • Dejamos en blanco «Video username» y «Video password».
  • Configuramos «Video Size» con el valor 1280×720, «bitrate» con el valor 300 kbps y «Video format» con el valor CBR.
  • Luego configuramos «FrameRate» con el valor 28 por 1 segundo.
  • Pinchamos en «Set» para grabar la configuración.
  • Nuevamente en el menú «Configuration», esta vez seleccionamos la opción «Audio».
  • Configuramos «Audio format» con el valor PCM.
  • Configuramos tanto «in sample rate» y «out sample rate» con el valor 16000.
  • Configuramos «Filter» con el valor No Filter y deshabilitamos tanto «High pass filter» como «AEC Filter».
  • Configuramos el volumen en la variable «Volume» con un valor razonable, en mi caso utilicé 80%.
  • Pinchamos en «Set» para grabar la configuración.
  • Finalmente en el menú «System», seleccionamos la opción «Reboot».

5. Activación de los servicios en la cámara Xiaomi Xiaofang 1S

Para completar la configuración de la cámara sólo nos falta activar algunos servicios.

  • Abrimos una ventana de navegador y escribimos la IP de nuestra cámara. https://camera_ip.
  • Ingresamos con el nombre de usuario root y con la contraseña ismart12.
  • En el menú «System» seleccionamos la opción «Services».
  • Iniciamos el servicio mqtt-control y activamos la opción autorun.
  • Iniciamos el servicio mwtt-status y activamos la opción autorun.
  • Iniciamos el servicio configureMotion y activamos la opción autorun.
  • Iniciamos el servicio rtsp-h264 y activamos la opción autorun.
  • Ahora en el menú desplegable «Camera Controls» arriba a la derecha, activamos Motion Detection, Motion – MQTT Message, MQTT Status Server, MQTT Control Server y RTSP H264 Server si es que no están activados.
  • Finalmente en el menú «System», seleccionamos la opción «Reboot».

6. Instalación y configuración de homebridge-dafang-mqtt-republish en Homebridge

Ahora corresponde la instalación de los plugins de Homebridge que permiten agregar la cámara Xiaomi Xiaofang 1S a esta plataforma, y por consiguiente a Homekit.

Nos conectamos a nuestra instalación de Homebridge, en mi caso a través de la interfaz gráfica ya que lo tengo instalado vía Docker. Necesitamos instalar 2 plugins, homebridge-camera-ffmpeg y homebridge-dafang-mqtt-republish para lo cual pinchamos en el menú Plugins, y en la caja de búsqueda escribimos el nombre de cada uno de los plugins antes mencionados, uno a la vez para instalarlos.

Una vez instalados el sistema nos mostrará un cuadro de diálogo para configurarlos.

Para la configuración de homebridge-camera-ffmpeg utilicé los siguientes parámetros los cuales al menos para mi funcionaron.

  • En la sección «Cameras».
  • Configuré «Name» con el valor Cámara Comedor. Puedes utilizar cualquier nombre incluyendo espacios.
  • Configuré «Source» con el valor -i rtsp://camera_ip:8554/unicast. Debes reemplazar «camera_ip» con la IP de tu cámara.
  • Configuré «Still Image Source» con el valor -i https://root:ismart12@camera_ip/cgi-bin/currentpic.cgi. Debes reemplazar «root» con el usuario de tu cámara, «ismart12» con el password de acceso y «camera_ip» con la IP de tu cámara.
  • Configuré «Video Codec» con el valor copy.
  • Finalmente activé la opción «Enable Audio».
  • Continuando en la sección «Cameras», subsección «Advanced Settings».
  • Configuré «Maximum Concurrent Streams» con el valor 2.
  • Configuré «Maximum Width» con el valor 1280.
  • Configuré «Maximun Height» con el valor 720.
  • Configuré «Maximum FPS» con el valor 28.
  • Configuré «Maximum Bitrate» con el valor 300.
  • Continuando en la sección «Cameras», subsección «Customization Settings».
  • Configuré «Manufacturer» con el valor Xiaomi.
  • Configuré «Model» con el valor Dafang 1S.
  • En la sección «Automation Settings», subsección «MQTT Client».
  • Configuré «MQTT Server» con el valor homebridge_ip. Debes reemplazar «homebridge_ip» por la IP del dispositivo que está corriendo Homebridge y que es donde instalamos Mosquitto.
  • Configuré «MQTT Port» con el valor 1883.
  • Configuré «MQTT Topic» con el valor homebridge.
  • Finalmente pinchamos en «Save».

Para la configuración de homebridge-dafang-mqtt-republish utilicé los siguientes parámetros los cuales al menos para mi funcionaron.

  • Configuré «Name» con el valor Dafang MQTT.
  • Configuré «MQTT Server» con el valor homebridge_ip. Debes reemplazar «homebridge_ip» por la IP del dispositivo que está corriendo Homebridge y que es donde instalamos Mosquitto.
  • Configuré «MQTT Port» con el valor 1883.
  • Configuré «Homebridge MQTT Topic» con el valor homebridge.
  • En la sección «Cameras».
  • Configuré «Camera Name» con el valor Cámara Comedor. Puedes utilizar cualquier nombre incluyendo espacios.
  • Configuré «Dafang MQTT Topic» con el valor montes-tapia/camara-comedor. Este valor corresponde a las variables LOCATION y DEVICE_NAME que configuramos para Mosquitto en nuestra cámara en el paso Nº 3.
  • Configuré «Manufacturer» con el valor Xiaomi.
  • Configuré «Model» con el valor Dafang 1S.
  • Finalmente pinchamos en «Save».

La configuración tanto de homebridge-camera-ffmpeg y homebridge-dafang-mqtt-republish debe parecerse a lo siguiente.

{
            "name": "Camera FFmpeg",
            "mqtt": "homebridge_ip",
            "portmqtt": 1883,
            "topic": "homebridge",
            "cameras": [
                {
                    "name": "Cámara Comedor",
                    "manufacturer": "Xiaomi",
                    "model": "Dafang S1",
                    "motion": true,
                    "motionTimeout": 0,
                    "videoConfig": {
                        "source": "-i rtsp://camera_ip:8554/unicast",
                        "stillImageSource": "-i https://root:ismart12@camera_ip/cgi-bin/currentpic.cgi",
                        "maxStreams": 2,
                        "maxWidth": 1280,
                        "maxHeight": 720,
                        "maxFPS": 28,
                        "maxBitrate": 300,
                        "vcodec": "copy",
                        "packetSize": 564,
                        "audio": true,
                        "debug": true
                    }
                }
            ],
            "platform": "Camera-ffmpeg"
        },
        {
            "cameras": [
                {
                    "name": "Camera Name",
                    "dafang_topic": "location/device-name",
                    "manufacturer": "Xiaomi",
                    "model": "Dafang S1"
                }
            ],
            "name": "Dafang MQTT",
            "server": "homebridge_ip",
            "port": 1883,
            "homebridge_topic": "homebridge",
            "platform": "dafangMqtt"
        }

Una vez que nos aseguramos que la configuración está correcta, sólo basta rebootear la Raspberry Pi.

7. Configurar la cámara en Home

Finalmente, si todo ha sido realizado como debe ser, al abrir la aplicación Home en nuestro iPhone o iPad, podremos visualizar nuestra cámara al final de todos los dispositivos favoritos.

Seleccionamos la cámara, pinchamos en la rueda dentada arriba a la izquierda con lo cual podremos configurar la habitación a la cual esta asignada la cámara, incluirla o quitarla de favoritos, y activar o desactivar las notificaciones.

Después de todos estos largos, tediosos y complejos pasos, ya tenemos funcionando nuestra cámara Xiaomi Dafang 1S en Homekit vía Homebridge.

Por emontes, hace

Instalando Python 3.x en Raspbian

Hace un tiempo, ArmoredReaper les comentó respecto de cómo instalar Python 3.6.4 en macOS, y dado que tengo en mente la publicación de algunos proyectos que requieren de Python y de nuestra siempre bien amada Raspberry Pi, resulta necesario comentar cómo se instala Python en Raspbian.

Es probable que en su Raspberry ya esté instalado Python, aunque en la versión 2.x la cual dejó de tener soporte a contar del 1 de Enero de 2020. Por esta razón es necesario desinstalarlo e instalar Python 3.x en su reemplazo.

1. Desinstalando Python 2.x

Abrimos una ventana de Terminal y nos conectamos por SSH a nuestra Raspberry Pi, lo cual ya vimos en detalle con anterioridad.

Una vez logueados, desinstalamos Python 2.x utilizando los siguientes comandos.

sudo apt-get remove -y python
sudo apt-get autoremove

Con el primer comando desinstalaremos Python, y con el segundo se desintstalarán los archivos o dependencias que hayan quedado huérfanas y que ya no son necesarias.

2. Instalando Python 3.x

Instalaremos Python 3.x desde los repositorios que vienen definidos por defecto en nuestra instalación de Raspbian. Esto permitirá que Python se mantenga actualizado constantemente sin comandos o procesos demasiado complejos. Para instalar Python 3.x utilizaremos los siguientes comandos.

sudo apt-get update
sudo apt-get install python3 idle3 python3-pip

Con el primer comando actualizamos los repositorios, y con segundo instalaremos los paquetes python3 e idle3. Idle3 es una librería que si bien no es un requisito para Python 3.x, es mejor instalarla desde el principio puesto que otorga bastante funcionalidad a Python y puede que en el futuro la necesitemos. Finalmente python3-pip, es un gestor de paquetes que permite instalar librerías de Python dentro del entorno de Python.

3. Ejecutando archivos py con Python 3.x

Finalmente, para ejecutar los archivos py los cuales ejecutábamos con el comando «python archivo.py», ahora deben ser ejecutados utilizando el comando «python3 archivo.py».

Si les genera demasiado hastío tener que agregar un «3» al final de comando «python», es posible crear un alias para evitar que nuestro cerebro sufra un cortocircuito por esta razón.

Una vez abierto el archivo «/home/pi/.bashrc» como vimos con anterioridad en la entrada correspondiente, sólo basta agregar una línea con el siguiente alias.

alias python='python3'

Y con eso ya tenemos instalado Python 3.x en nuestra Raspberry Pi para los futuros proyectos que tengo que comentarles.

Por emontes, hace

[Domótica] Automatizaciones en Amazon Alexa

Amazon Alexa permite la creación de grupos de accesorios, habitaciones y zonas como en cualquier sistema de domótica, pero no permite la creación de escenas como en Apple Homekit, sino que sólo permite la creación de Automatizaciones las cuales ellos llaman Rutinas. El hecho de no poder crear escenas implica que las automatizaciones son básicas, y que las acciones que la rutina va a ejecutar deben ser registradas una por una, y no se pueden reutilizar o compartir entre automatizaciones.

Crear Rutinas en Amazon Alexa

Para crear automatizaciones, abrimos la aplicación de Alexa, pinchamos en la esquina superior izquierda de la pantalla de inicio donde hay 3 líneas paralelas, se desplegará un menú en el cual debemos seleccionar «Rutinas».

Una vez hecho esto se nos mostrará la pantalla de Rutinas con las secciones «Mis rutinas» y «Destacado». En «Mis rutinas» se listarán las rutinas que hemos creado y en «Destacado» se listarán algunas recomendaciones de rutinas preconfiguradas. Para crear una nueva rutina basta con pinchar el símbolo «+» ubicado en la esquina superior derecha.

Una vez hecho esto veremos una nueva pantalla con 3 secciones, «Introduce un nombre para la rutina», «Cuando» y «Añadir acción».

Una vez que le hayamos dado un nombre a la rutina, pinchamos en «Cuando» y tendremos acceso a las distintas categorías de eventos activadores, «Voz», «Horario», «Dispositivos», «Ubicación», «Alarmas», «Echo button» y «En guardia». «Voz» nos permitirá que el evento activador sea una frase, por ejemplo, «Alexa, buenos días». «Horario» nos permitirá que definamos una hora precisa de activación, al amanecer o al anochecer, pudiendo además configurar la ubicación, una diferencia de tiempo, que la rutina se repita y los días de la semana en que se activará.

«Dispositivos» nos permitirá seleccionar un dispositivo y definir el cambio de estado como el evento activador, por ejemplo, que se cierre o abra una puerta. «Ubicación» nos permitirá que la ubicación de nuestro dispositivo móvil sea el evento activador, para lo cual es necesario conceder permisos a la aplicación para que acceda a nuestra ubicación, lo cual se realiza en Configuración – Privacidad – Localización.

«Alarmas» nos permitirá que el evento activador sea cuando se desactiva una alarma. «Echo button» nos permitirá que el evento activador sea cuando se presiona uno de estos accesorios de Amazon. Finalmente «En guardia» nos permitirá seleccionar esta función como evento activador, por ejemplo, si estoy «fuera de casa» o en «casa».

Una vez definido el evento activador, tenemos que definir la ación o acciones que se ejecutarán. Pinchamos en «Añadir acción», y tendremos una lista bastante nutrida de acciones, como «Alexa dice», «Calendario», «Configuración de dispositivos», «Dispositivos», «E-mail», «El tiempo», «En guardia», «Espera», «Fecha y hora», «IFTTT», «Mensajes», «Música», «Noticias», «Noticias positivas», «Notificación con Drop in», «Resúmenes», «Skills», «Sonidos» y «Tráfico».

«Alexa dice» nos permitirá acceder a acciones predefinidas de Alexa como «Buenos días», «Canta una canción», «Cuéntame un chiste», «Cuéntame una curiosidad», «Cuenta,e una historia», «Dame las buenas noches», «Motívame para que limpie», «Frases», «Salúdame cuando llegue a casa» y «Personalizado» en el cual podremos escribir el texto que queremos que Alexa vocalice.

«Calendario» nos permitirá que Alexa nos lea los eventos de calendario de hoy, de mañana o simplemente el próximo evento, para lo cual tenemos que configurar el acceso a nuestro calendario. Es interesante notar que es posible configurar un calendario de iCloud, lo cual veremos más adelante.

«Configuración de dispositivos» nos permitirá modificar algunas configuraciones de nuestros dispositivos Echo, como «Detener audio», «Volumen» y «No molestar». «E-Mail» permitirá que Alexa haga un resumen de nuestros correos electrónicos, para lo cual es necesario vincular una cuenta de e-mail. «El tiempo» permitirá que Alexa nos informe del tiempo. «En guardia» permitirá que Alexa active el modo «fuera de casa».

«Espera» nos permitirá definir una pausa de horas, minutos o segundos. Muchas veces esta acción antecede a otra acción. «Fecha y hora» permite que Alexa nos diga la fecha y hora actual. «IFTTT» permite ejecutar applets de IFTTT que se activan con una frase específica. Para ello es necesario abrir la aplicación de IFTTT, vincular dentro de esta la cuenta de Amazon y crear un applet para luego poder seleccionarlo en la aplicación de Alexa.

«Mensajes» permite que Alexa envía una «Notificación» dentro de la aplicación de Alexa, o que envíe un mensaje personalizado a través de la opción «Enviar comunicado». «Música» permite reproducir una canción, artista o lista del proveedor de servicio de música que selecciones, por ejemplo Spotify, hasta que termine la canción o la lista o por un período de tiempo determinado. «Noticias» permitirá que Alexa reproduzca el resumen de noticias mientras que «Noticias positivas» permitirá que Alexa reproduzca un resumen de noticias positivas.

«Notificación con Drop in» permitirá que Alexa envía una notificación a algún contacto de Alexa o a algún dispositivo Echo específico. «Resúmenes» permitirá que Alexa nos haga un resumen y destacados con noticias del día relacionadas con nuestros eventos del calendario y recordatorios, o sólo con los destacados.

«Skills» permitirá que Alexa interactúe o ejecute skills, pudiendo seleccionar las skills que ya tengo activadas, u otras skills populares. «Sonidos» permitirá que Alexa haga emita sonidos de animales, de campanas y timbre, de ciencia ficción, de festividades, de multitudes o varios. Finalmente «Tráfico» permitirá que Alexa nos informe sobre el estado del tráfico. Si en nuestro calendario tenemos configurados eventos con una dirección, la información del tráfico tendrá relación con dicho evento.

Tal como lo hice con las automatizaciones en Apple Homekit, la mejor forma de entender cómo crear automatizaciones, es analizando ejemplos. Obviamente tengo muy pocas automatizaciones en Amazon Alexa, ya que la mayoría las tengo creadas en Apple Homekit debido a que permiten mayor complejidad.

Ejemplos de rutinas

Tengo 2 rutinas activadas por voz, «Buenos días» y «Buenas noches». Esta última tiene como evento activador un elemento de la categoría «Voz», de manera tal que cuando yo digo «Alexa, buenas noches», se ejecuta «Decir una frase de buenas noches» al azar, y apaga todas las luces de casa. «Buenos días» es algo más compleja puesto que ejecuta más acciones. Se activa cuando digo «Alexa, buenos días» y nos indica la hora actual, luego comenta algunos datos curiosos, luego lee los eventos de un calendario específico, informa sobre el tiempo, informa sobre el estado del tráfico, y finalmente dice la frase «que tengas un excelente día».

Tengo otras 2 rutinas que se activan automáticamente de acuerdo a la hora del día, «Volumen bajo» y «Volumen normal». «Volumen bajo» se activa todos los días a las 22:00 y lo que hace es regular el volumen del Echo Dot a 2, de manera tal que si alguien habla después de esta hora el dispositivo responda con un volumen menor y así no moleste a quienes puedan estar durmiendo. «Volumen normal» se activa todos los días a las 6:00 y regula el volumen del Echo Dot a 4, de manera tal que todos puedan escuchar las respuesta de Alexa cuando ya hay más ruido en la casa.

Finalmente tengo 2 rutinas que se activan al abrir y cerrar la puerta de la Bodega. Se trata de «Enciende Bodega» y «Apaga Bodega». Estas automatizaciones también las tengo configuradas en Apple Homekit, pero ocasionalmente el Sonoff que activa las luces de la Bodega, se desconecta de Homebridge y obviamente la automatización deja de funcionar transitoriamente. Entonces estas rutinas actúan como respaldo apara cuando la automatización de Apple Homekit deja de funcionar.

No tengo más rutinas configuradas en Amazon Alexa, aunque probablemente agregue 1 ó 2 relacionadas con la alarma, puesto que las automatizaciones de alarmas en Apple Homekit son bastante precarias.

Por emontes, hace

[Domótica] Simulando presencia con Philips Hue

La domótica no solo debe ser útil cuando estamos en casa, haciéndonos la vida más cómoda, sino que también debe ser útil cuando NO estamos en casa y queremos desincentivar a los amigos de lo ajeno a que piensen que nuestra casa está desocupada, por ejemplo cuando nos vamos de vacaciones.

Ni Apple Homekit ni Amazon Alexa contemplan este tipo de automatizaciones, o al menos sería muy complejo realizarlo y gastaríamos demasiado tiempo innecesariamente ya que existe un método mucho más sencillo y eficiente. Afortunadamente Philips Hue nos permite simular presencia de una manera bastante inteligente, encendiendo/apagando luces en forma individual o en grupo, a horarios variables de manera tal que no se enciendan siempre a la misma hora y de la sensación que la casa está ocupada.

Abrimos la aplicación Hue de Phillips y como primer paso nos aseguramos que el control desde fuera de la casa esté activado, para lo cual en el menú de la parte inferior de la pantalla vamos a «Ajustes», luego a «Controla desde fuera de casa», y simplemente lo activamos. Nuestro sistema se conectará a las API de Philips Hue, y se abrirá una nueva pantalla en la cual tenemos seleccionar nuestro país. Pinchamos en «Siguiente» y nos pedirá iniciar sesión, yo al menos lo hice con mi cuenta de Google. Luego nos pedirá confirmar que somos nosotros para lo cual nos enviará una notificación al teléfono. En esta notificación tenemos que pinchar el mismo código numérico que nos mostró la aplicación Hue de Philips. Finalmente la aplicación nos devuelve a la pantalla de API de Philips Hue y pinchamos en «Yes» para concederle acceso a nuestro sistema de luces. Con esto queda configurado el acceso desde fuera de casa.

Ahora tenemos que activar la simulación de presencia para lo cual volvemos a la pantalla inicial de la aplicación, y en el menú inferior seleccionamos «Explora» y luego «Hue Labs». Una vez cargada la página de Hue Labs, encontrar la fórmula correcta es algo complejo ya que no hay una caja de búsqueda. Debajo del título de la página, tenemos un menú con 3 opciones, «Formulas», «Blogs» y «My Labs». Pinchamos en «Formulas» y luego pinchamos en el ícono con forma de «embudo» el cual sirve para filtrar fórmulas. Seleccionamos «Feel Secure» en la sección «Categories», luego pinchamos en «Apply filter» al final de la página, y cuando se refresque la página tenemos que hacer scroll a lo largo de la página hasta encontrar la fórmula «Advanced presence mimicking» y pinchamos en «Try it!».

Avanzamos por la página hasta la sección «Setup this formula» donde podemos cambiarle el nombre, cambiar el ícono que lo representa, y luego configurar su funcionamiento. Es posible activarla usando para ello un rango de fechas, una geovalla o un botón de Philips Hue. En mi caso lo he activado con fechas. Hay que programar 3 horarios, el horario en que normalmente llegas a casa, el horario en que te preparas para ir a dormir y el horario en que ya estás durmiendo. Conjuntamente hay que seleccionar las luces que quieres que encienda cuando llegas a casa y cuando te estás preparando para ir a dormir, ya que normalmente apagamos algunas luces y encendemos otras.

Finalmente hay que seleccionar la aleatoridad con que se encenderán y apagarán las luces de acuerdo a los horarios que programaste. Esto permite que las luces no se enciendan a la misma hora sino que día a día haya un desfase, ya que si se utilizara siempre el mismo horario los ladrones se darán cuenta que se trata de una automatización. Una vez configurado todo pinchamos en «Install» y podremos activar la fórmula en la sección «Hue Labs Controls» de «Hue Labs». También la podremos encontrar en la sección «My Labs» del menú superior.

Con eso tendremos funcionando una simulación de presencia avanzada y podremos irnos sin problema a disfrutar de nuestras vacaciones o de ese fin de semana largo que programamos y planificamos con antelación.

Por emontes, hace

[Domótica] Automatizando un timbre «dingdong» con Aqara Home

Si bien es cierto que Aqara Home es compatible con Apple Homekit, y que la funcionalidad de Apple Homekit es superior al resto de los sistemas de domótica, siempre hay «algo» que no puedes automatizar y que debes hacerlo directamente en el sistema domótico de la marca de los accesorios que quieres automatizar. En este caso se trata de la automatización de un timbre con sonido «dingdong», cosa que no es posible vía Apple Homekit, sino que tuve que recurrir a la aplicación Xiaomi Home para poder lograrlo.

Los hubs de Aqara Home tienen la capacidad de reproducir ciertos sonidos, entre ellos el sonido del «dingdong» de un timbre, pero esta funcionalidad no está disponible dentro del entorno Apple Homekit, ya que Homekit sólo los detecta como 2 dispositivos agrupados en uno sólo, una luz y una alarma, la cual no tiene opciones de sonidos distintos al de la activación o desactivación del sistema de alarma.

Para esto tengo instalado un interruptor inalámbrico en la cara exterior de la puerta de entrada de mi casa, el cual al ser pulsado 1 vez activa a la automatización.

Para crear esta automatización debemos ingresar a la aplicación Xiaomi Home y pinchamos en «Automation» en la parte inferior de la pantalla. Luego seleccionamos «Scenes» en la parte superior de la pantalla y finalmente pinchamos en el signo «+» en la esquina superior derecha.

Una vez hecho esto Aqara Home nos mostrará una nueva pantalla la cual tiene como primera línea el texto «Select Conditions» y como segunda línea el texto «If…», lo cual nos indica que tenemos que seleccionar el evento activador. Luego nos muestra una sección «General» con 4 opciones predeterminadas («Complete manually», «Left or arrived at a place», «Timer» y «When outdoor weather changes»), seguido de la sección «Smart Devices». Esta es la sección que nos interesa, donde seleccionaremos el interruptor inalámbrico de la Entrada. Una vez hecho esto nos permitirá seleccionar el evento activador para lo cual tenemos las opciones «Single press» y «Double press». Seleccionamos «Single press» de manera tal que con una pulsación se active la automatización.

Ahora se nos mostrará una nueva pantalla la cual tiene como primera línea el texto «Select results» y como segunda línea «Then…», lo cual nos indica que tenemos que seleccionar la acción a ejecutar. Luego nos muestra una sección «General» con 4 opciones predeterminadas («Run automation», «Turn on/off an automation», «Send notifications to device» y «Delay»), seguido de la sección «Smart Devices». esta es la sección que nos interesa donde seleccionaremos el Hub Aqara que se encuentra en el Living. Una vez hecho esto nos permitirá seleccionar la acción a ajecutar para lo cual tenemos las opciones «Enable guarding», «Disable guarding», «Turn guarding on/off», «Turn on/off Hub light», «Turn on Hub light», «Turn off Hub light» y «Play designated ringtone». Nos interesa esta última opción, la seleccionamos y se nos mostrarán las distintas opciones de sonidos existentes separadas en las categorías «Alert tone», «Alarm clock tone» y «Doorbell tone». En esta última sección seleccionamos «Doorbell tone», configuramos el volumen y pinchamos el signo «check» en la esquina superior derecha para finalizar la automatización.

Si tenemos un segundo Hub Aqara y queremos que reproduzca el sonido «dingdong» al mismo tiempo que el otro hub cuando se presione el interruptor inalámbrico de la entrada, tenemos que pinchar en la automatización recién creada, y en la sección «Then» de dicha automatización pinchar en «Add more» para agregar el segundo Hub Aqara siguiendo los mismos pasos que realizamos para el primero.

Yo lo tengo de esta manera ya que mi casa tiene 2 pisos y tengo instalado 1 Hub Aqara por piso, así quienes están en casa no tienen excusa para decir que «no escucharon el timbre».

Con esto ya tenemos funcionando nuestro timbre «dingdong» dentro del entorno Aqara Home.

Por emontes, hace