Hallo zusammen,
habe ein Problem mit ESPNOW.
Die Daten werden sauber vom Sender zum Empfänger übertragen und auch beim Empfänger angezeigt.
Nun möchte ich aber die übertragenen Daten nach der Verarbeitung im Empfänger löschen um dies beim nächsten loop- Durchlauf wieder neu einzulesen.
Momentan ist es so, dass wenn die Daten vom Sender an den Empfänger übermittelt wurden, diese immer beim Empfänger verarbeitet werden. Sogar, wenn ich den Sender ausschalte. Somit gehe ich davon aus, dass diese durch memcpy in den Speicher unter stationMsg kopiert werden.
Wie kann ich im Empfänger die Daten leeren, damit im Empfänger keine empfangenen Daten vorhanden sind und diese bei der loop- Ausführung wieder neu eingelesen werden.
Bin hier absolut überfordert und hoffe auf Unterstützung.
#include <esp_now.h> // https://wolles-elektronikkiste.de/esp-now
#include <esp_wifi.h>
#include <WiFi.h>
uint8_t myAddress[] = {0x94, 0x3C, 0xC6, 0x33, 0x68, 0x01};
typedef struct data {
int sen;
float humidity;
float temperature;
} data;
String Sensor;
int SenIn;
float TempIn;
float HumaIn;
data stationMsg;
data weatherStation[3] = {0};
void messageReceived(const uint8_t* macAddr, const uint8_t* incomingData, int len){
memcpy(&stationMsg, incomingData, sizeof(stationMsg));
weatherStation[macAddr[5]].sen = stationMsg.sen;
weatherStation[macAddr[5]].humidity = stationMsg.humidity;
weatherStation[macAddr[5]].temperature = stationMsg.temperature;
}
void setup(){
Serial.begin(115200);
delay(1000);
WiFi.mode(WIFI_STA);
esp_wifi_set_mac(WIFI_IF_STA, myAddress);
if (esp_now_init() == ESP_OK) {
Serial.println("ESPNow Init success");
}
else {
Serial.println("ESPNow Init fail");
return;
}
esp_now_register_recv_cb(messageReceived);
}
void loop(){
SenIn = 0;
TempIn = 999.99;
HumaIn = 999.99;
for(int i=2; i<3; i++){
if(i==2)
{
Sensor = " 002 IN";
SenIn = weatherStation[i].sen;
TempIn = weatherStation[i].temperature,1;
HumaIn = weatherStation[i].humidity;
}
Serial.print("Sensor");
Serial.print(Sensor);
Serial.println(":");
Serial.print("Sen: ");
Serial.println(SenIn);
Serial.print("HumaIn: ");
Serial.println(HumaIn + String(" %"));
Serial.print("TempIn: ");
Serial.print(TempIn + String(" °"));
Serial.println();
}
// Hier sollen alle übertragenen Daten gelöscht werden, damit diese beim nächsten Aufruf wieder eingelesen werden
Serial.println();
delay(2000);
}
Gruß
Falke07