Skip to main content

Practice 35: NodeRed (MQTT) + Telegram

✅ Práctica 35
▷ #TSCLab #TCLab #ESP32 #Arduino #Control #MACI

En el siguiente blog se presenta la vigésima sextapráctica del laboratorio de control de temperatura y velocidad de un motor.

Objetivo general:

  • Recibir los valores sensados de temperatura del TSC-Lab a Telegram. 

Materiales:

  • Node-Red
  • TSC-Lab

Introducción:

En la práctica anterior se aprendió a información del TSC-Lab a Node-Red mediante Wi-Fi con protocolo HTTP. Ahora a mas de enviar dicha información se pretende recibirla y monitoreada desde Telegram, la cual es una aplicación enfocada en la mensajería instantánea, el envío de varios archivos y la comunicación en masa. Se la puede descargar desde la tienda de Google Play o App Store. También se la puede utilizar desde su sitio web o versión de escritorio. En esta práctica se crearrá un bot en Telegram el cual al recibir un comando en específico, enviará de manera instantanea el valor de temperatura solicitado.

Procedimiento:

Nota: se asume que está instalado Node-Red, que está familiarizado con el entorno y que sabe instalar librerías. En caso de no ser así, puede revisar la practica 24 dando clic aquí. 
  1. Descargar y crearse una cuenta en Telegram en caso de no tenerla. Busque en la tienda de su dispositivo móvil. 
  2. En el buscador de Telegram escriba BotFather. Tenga en cuenta que tenga la verificación (visto azul) e imagen de perfil que se muestra a continuación. Y abra su chat.



  3. Escriba el comando /start

  4. Seleccione o escriba el comando /newbot y colóquele un nombre a su bot, tal y como se muestra en la imagen. 

  5. Abra el entorno de Node-Red e instale la librería node-red-contrib-telegrambot.
  6. Importar el proyecto que se encuentra disponible aquí. En caso de tener proyectos anteriores abiertos, deshabilite los dashboard y msg.payload.
  7. Dar doble clic en el bloque de Telegram que está conectado al payload, en bot seleccionar Add new telegram bot ... y seleccionar el lápiz.

  8. Para mayor facilidad de trabajo, recomendaría abrir Telegram en la versión web ya que se necesita colocar el nombre y el token que se generó previamente con BotFather tal cual como en la imagen que se muestra a continuación. Para posteriormente dar clic en Add y en done. 

  9. A modo de prueba se debe dar Deploy al proyecto y en el buscador de telegram se debe colocar el nombre del bot, en mi caso TSC-Lab-kechica para iniciar chat y se procede a enviar cualquier mensaje y si la configuración se la realizó de manera correcta en el debug se podrá ver dicho mensaje. Mientras se vea el mensaje, omitir cualquier tipo de error que se muestre.


    Debug de Node-Red

  10. A todos los bloques de telegram se le debe asiganar el bot creado tal cual como se lo hizo anteriormente.
  11. Del mensaje que se envió y se vió en el debug hay una variable llamada chatId, a esta se la debe copiar y pegar en el código que aparece cuando se da doble clic en el bloque de las funciones tal cual como se ve en las imágenes.



  12. Dar deploy al proyecto, cargar el código al TSC-Lab, el cual es el mismo que el de la práctica anterior.
/*
****************************** TSC-Lab *******************************
***************************** PRACTICE 25 *****************************
This practice is aboutNode-Red (with wi-fi)
By: Kevin E. Chica O
More information: https://tsc-lab.blogspot.com/
*/
#include <OneWire.h>
#include <DallasTemperature.h>
//GPIO pin 0 is set as OneWire bus
OneWire ourWire1(4);
//GPIO pin 4 is set as OneWire bus
OneWire ourWire2(0);
//A variable or object is declared for our sensor 1
DallasTemperature sensors1(&ourWire1);
//A variable or object is declared for our sensor 2
DallasTemperature sensors2(&ourWire2);
#include <WiFi.h>
#include <PubSubClient.h>
// WiFi
const char* ssid = "your_ssid";
const char* password = "your_password";
//Your Domain name with URL path or IP address with path
const char* mqtt_server = "test.mosquitto.org";
const char *topic = "tsclab/your_name"; //cambiar "your_name" por su nombre o usuario
WiFiClient espClient;
PubSubClient client(espClient);
String msg;
String temperatura1 = "";
String temperatura2 = "";
float temp1;
float temp2;
void setup() {
//sensors
sensors1.begin(); //Sensor 1 starts
sensors2.begin(); //Sensor 2 starts
// Set software serial baud to 115200;
Serial.begin(115200);
// connecting to a WiFi network
//wifi
WiFi.mode(WIFI_STA);
connect_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void loop() {
connect_wifi();
readData();
publicMQTT();
delay(1000);
}
void readData() {
//The command is sent to read the temperature
sensors1.requestTemperatures();
//Obtain the temperature in ºC of sensor 1
temp1 = sensors1.getTempCByIndex(0);
temperatura1 = String(temp1);
//The command is sent to read the temperature
sensors2.requestTemperatures();
//Obtain the temperature in ºC of sensor 2
temp2 = sensors2.getTempCByIndex(0);
temperatura2 = String(temp2);
//print to display the temperature change
}
void connect_wifi(){
// Connect or reconnect to WiFi
if(WiFi.status() != WL_CONNECTED){
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
while(WiFi.status() != WL_CONNECTED){
WiFi.begin(ssid, password); // Connect to WPA/WPA2 network. Change this line if using open or WEP network
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("TSCLABClient")) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void publicMQTT() {
if (!client.connected()) {
reconnect();
}
client.loop();
msg = temperatura1+","+temperatura2;
client.publish(topic, msg.c_str());
}
view raw Practice33.ino hosted with ❤ by GitHub
    
  1. En telegram, al bot creado escribirle los comandos temp1 y temp2 y la respuesta será inmediata.





                  

Comments

Popular posts from this blog

Práctica 7: Speed control using PWM

✅ Práctica 7 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la septima práctica y corresponde a la segunda del laboratorio de control de velocidad. Objetivo general: Entender el funcionamiento del motor DC con PWM para aumentar o bajar la velocidad usando código de programación en el IDE de Arduino. Objetivos específicos: Comparar los resultados de movimiento cambiando los parámetros. Materiales: PCB de Temperature Control Lab (TSC-Lab) Introducción: En la práctica anterior, al motor se le enviaba señales de High y Low para ponerlo en marcha. Sin embargo, dentro de la realidad a un motor no se lo controla así, en algunas ocasiones se lo requiere hacer girar con cierta velocidad y durante esta práctica para tener control sobre la misma se lo hace con señales PWM. Procedimiento: Se asume que la placa del ESP-32 ha sido previamente instalada en el IDE de Arduino. Copiar el código en el IDE de Arduino:      ...

Practice 29: NodeRed (Http) + Telegram

✅ Práctica 29 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima sextapráctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Recibir los valores sensados de temperatura del TSC-Lab a Telegram.  Materiales: Node-Red TSC-Lab Introducción: En la práctica anterior se aprendió a información del TSC-Lab a Node-Red mediante Wi-Fi con protocolo HTTP. Ahora a mas de enviar dicha información se pretende recibirla y monitoreada desde Telegram, la cual es una aplicación enfocada en la mensajería instantánea, el envío de varios archivos y la comunicación en masa. Se la puede descargar desde la tienda de Google Play o App Store. También se la puede utilizar desde su sitio web o versión de escritorio. En esta práctica se crearrá un bot en Telegram el cual al recibir un comando en específico, enviará de manera instantanea el valor de temperatura solicitado. Procedimiento: Nota: se asume qu...

Practice 12: Speed Control Lab

✅ Práctica 12 ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la vigésima segunda práctica del laboratorio de control de temperatura y velocidad de un motor. Github repository: https://github.com/vasanza/TSC-Lab Objetivo general: Realizar la adquisición de datos en Matlab emplenado comunicación serial. Materiales: Matlab TSC-Lab Registro de datos en formato Byte: Esta versión se recomienda si se utiliza Matlab de versiones anteriores a las 2017. Repository: https://github.com/vasanza/TSC-Lab/tree/main/Practice12/Practice12_Byte Registro de datos en formato String: Esta versión se recomienda si se utiliza Matlab de versiones actuales. Repository:  https://github.c...

Practice 30: NodeRed (Http) + ThingSpeak

✅ Práctica 30 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la vigésima séptima práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Enviar los valores sensados de temperatura del TSC-Lab por WiFi a Node-Red y ThingSpeak.  Materiales: Node-Red Thingspeak TSC-Lab Introducción: En la práctica anterior se aprendió a utilizar y familiarizarse con Node-Red, el envío de información se lo hizo por medio de comunicación serial. Sin embargo, no tiene mucho sentido que se esté enviando información a Node-Red por el puerto serial cuando se puede aprovechar el ESP-32 para conectarse a internet por medio de Wi-Fi. S...

Practice 26 : Over-The-Air programming (OTA)

✅ Práctica 26 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la vigésima sexta práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Actualizar el código del TSC-Lab utilizando OTA. Materiales: IOTAppStory TSC-Lab Introducción: A lo largo de todas las prácticas previamente realizadas, cada código se ha cargado al TSC-Lab con ayuda del cable USB por comunicación serial. Sin embargo, esta no es la única forma de hacerlo. Al igual que muchos otros dispositivos como celulares, carros inteligentes, decodificadores, entres otros se le pueden realizar ajustes y configuraciones de manera inalámbrica por una programaci...

Practice 34: NodeRed (WiFi y MQTT)

✅ Práctica 34 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima quinta práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Enviar los valores sensados de temperatura del TSC-Lab por WiFi a Node-Red por medio del protocoo MQTT y visualizarlos.  Materiales: Node-Red TSC-Lab Introducción: En la práctica anterior se aprendió a utilizar y familiarizarse con Node-Red, el envío de información se lo hizo por medio de comunicación serial. Sin embargo, no tiene mucho sentido que se esté enviando información a Node-Red por el puerto serial cuando se puede aprovechar el ESP-32 para conectarse a internet por medio de Wi-Fi. Se usará el protocolo MQTT para conectarse al servidor donde se aloja el servidor que se está ejecutando Node-Red, lo cual permitirá que cualquier dispositivo tenga acceso a su información. Procedimiento: Nota: se asume que está instalado Node-Red, que está famil...

Practice 24: Firebase

✅ Práctica 24 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la cuadragésima primera práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Sensar datos y subirlos a la Realtime Database de Firebase Materiales: Firebase TSC-Lab Introducción: Firebase es una plataforma para el desarrollo de aplicaciones web y aplicaciones móviles lanzada en 2011 y adquirida por Google en 2014.​ Es una plataforma ubicada en la nube, integrada con Google Cloud Platform, que usa un conjunto de herramientas para la creación y sincronización de proyectos que serán dotados de alta calidad, haciendo posible el crecimiento del número de...

▷ CHARLA #PUCESE Arduino Week: Hardware de Código Abierto TSC-LAB

  ⭐⭐⭐⭐⭐ CHARLA #PUCESE Arduino Week: Hardware de Código Abierto TSC-LAB ☑️ #TSCLab #TCLab #ESP32 #Arduino #Control #MACI ☑️ #ElectronicPrototypesDesign #PrototipadoElectronico #PCB #HardwareDesign #Hardware #AdeltaTechnologies #OpenHardware #OpenSourceHardware ➡️ Repository:  https://github.com/vasanza/TSC-Lab ➡️ When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez, April 25, 2021, "Temperature and Speed Control Lab (TSC-Lab)", IEEE Dataport, doi: https://dx.doi.org/10.21227/8cty-6069. ✅ #PUCESE, organizó el webinar: "ARDUINO WEEK 2022 PUCESE" ✅  Arduino Week PUCE Esmeraldas- Charla con Expertos ⭐⭐⭐⭐⭐ CHARLA #PUCESE Arduino Week: Hardware de Código Abierto TSC-LAB  from  Victor Asanza ✅ Video de la charla: ✅ Contenido: ➡️  1- Introducción ➡️  2- Hardware de Código Abierto ➡️  3- Temperature and Speed Control Lab (TSC-LAB)...

Practice 1 (VS Code): Initial setups and tests

✅ Práctica 1 (VS Code) Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la cuadragésima tercerapráctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Descargar e instalar Visual Studio Code para programar el TSC-Lab utilizando el ESP-IDF (framework que recomienda su fabricante, Espressif) Materiales: Visual Studio Code TSC-Lab Introducción: A lo largo de todas estas prácticas se ha venido programando el ESP-32 del TSC-Lab en el IDE de Arduino. Sin embargo, esta no es la única forma de programarlo, una de ellas e inclusive la que recomienda su fabricante es utilizando el ESP-IDF, siendo este el framework de desarr...