#include <esp_now.h>
#include <WiFi.h>
// Establecer la dirección MAC ESCLAVO
uint8_t slaveAddress[] = {0XD4,0XD4,0XDA,0X5E,0X31,0XDC};
// Estructura para guardar los datos de temperatura y humedad de un sensor DHT.
typedef struct temp_humidity {
float temperature;
float humidity;
};
// Crea un struct_message llamado myData
temp_humidity dhtData;
// Devolución de llamada para tener un seguimiento de los mensajes enviados
void OnSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\r\nEnviar estado del mensaje:\t");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Enviado correctamente" : "Envio fallido");
}
void setup() {
// Iniciar monitor serie
Serial.begin(115200);
// Configurar el dispositivo como estación Wi-Fi
WiFi.mode(WIFI_STA);
// Inicializar ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Hubo un error al inicializar ESP-NOW");
return;
}
// Registraremos la función de devolución de llamada para responder al evento.
esp_now_register_send_cb(OnSent);
// Registrar al esclavo
esp_now_peer_info_t slaveInfo;
memcpy(slaveInfo.peer_addr, slaveAddress, 6);
slaveInfo.channel = 0;
slaveInfo.encrypt = false;
// Añadir al receptor(esclavo)
if (esp_now_add_peer(&slaveInfo) != ESP_OK){
Serial.println("Hubo un error al registrar el esclavo.");
return;
}
}
void loop() {
// Establecemos valores para enviar
// configuraremos dos flotantes y lo enviaré
dhtData.temperature = 12.5;
dhtData.humidity = 58.9;
// Es hora de enviar el mensaje vía ESP-NOW
esp_err_t result = esp_now_send(slaveAddress, (uint8_t *) &dhtData, sizeof(dhtData));
if (result == ESP_OK) {
Serial.println("El mensaje fue enviado exitosamente.");
}
else {
Serial.println("Hubo un error al enviar el mensaje.");
}
delay(2000);
}