Domótica con Telegram y esp8266

 

          Hasta ahora recibía alarmas o eventos en mi teléfono móvil a través de mensajes sms por medio del envio via WEB de Telefónica de España (Movistar) ya que eran gratuitos. Eso se acabó y he decidido hacer las notificaciones via Telegram.
        
          Telegram Messenger es una aplicación de mensajería y VOIP desarrollada desde el año 2013 por los hermanos Nikolái y Pável Dúrov.
Está enfocado en la mensajería instantánea, envío de varios archivos y comunicación en masa. (Wikipedia)
          
          El proceso es realmente sencillo.


          1.- Si no se tiene la aplicación (mi caso) lo primero es instalarla desde el Play Store (para Android).

          2.-Entrar en BotFather

          3.-Teclear 
/newbot

          4.-Crear una cuenta (si no tenias ninguna) según indicaciones Primero elegir un nombre y después un Username que suele ser el mismo pero obligatoriamente seguido de la palabra bot.


              5.-Volver a BotFather

              6.-Crear bot con otro nombre y username

              7.-Tomar nota del token

              Este bot será el que reciba las notificaciones desde el primero

              8.- Ahora necesitamos el chat_id de nuestro Telegram. En Android ir a  ajustes ->Usuarios y cuentas ->Telegram
           Con esto disponemos de todo lo necesario, el token del segundo bot (miPanojabot) y el chat_id del primero. Por tanto podremos enviar mensajes desde Panoja a miPanoja.

            Para ver que todo esta correcto podemos hacer una prueba via web con este formato desde nuestro navegador

https://api.telegram.org/botxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage?chat_id=xxxxxxxxx&text=hola+mundo
           El montaje de demostración consta solo de un Nodemcu mini con un pulsador entre D1 y masa.

           Enviando On, se enciende el LED integrado en el Nodemcu y se apaga con Off. Y nos devuelve confirmación de la acción.

           Por otro lado, pulsando el botón nos envía notificación. 

            El código Arduino está simplificado al máximo.
        // ¡¡¡¡¡¡USAR CON LIBRERIA ARDUINOJSON VERSION 5.13.5!!!!!
//En IDE ir a Programa->Incluir librería->Gestionar librerias->Arduinojson->seleccionar version

#include "CTBot.h"
CTBot myBot;
String ssid = "Jopapa";   
String pass = "xxxxxxxxxxxxx";
                                  //Poner tu Telegram BOT TOKEN
String token = "785863417:ABtY825Bv54rgh569sketzYNEVvkgp7CGM";  
const int alarma = D1;
long id=639712543;  //chat_id
void setup() {
Serial.begin(115200);
myBot.wifiConnect(ssid, pass);
myBot.setTelegramToken(token);
  pinMode(2,OUTPUT);
  digitalWrite(2, HIGH); //LED apagado
  pinMode(alarma, INPUT_PULLUP);  
// ¿Todo va bien?
   if (myBot.testConnection())
     Serial.println("\nConexion OK");
   else
    Serial.println("\nConexion fallida");
}

void loop() {
// almacena mensaje telegram recibido
TBMessage msg;
myBot.getNewMessage(msg);
if ((msg.text)=="On"){
  digitalWrite(2, LOW);
  myBot.sendMessage(msg.sender.id, "LED encendido"); 
}
if ((msg.text)=="Off"){
  digitalWrite(2, HIGH);
  myBot.sendMessage(msg.sender.id, "LED apagado"); 
}
int pinestado = digitalRead(alarma);
if (pinestado == LOW) {
  myBot.sendMessage(id, "Alarma en biblioteca");
}
  delay(50);
}
         Además, con Telegram tendremos control remoto pudiendo interactuar con dispositivos en nuestro hogar.
Menu