• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Esp now 8266

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();
 
  }
}
 

aZholtikov

Active member
Написать esp_now_send(mac_addr, incomingData, len) в любом месте функции обработки принятого сообщения.
 
Сверху Снизу