#include <CTBot.h>
#include "DHTesp.h" //se incluye una librería necesaria para el uso de funciones del esp
#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h> // Universal Telegram Bot Library written by Brian Lough: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
#include <ArduinoJson.h>
#define LED 2
#define CHAT_ID "6246875274"
#define BOTtoken "6246875274:AAGurwi5JOXGReXoth6ZS4lIE76_LBHleV4"
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
CTBot bot_Planta; // crear un objeto
String TOKEN = "6246875274:AAGurwi5JOXGReXoth6ZS4lIE76_LBHleV4";
String SSID = "Wokwi-GUEST"; // información sobre la red wifi, en el simulador es esta, en la vida real cambia
String PASSWORD = "";
int pinDHT = 15; // 15 porque en ese pin (D15) está conectado el pin dht1: SDA al ESP32
DHTesp dht;
int botRequestDelay = 1000;
unsigned long lastTimeBotRan; // las dos variables se usan para revisar los nuevos mensajes de Telegram cada cierto tiempo
void handleNewMessages(int numNewMessages) {//La función handleNewMessages mantiene un control de qué pasa cuando llega un nuevo mensaje.
Serial.println("handleNewMessages");
Serial.println(String(numNewMessages));
for (int i=0; i<numNewMessages; i++)
}
String chat_id = String(bot.messages[i].chat_id);
String text = bot.messages[i].text;
Serial.println(text);
String from_name = bot.messages[i].from_name; //La variable from_name guarda el nombre de la persona que lo envía.
void setup() {
Serial.begin(115200);
Serial.println("¡Bienvenido soy una mata con personalidad!");
//Inicializamos el dht
dht.setup(pinDHT, DHTesp::DHT22); // conectar el sensor DHT al pin 15
bot_Planta.wifiConnect(SSID, PASSWORD); // el objeto va a conectarse a wifi
bot_Planta.setTelegramToken(TOKEN);
if (bot_Planta.testConnection()) {
Serial.println("Conectado éxitosamente a Telegram :)");
} else {
Serial.println("No se pudo conectar a Telegram :(");
}
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
if (text == "/start") {
String welcome = "Bienvenido, " + from_name + ".\n";
welcome += "Usa los siguientes de acuerdo a la información que necesites.\n\n";
welcome += "/temperatura \n";
welcome += "/humedad de la planta \n";
welcome += "/brillo solar \n";
bot.sendMessage(chat_id, welcome, "");
}
}
void loop() {
delay(dht.getMinimumSamplingPeriod());
float humedad = dht.getHumidity(); // float se puede usar con valores de temp, volumen etc. Porque permite valores reales
float temperatura = dht.getTemperature();
TBMessage mensaje; // estructura de datos, cúando se envío, la geolocalización, quién lo envio
if (bot_Planta.getNewMessage(mensaje)) { //función para obtener el mensaje
Serial.println("¡Hay un mensaje nuevo en el chat!");
//Serial.println("El remitente es: ");
//Serial.println(mensaje.sender.id); // identificador que es generado por telegram, que dice quién envio el mensaje
Serial.println("Mensaje leído: ");
Serial.println(mensaje.text);
bot_Planta.sendMessage(mensaje.sender.id, "Holis soy una planta con personalidad :3");
bot_Planta.sendMessage(mensaje.sender.id, "¿Deseas conocer la temperatura, humedad y brillo? (Responde si o no)");
digitalWrite (LED, HIGH);
delay (250);
}
if (bot_Planta.getNewMessage (mensaje) == (mensaje.text.equalsIgnoreCase("si"))) { //método que mira si hay una palabra o texto e ignora si esta en mayus o minus
bot_Planta.sendMessage(mensaje.sender.id, "La humedad de la planta es: ");
}
if (mensaje.text.equalsIgnoreCase("Apagar")) {
bot_Planta.sendMessage(mensaje.sender.id, "Apagando LED");
digitalWrite (LED, LOW);
}
}