Datenaustausch ESP8266

Hallo, ich habe ein Skript zusammengestellt dass Messdaten von einem Feuchtigkeitssensor an eine andere ESP8266 senden soll. Das Skript an sich funktioniert, jedoch bedoch bekomme ich es nicht hin dass die Messdaten übertragen werden. Kann mir da vielleicht jemand helfen?

#include <espnow.h>
#include "ESP8266WiFi.h"

const int soilMoistPin = A0;
const int soilMoistLevelLow = 861;    //Dieser Wert soll von euch entsprechend angepasst werden
const int soilMoistLevelHigh = 417;   //Dieser Wert soll von euch entsprechend angepasst werden


uint8_t receiverAddress[] = {0x58, 0xBF, 0x25, 0x49, 0x90, 0xB1};
typedef struct messageToBeSent {
    char text[64];
    int intVal;
    float floatVal;
} messageToBeSent;
typedef struct receivedMessage {
    char text[64];
    long runTime;
} receivedMessage;
messageToBeSent myMessageToBeSent; 
receivedMessage myReceivedMessage; 
void messageSent(uint8_t *macAddr, uint8_t status) {
    Serial.print("Send status: ");
    if(status == 0){
        Serial.println("Success");
    }
    else{
        Serial.println("Error");
    }
}
void messageReceived(uint8_t* macAddr, uint8_t* incomingData, uint8_t len){
    memcpy(&myReceivedMessage, incomingData, sizeof(myReceivedMessage));
    Serial.printf("Incoming Message from: %02X:%02X:%02X:%02X:%02X:%02X \n\r", 
            macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]);    
    Serial.print("Message: ");
    Serial.println(myReceivedMessage.text);
    Serial.print("RunTime [s]: ");
    Serial.println(myReceivedMessage.runTime);
    Serial.println();
}
void setup(){
    Serial.begin(115200);
    // delay(1000); // uncomment if your serial monitor is empty
    WiFi.mode(WIFI_STA);
    
    if (esp_now_init() == 0) {
        Serial.println("ESPNow Init success");
    }
    else {
        Serial.println("ESPNow Init fail");
        return;
    }
    esp_now_set_self_role(ESP_NOW_ROLE_COMBO);
    uint8_t result = esp_now_add_peer(receiverAddress, ESP_NOW_ROLE_COMBO, 0, NULL, 0);
    if(result != 0){
        Serial.println("Failed to add peer");
    }
    
    esp_now_register_send_cb(messageSent);  
    esp_now_register_recv_cb(messageReceived); 
       
    pinMode(soilMoistPin, INPUT);
   
}
 
void loop(){
      int soilMoist = analogRead(soilMoistPin);
  Serial.print("Analog Value: ");
  Serial.print(soilMoist);      // Auswertung der Bodenfeuchtigkeit in Prozent
  int percentSoilMoist = map(soilMoist, soilMoistLevelHigh, soilMoistLevelLow, 100, 0);
  Serial.print("\t"); 
  Serial.print(percentSoilMoist);
  Serial.println(" %");
  delay(2000);
  
  
  
  char textMsg[] = ("Messdaten");
    memcpy(&myMessageToBeSent.text, textMsg, sizeof(textMsg));
    myMessageToBeSent.intVal = 4242;
    myMessageToBeSent.floatVal = 42.42;
    esp_now_send(receiverAddress, (uint8_t *) &myMessageToBeSent, sizeof(myMessageToBeSent));
    delay(5000);
}

Das ist leider nicht sehr Aussagekräftig.
Was hast du erwartet was passiert?
Was geschieht stattdessen?
Wie sieht die Serielle Ausgabe aus? Was für Meldungen bekommst du?

Receiver

Das ist der Serielle Monitor vom Empfänger. Bei "Message: ... " sollten die Messwerte stehen

Und woran genau machst du das fest ?
Wie sieht denn dein Sketch des Empfängers aus ?

Ich habe den doch schon hochgeladen, aber hier nochmal ein Bild:

Receiver

Die Frage hast du noch nicht beantwortet.

Ok, der gezeigte Sketch ist vom Empfänger und wie sieht der vom Sender aus ?

Oh sorry, habs falsch gelesen. Hier der Sketch vom Empfänger, der vom Sender ist ja weiter oben:

#include <espnow.h>
#include "ESP8266WiFi.h"
uint8_t receiverAddress[] = {0x2C, 0xF4, 0x32, 0x18, 0x1C, 0xE1};
typedef struct messageToBeSent{
    char text[64];
    long runTime;
} messageToBeSent;
typedef struct receivedMessage {
    char text[64];
    int intVal;
    float floatVal;
} receivedMessage;
messageToBeSent myMessageToBeSent; 
receivedMessage myReceivedMessage; 
void messageReceived(uint8_t* macAddr, uint8_t* incomingData, uint8_t len){
    memcpy(&myReceivedMessage, incomingData, sizeof(myReceivedMessage));
    Serial.printf("Incoming Message from: %02X:%02X:%02X:%02X:%02X:%02X \n\r", 
            macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]);
    Serial.print("Message: ");
    Serial.println(myReceivedMessage.text);
    Serial.print("Integer Value: ");
    Serial.println(myReceivedMessage.intVal);
    Serial.print("Float Value: ");
    Serial.println(myReceivedMessage.floatVal);
    Serial.println();
    Serial.println("Sending answer...");
    Serial.println(); 
    char textMsg[] = "Danke für die Daten!";
    memcpy(&myMessageToBeSent.text, textMsg, sizeof(textMsg));
    myMessageToBeSent.runTime = millis()/1000;
    esp_now_send(receiverAddress, (uint8_t *) &myMessageToBeSent, sizeof(myMessageToBeSent));    
}    
void setup(){
    Serial.begin(115200);
    // delay(1000); // uncomment if your serial monitor is empty
    WiFi.mode(WIFI_STA);
    
    if (esp_now_init() == 0) {
        Serial.println("ESPNow Init success");
    }
    else {
        Serial.println("ESPNow Init fail");
        return;
    }
    esp_now_set_self_role(ESP_NOW_ROLE_COMBO);
    uint8_t result = esp_now_add_peer(receiverAddress, ESP_NOW_ROLE_COMBO, 0, NULL, 0);
    if(result != 0){
        Serial.println("Failed to add peer");
    }
    
    esp_now_register_recv_cb(messageReceived);
}
 
void loop(){}

Also nochmal:
Woran machst du fest ?

Ich befürchte, du bist da im Irrtum.
Das was bei deinen Daten fehlt ist der Text "Messdaten".
Und da vermute ich ein Formatfehler bzw. Steuerzeichen, den du durch copy&paste dir reingeholt hast.
Gebe dein Struct mal manuell per Tastatur ein, dann wirds vermutlich funktionieren.

Wie genau? Also an welcher Stelle soll ich was eingeben?

Den Sende und Empfangsstruct.
Evt. reicht auch nur der Text (String)

Hab ich jetzt bei beiden gemacht, bei char text [64]ist "text" nicht mehr orange, aber sonst ist immer noch alles gleich

Dann gebe diese Zeile im Sender mal neu ein.

Dann ist da noch ein Tippfehler. Vermutlich ein Leerzeichen zu viel.

ja das wars.

habe ich, aber da steht ja dann nur das wort Messdaten aber nicht der Wert von den Messdaten also z.B. 40% oder 87% oder so

Die überträgst du doch auch nicht.
Du sendest nur die Werte, die du im int und float eingetragen hast.
Ich sehe da weiter keine.

Hier müssen die rein.

Hä wie kann ich die denn dann überhaupt übertragen so dass die da angezeigt werden, also was muss da dann ins struct rein? ich hab schon überall gegooglet aber nichts gefunden

Das Struct ist nur das Format.
Die Werte kommen wie oben gezeigt rein.

Aber dann werden die Daten ja überhaupt nicht übertragen oder? Wie kann man des dann machen dass die Daten übertragen werden?

Dein Problem ist, du beantwortest Fragen (wie in Post #9) nicht.

Und richtig, deine Daten werden nicht gesendet, also funktioniert der Sketch nicht.
Du musst deine Messwerte in eine Variable übergeben und diese dann übertragen.
Anstatt der Pseudowerte.

Da kannst du z.B int percentSoilMoist nehmen.

Ich dachte der funktioniert so halbwegs weil der Sensor ja an sich was misst und die ESPs untereinander kommunizieren könne, nur das Problem ist halt das mit den Messdaten übertragen.

Könnte ich dann quasi int percentSoilMoisture in das setup einfügen und mit einer variable versehen, und dann in char TextMsg[] = ("int percentSoilMoisture")? oder die variable davon in die klammer?

Leider noch ein Problem.
Halbwegs funktioniert nichts. Es muss alles funktionieren, damit ein gutes Ergebnis rauskommt.
Und was du machen musst, habe ich schon beschrieben.