#include <esp_now.h>
#include <WiFi.h>
int tl = 1000; //ms
int tr;
String success;
// MAC del receptor
uint8_t broadcastAddress[] = {0x8C, 0xAA, 0xB5, 0x84, 0xFB, 0x90}; //1
//uint8_t broadcastAddress[] = {0x8C, 0xAA, 0xB5, 0x86, 0x36, 0x0C}; //2
esp_now_peer_info_t peerInfo;
//Funcion callback de envio
/*esp_now_send(uint8_t *da, uint8_t *data, uint8_t *len)
Parámetros:
uint8_t *da: array de la dirección MAC del par al que se envía el paquete de datos. Si la dirección es NULL los datos se envían a todas las direcciones de la Tabla de Comunicación.
uint8_t *data: array con el paquete de datos a enviar.
uint8_t len: longitud del array del paquete de datos.
*/
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("Last package sent: ");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Ok" : "Error");
}
//Funcion callback de recepcion
void OnDataRecv(const uint8_t * mac, const uint8_t *data, int len) {
//memcpy(tr, incomingData, sizeof(tr));
Serial.print("Bytes received: ");
Serial.println(len);
Serial.println(*data);
//incomingTemp = incomingReadings.temp;
//incomingHum = incomingReadings.hum;
//incomingPres = incomingReadings.pres;
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
// Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
//callback de envio
esp_now_register_send_cb(OnDataSent);
//callback de recepcion
esp_now_register_recv_cb(OnDataRecv);
// Registrando peer
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
/* Add peer
esp_now_add_peer(uint8_t *mac_addr, uint8_t role, uint8_t channel, uint8_t *key, uint8_t key_len)
Parámetros:
uint8_t *mac_addr: array de la dirección MAC del par de comunicación.
uint8_t role: papel del par de comunicación (0=ocioso, 1=maestro, 2 esclavo y 3=maestro + esclavo.
uint8_t channel: canal de comunicación, por lo general de 1 a 13 (algunas áreas pueden utilizar el canal 14).
uint8_t *key: array de 16 bytes con la clave de comunicación. NULL indica que no hay clave.
uint8_t key_len: longitud de la clave de comunicación. Actualmente deben ser 16 bytes.*/
if (esp_now_add_peer(&peerInfo) != ESP_OK){
Serial.println("Failed to add peer");
return;
}
}
void loop() {
String pp;
// Send message via ESP-NOW
esp_err_t result = esp_now_send(broadcastAddress,(uint8_t *)tl, sizeof(tl));
if (result == ESP_OK) {
Serial.print("Submitted successfully ");
Serial.println(sizeof(tl));
}
else {
Serial.println("Send Error");
}
delay(1000);
}