Actualización ENERO 2021: Publicada la versión 3 de OpenHAB

Según la Wikipedia, un bot es un programa informático que efectúa automáticamente tareas. En nuestro caso, el bot que vamos a crear a continuación en Telegram, será el responsable de informarnos puntualmente, mediante mensajes, de los eventos que vayan sucediendo en OpenHAB.

Empezando la creación del Bot desde Telegram

El primer paso, es ser usuario de esta plataforma de mensajería. Si no lo eres todavía, instalaremos la aplicación en nuestro smartphone desde Google Play, y en nuestro ordenador mediante:

sudo pacman -S telegram-desktop

Una vez finalizada la instalación, abriremos BotFather que nos guiará en la creación de nuestro bot.

@botfather

Iniciar chat con BotFather en Telegram

Comenzaremos enviándole el mensaje /start y recibiremos como respuesta todos los comandos que estén disponibles:

Comando /start en BotFather

El siguiente comando que utilizaremos será /newbot:

Comando /newbot para crear bot

BotFather nos pedirá un nombre y un usuario para nuestro Bot. El usuario debe terminar obligatoriamente en bot y no debe estar en uso. Una vez elegido y enviado, BotFather nos confirmará la creación y nos facilitará un código token que utilizaremos más adelante:

Token del bot recibido de BotFather

También vamos a personalizar el Bot con una foto de perfil, y lo haremos mediante /setuserpic:

Comando /setuserpic para establecer foto de perfil del bot

Además de la clave token anterior, necesitaremos nuestro chat_id. Para obtener esta información utilizaremos IDBot, un Bot que nos retornará nuestro ID:

@myidbot

La operación es muy sencilla. Únicamente debemos empezar el chat con /start y a continuación /getid. Con estos dos comandos conoceremos nuestro ID:

Chat con MyIDBot

Configuración en OpenHAB 3

Una vez más, desde Things, pinchamos en el icono + que se encuentra en la parte inferior derecha de la página.

Pinchamos en el enlace Install More Bindings y buscamos Telegram Binding:

Buscar Telegram Binding en OpenHAB 3

Lo seleccionamos pinchando encima de él, y lo instalamos mediante el botón Install:

Instalar Telegram Binding

Esperamos a que termine la instalación:

Instalación en progreso de Telegram Binding

Una vez instalado, es suficiente introducir el token recibido y nuestro ID en los campos correspondientes:

Configurar token y chat_id en OpenHAB 3

Finalizamos la creación con el botón Create Thing que se encuentra al final de la página.

Probando el bot en OpenHAB 3

Podemos probar que todo funciona bien creando una simple regla en OpenHAB:

sudo nano /etc/openhab3/rules/test-telegram.rules
rule "Prueba de mensajería Telegram"
when
    Time cron"0 37 10 1/1 * ? *"
then
   val telegramAction = getActions("telegram","telegram:telegramBot:ccfb42d5eaa")
   telegramAction.sendTelegram("¡Hola Mundo!")
end

Para esta prueba no hace falta esperar a que se ejecute la tarea cron. En OpenHAB 3 podemos ejecutar la regla cuando queramos.

Desde el menú, elegimos Rules:

Menú de reglas en OpenHAB 3

Y seleccionamos la regla que acabamos de crear, que será ahora mismo la única que tengamos:

Seleccionar regla de prueba

En la pestaña Design, ejecutamos con el típico icono de play:

Ejecutar regla manualmente

Casi de manera instantánea recibiremos en nuestro Telegram el mensaje desde OpenHAB:

Mensaje recibido en Telegram desde OpenHAB 3

No olvidemos eliminar la regla cuando hayamos confirmado que funciona correctamente el Bot:

sudo rm /etc/openhab3/rules/test-telegram.rules

Configuración en OpenHAB 2

También en OpenHAB 2, instalaremos action-telegram desde Add-ons:

Instalar action telegram en OpenHAB 2

Con la clave token y el chat_id, es hora de crear el fichero telegram.cfg en la Raspberry:

sudo nano /etc/openhab2/services/telegram.cfg
# Read http://www.instructables.com/id/Telegram-Bots-for-beginners/
# to see how to set up bots and find your chat ids
#
# bots=bot1,bot2
# bot1.chatId=22334455
# bot1.token=xxxxxx
# bot2.chatId=654321
# bot2.token=yyyyyyyyyyy

bots=openhabrpi
openhabrpi.chatId=9999999
openhabrpi.token=123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Y con esto habremos terminado. Para comprobar que todo funcione correctamente, crearemos una regla muy simple para que OpenHAB envíe un mensaje a nuestro chat.

Creando una regla de prueba

Creamos el fichero de la regla:

sudo nano /etc/openhab2/rules/test-telegram.rules

Como ejemplo, utilizaremos una tarea cron para que, a una hora determinada nos envíe el mensaje. Si no estamos habituados a las expresiones de cron, podemos ayudarnos en la página web cronmaker.

En el ejemplo, voy a poner que me envíe el mensaje a las 10:37, y el texto del mensaje será, como no, ¡Hola Mundo!

La acción sendTelegram se compone del Bot que hemos reseñado en /etc/openhab2/services/telegram.cfg y del mensaje propiamente dicho:

rule "Prueba de mensajería Telegram"
when
    Time cron"0 37 10 1/1 * ? *"
then
    sendTelegram("openhabrpi", "¡Hola Mundo!")
end

Si todo está correcto, recibiremos un mensaje puntualmente en nuestro smartphone cada día a las 10:37:

Mensaje recibido desde OpenHAB 2

No olvidemos eliminar la regla cuando hayamos confirmado que funciona correctamente el Bot:

sudo rm /etc/openhab2/rules/test-telegram.rules

Con esta configuración ya tienes tu bot de Telegram completamente integrado con OpenHAB, listo para enviarte notificaciones automáticas de todos los eventos que configures en tu sistema domótico.