/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include "DHTesp.h"
#include <WiFi.h>
#include <PubSubClient.h>
const int DHT_PIN = 15;
DHTesp dhtSensor;
const char* ssid = "Felipee";
const char* password = "semeolvido";
const char* mqtt_server = "f4df993babc3449d8632c18cafa5c65d.s2.eu.hivemq.cloud";
const int mqtt_port = 8883;
const char* mqtt_user = "FelipeMqtt";
const char* mqtt_pass = "Sanpipe03.";
WiFiClient espClient;
PubSubClient client(espClient);
char msg[25];
long count=0;
int Led = 26;
String strTmp;
char chrTmp [5];
//strTmp += t; //concatenando
String hostname = "ESP32"; //Nombre al hostname
void callback(char* topic, byte* payload, unsigned int length);
void reconnect();
void setup_wifi();
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println(" ");
delay(1000);
if (!client.connected()) {
reconnect();
}
if (client.connected()){
strTmp.toCharArray(chrTmp,5);
client.publish("humedad_temperatura",chrTmp);
count++;
Serial.println("se envio los datos al broker ");
}
client.loop();
}
void setup_wifi(){
delay(10);
// Nos conectamos a nuestra red Wifi
WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE, INADDR_NONE);
WiFi.setHostname(hostname.c_str()); //define hostname
Serial.println();
Serial.print("Conectando a ssid: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Conectado a red WiFi!");
Serial.println("Dirección IP: ");
Serial.println(WiFi.localIP());
}
//*****************************
//*** CONEXION MQTT ***
//*****************************
void reconnect() {
while (!client.connected()) {
Serial.print("Intentando conexión Mqtt...");
// Creamos un cliente ID
String clientId = "mqtt06";
// Intentamos conectar
if (client.connect(clientId.c_str(),mqtt_user,mqtt_pass)) {
Serial.println("Conectado!");
// Nos suscribimos
}
else {
Serial.print("falló :( con error -> ");
Serial.print(client.state());
Serial.println(" Intentamos de nuevo en 5 segundos");
delay(5000);
}
}
}
//*****************************
//*** CALLBACK ***
//*****************************
void callback(char* topic, byte* payload, unsigned int length){
String incoming = "";
Serial.print("Mensaje recibido desde -> ");
Serial.print(topic);
Serial.println("");
for (int i = 0; i < length; i++) {
incoming += (char)payload[i];
}
if (incoming == "1") {
Serial.println("Encender Foco");
digitalWrite(Led, HIGH);
}
else if(incoming == "0") {
Serial.println("Apagar Foco");
digitalWrite(Led, LOW);
}
incoming.trim();
Serial.println("Mensaje -> " + incoming);
}