Mirdo
New member
Здравствуйте! У меня возник вопрос, можно ли сделать так что бы когда пришло сообщение то оно отщеркаливалось обратно?
Вот мой код приёмника:
Вот мой код приёмника:
C++:
#include <ESP8266WiFi.h>
#include <espnow.h>
// ЗАМЕНИТЕ МАС-АДРЕСОМ ПОЛУЧАТЕЛЯ
uint8_t broadcastAddress[] = {0xC4, 0x5B, 0xBE, 0xF2, 0x42, 0xD1};
typedef struct struct_message {
int c;
} struct_message;
struct_message myData;
#define BOARD_ID 2
// Callback-функция при отправке сообщения
void OnDataSent(uint8_t *mac_addr, uint8_t sendStatus) {
Serial.print("\r\nСтатус пакета: ");
if (sendStatus == 0){
Serial.println("Доставлен");
}
else{
Serial.println("Потерялся");
}
}
void OnDataRecv(uint8_t * mac_addr, uint8_t *incomingData, uint8_t len) {
char macStr[18];
memcpy(&myData, incomingData, sizeof(myData));
Serial.print("Пакет от: ");
snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",
mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
Serial.println(macStr);
Serial.print("Сколько весит: ");
Serial.println(len);
Serial.print("Сикрет число: ");
Serial.println(myData.c);
}
void setup() {
// Запускаем монитор порта
Serial.begin(115200);
// Выставляем режим работы Wi-Fi
WiFi.mode(WIFI_STA);
WiFi.disconnect();
// Инициализируем ESP-NOW
if (esp_now_init() != 0) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Указываем роль платы в ESP-NOW
esp_now_set_self_role(ESP_NOW_ROLE_COMBO);
// После запуска протокола получаем обратную связь о состоянии отправки
esp_now_register_send_cb(OnDataSent);
// Регистрируем пиры
esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_COMBO, 1, NULL, 0);
esp_now_register_recv_cb(OnDataRecv);
}
long lastTime;
long timerDelay = 2000;
void loop() {
if (millis() - lastTime > timerDelay) {
esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
lastTime = millis();
}
}