Configura el pulsador SwitchBot Bot en Home Assistant vía Cloud sin Bluetooth

El fabricante SwitchBot tiene muchos dispositivos relacionados con la domótica muy interesantes, la mayoría de ellos funcionando por Bluetooth para comunicarse con el menor consumo de energía posible. Uno de los dispositivos más interesantes es el «pulsador» físico, o también conocido como SwitchBot Bot, un pequeñísimo dispositivo que podemos usarlo para presionar botones de mandos a distancias, interruptores de la luz o lo que tú te imagines. Pero, ¿cómo se puede configurar en Home Assistant? Esto es justamente lo que vamos a explicar con todo detalle a continuación.
Ahora mismo Home Assistant dispone de dos integraciones diferentes para este mismo fabricante, una de ellas a través de SwitchBot Cloud, y la otra integración a través de SwitchBot Bluetooth. Hoy en RedesZone os vamos a explicar todo lo que tienes que hacer para integrar en tu domótica este SwitchBot bot y realizar automatizaciones avanzadas.
SwitchBot es un fabricante que dispone de una aplicación realmente completa para gestionar todos sus dispositivos, de hecho, podríamos integrar dispositivos de terceros que funcionan con infrarrojos como TV, aire acondicionado y cualquier otro equipo que funcione con esta tecnología inalámbrica. Hay que tener claro que los usuarios contamos con la oportunidad de integrar un gran número de dispositivos, desde este «bot» que es un pulsador físico, hasta enchufes inteligentes, cámaras IP de videovigilancia, humificadores, luces LED, sensores de movimiento e incluso un motor inteligente para mover las cortinas de nuestro hogar. Solamente hay que conocer cuál es la configuración correcta para que funcione en Home Assistant.
Integraciones oficiales de SwitchBot en Home Assistant
A la hora de configurar este pulsador en este software, hay que tener claro que solamente existen dos integraciones oficiales de esta marca SwitchBot en Home Assistant. Por lo tanto, en función de los dispositivos que tengas, tendrás que usar una integración u otra. Para tener una idea más clara de cuáles son las dos alternativas, aquí te dejamos las dos posibilidades que puedes usar en esta herramienta:
- SwitchBot Cloud: esta integración usa la nube del fabricante para comunicarse con los dispositivos, es totalmente necesario usar el SwitchBot Hub para conectarse a Internet y que esté disponible, de lo contrario, no podremos controlarlos a través de la nube. Lo malo de esta integración es que solamente soporta los enchufes inteligentes «Plug Mini», tanto el original como el que tiene HomeKit, así como cualquier dispositivo que funcione por infrarrojos como una Smart TV o aire acondicionado.
- SwitchBot Bluetooth: esta integración hace uso del Bluetooth para comunicarse con los dispositivos, es totalmente necesario que nuestro Home Assistant disponga de un adaptador Bluetooth para conectarse con estos dispositivos. Si tienes tu Home Assistant virtualizado, tendrás que comprar un adaptador e integrarlo en la máquina virtual para posteriormente utilizarlo. En este caso, la mayoría de dispositivos del fabricante son compatibles: bombillas inteligentes, Bot, sensor de contacto, motor de persianas (todas las versiones), humificador, tira de luces LED, termómetros digitales, sensor de movimiento, enchufe inteligente mini y cerradura electrónica.
Entre una y otra puedes elegir la que más se ajuste a tus necesidades. Sin embargo, hay que tener en cuenta en todo momento los puntos a favor y en contra de cada integración. Por ejemplo, uno de los primeros puntos negativos que juegan en contra de la integración de SwitchBot Bluetooth es que te obliga a que los dispositivos estén relativamente cerca de nuestro Home Assistant, porque de lo contrario no podrá conectarse a ellos correctamente y enviar las órdenes.
En cualquier caso, en RedesZone os vamos a enseñar cómo puedes usar el SwitchBot Bot a través de una integración personalizada usando el Cloud, de esta forma, simplemente tendrás que tener el SwitchBot Hub cerca para poder conectarse sin problemas.
Podéis comprar el dispositivo SwitchBot bot por unos 30 euros aproximadamente en Amazon. Incluso, si estás de suerte, es posible que baje de este precio por alguna promoción en particular de esta tienda online:
Es totalmente necesario que tengas el SwitchBot Hub para que podáis enviar órdenes sin necesidad de estar relativamente cerca del dispositivo, debemos recordar que el Bluetooth no tiene tanto alcance como las redes inalámbricas Wi-Fi, por lo que es obligatorio que coloques este SwitchBot Hub cerca del dispositivo para proporcionarle conexión a Internet. En este caso, también está disponible a la venta en Amazon por si quieres comprarlo:
Ahora que ya sabéis qué dos integraciones oficiales existen, y la parte negativa de la integración local usando Bluetooth, vamos a ver todo lo que debes instalar en tu Home Assistant para usar el SwitchBot Bot desde la API Cloud.
Obtener los datos necesarios desde la app de SwitchBot
Para poder configurar SwitchBot Bot en Home Assistant usando la API Cloud, es necesario obtener información desde la aplicación oficial del fabricante. Cuando tengamos tanto el Hub como el Bot instalados con la aplicación, y conectado el Hub a nuestra red inalámbrica Wi-Fi, tendremos que irnos a la sección de «Perfil / Ajustes«. Si abajo del todo no te aparece la opción de «Opciones de desarrollo«, tendrás que pulsar varias veces sobre la versión de la aplicación (unas 5 o 10 veces) para que aparezca.
Dentro de opciones de desarrollo podremos ver tanto el token como también la clave secreta. Ambas cosas son completamente necesarias para el funcionamiento del SwitchBot Bot a través de la API Cloud. Copiamos esta información desde la aplicación hasta el PC, usando cualquier método como enviarnos un email a nosotros mismos.




Ahora tenemos que conseguir la dirección MAC del Bluetooth del dispositivo SwitchBot Bot, para ello nos vamos al dispositivo en cuestión, y en la sección de «Ajustes» pinchamos sobre «Información sobre el equipo«. Aquí es donde veremos la BLE MAC del dispositivo en cuestión.



Una vez que hemos obtenido todos los datos necesarios: Clave API, clave secreta y MAC del Bluetooth, podremos irnos a nuestro Home Assistant para instalar todo el software que necesitamos.
Instalación de software en Home Assistant
Llega el momento de instalar el software en Home Assistant. El lado positivo es que los pasos a seguir no son complejos. Por lo que en cuestión de pocos minutos se podrá tener instalado sin inconvenientes. En primer largo, una vez que estemos dentro de nuestro Home Assistant, nos iremos a la sección de «Ajustes/ Complementos» para instalar una aplicación llamada «AppDaemon«, es un software que nos permitirá ejecutar scripts en lenguaje Python en nuestro Home Assistant.




Instalamos este complemento como siempre hemos hecho, y habilitamos la opción de «Vigilancia«, pero la opción de «Actualización automática» la dejamos desmarcada. En el pasado se nos ha actualizado este complemento y nos ha «roto» el script en Python, porque han hecho cambios importantes en la actualización. Así que os recomendamos actualizar manualmente, porque así podrás volver hacia atrás si veis que no funciona por algún motivo.



Una vez que lo hayamos instalado, nos iremos a la pestaña de «Configuración» y en la sección de «Python Packages» ponemos:
- python-switchbot
Pulsamos «enter» y a continuación, pinchamos en el botón de «Guardar«. AppDaemon se encargará de descargar automáticamente este paquete de Python y todas las dependencias necesarias, facilitando enormemente la instalación de este software que es totalmente necesario.



Ahora que ya tenemos todo instalado, vamos a crear el script necesario para usar el SwitchBot Bot vía API Cloud en nuestro Home Assistant.
Crear el script para ejecutar la orden
Después de haber completado la instalación del software, lo primero que debemos hacer es instalar el complemento «File Editor» si es que no lo has instalado hasta ahora, ya que es uno de los complementos más importantes de Home Assistant para gestionar todos los archivos internos. En la pestaña de «Configuración» de este complemento, es necesario desmarcar la opción de «Enforce Basepath» para poder irnos hasta la ruta raíz de los archivos. Una vez que lo hayamos hecho, la ruta para acceder a la configuración de AppDaemon es «/addon_configs/XXXXX_appdaemon/«, aquí es donde tendremos toda la configuración general.



Debemos crear el script en Python en la ruta «/addon_configs/XXXXX_appdaemon/apps/«, aquí veremos dos archivos llamados «apps.yaml» y «hello.py«. Pinchamos en crear un nuevo archivo y le llamaremos «switchbot-garaje.py«, ya que nuestro SwitchBot Bot lo hemos colocado encima de un mando de garaje que no podemos cablear, de esta forma, al ejecutar este Bot se presionará el botón físico del mando del garaje.
El contenido del script es el siguiente:
import appdaemon.plugins.hass.hassapi as hass
import uuid
from switchbot import SwitchBot
class ClaseSwitchBotGaraje (hass.Hass):
def initialize(self):
self.listen_event(self.botgaraje_event, "GARAJE_COMUNIDAD")
def botgaraje_event(self, event_name, data, kwargs):
self.log("Se inicia el pulsador de switchbot en garaje")
#Definimos token de la API de Switchbot
your_switch_bot_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
your_switch_bot_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
switchbot = SwitchBot(token=your_switch_bot_token, secret=your_switch_bot_secret)
#Llamamos a los diferentes dispositivos que hay en el servicio y elegimos el bot.
device = switchbot.device(id='AABBCCDDEEFF')
#Ejecutamos el pulsar el bot para hacerlo funcionar.
device.command('press')
self.log("Finaliza el pulsador switchbot en garaje")
Ahora, solamente debemos rellenar con nuestra información tres líneas:
- your_switch_bot_token: es el token que hemos sacado de la aplicación, es el primer valor que aparece en rojo.
- your_switch_bot_secret: es la contraseña secreta que hemos sacado de la aplicación, justo debajo del valor anterior.
- device = switchbot.device(id=’AABBCCDDEEFF’): debemos poner la dirección MAC BLE sin los dos puntos (:) ni espacios, todo en mayúsculas y los números.
Para que podáis tener una visión más clara de cómo debe quedar, en la siguiente captura podéis ver cómo tiene que quedar para que todo esté en orden y vaya a funcionar sin problemas:
Para activar el nuevo script en Python en AppDaemon, es totalmente necesario añadir a lo que ya hay, lo siguiente:
switchbot-puerta-garaje:
module: switchbot-garaje
class: ClaseSwitchBotGaraje
En la siguiente captura podéis ver cómo quedaría:
Ahora que ya tenemos todo listo, podemos irnos al complemento de AppDaemon, pinchamos en «Abrir la interfaz web» y en la segunda opción de «State» podemos ver que lo ha reconocido correctamente. Una cosa es que lo reconozca bien, y otra muy distinta es que a la hora de ejecutarse no devuelva ningún error.


Ahora tenemos que crear un script que se encargue de ejecutar este script en Python que hemos dado de alta, luego podemos añadir este script a cualquier botón, automatización etc. Para poder hacer esto, nos vamos a la sección de «Ajustes / Automatizaciones y escenas«, en la pestaña de «Scripts» pinchamos en «Añadir Script«, seleccionamos «Crear un nuevo script.
Este script lo configuraremos con un nombre descriptivo, en la sección de «Secuencia» tendremos que elegir «Evento manual» y en «Tipo de evento» ponemos «GARAJE_COMUNIDAD» o el nombre que le hayas dado al script en Python (en el código donde pone self.listen_event(self.botgaraje_event, «GARAJE_COMUNIDAD»)).





Ahora podemos ejecutarlo a través del propio menú de creación del script para probarlo, o bien sacar un botón en el menú principal que ejecute dicho script. Cuando lo ejecutamos, podremos ver tanto en el registro de AppDaemon, como en el registro de Home Assistant en la sección de App Daemon, como también en la app de SwitchBot Bot en la sección de «log» que hemos ejecutado correctamente el script.



Tal y como podéis ver, este proceso es bastante más complejo que usar la integración oficial de SwitchBot Cloud, pero este método funciona para el dispositivo SwitchBot Bot que tenemos nosotros. Es muy importante que estés vigilante y no se te actualice solo el AppDaemon. ¿Por qué? Básicamente porque es algo que nos ha ocurrido más de una vez. Con esto hace que el script deje de funcionar por una actualización. ¿La solucion? En nuestro caso no nos ha quedado otra que reescribir el script o volver hacia atrás hasta que solucionaran el bug. Por lo tanto, es un detalle importante que debéis tener bajo control para que no se vaya repitiendo el problema con el paso del tiempo.