ESPNOW senden mit ESP12 geht schief, warum ?

OP #7664806
Lesenswert?

Das Kompilieren geht fehlerfrei, das Lesen des Shelly's geht problemlos, die Variablen haben die richtigen Inhalte, aber ESPNOW-Senden (siehe: void Senden(), Zeile 177) tut er nicht. Gibt Fehlermeldung und kommt nix an.

1
//***************** Senden ********************
2

3
void Senden()
4
{
5
  Ausgabe = Verteil[Laststufe] + " " + Strom + " " + Ampere + " " + Limit + "    " + Summe + " " + Schwelle + Ausgabe + "      ";
6
  Ausgabe.toCharArray(Puffer, 60);
7
  esp_now_send(broadcastAddress, (uint8_t *)&Puffer, sizeof(Puffer));
8
  Serial.println(Puffer);
9
}

Jemand ne Idee? Gruß Helle

#7664810
Lesenswert?

Bitte beachten:

Wichtige Regeln - erst lesen, dann posten!

1
Groß- und Kleinschreibung verwenden
2
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Ich mag dein Programm nicht durchschauen, da ich des dauernden Scrollens leid bin! Ein paar weniger Leerzeilen wären auch nicht zu verachten.

#7664884
Lesenswert?

Helmut H. schrieb:

esp_now_send(broadcastAddress, (uint8_t *)&Puffer, sizeof(Puffer));

sizeof() gibt die Größe des gesamten Puffers zurück. Ist denn die Nachricht auch wirklich exakt so lang, oder ist sie kürzer, so daß dahinter Mumpitz gesendet wird?

Für Textnachrichten nimmt man daher strlen(), wenn nicht bereits die Sendefunktion automatisch bei "\0" aufhört.

Beitrag #7669414 wurde von einem Moderator gelöscht.
Gast #7669415
Lesenswert?

Helmut H. schrieb:

einfach nix: Delivery fail.

Welchen der beiden Fehlercodes bekommst du denn? gebe den Code mal seriell aus.

https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/network/esp_now.html https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/network/esp_now.html#_CPPv424esp_now_register_send_cb17esp_now_send_cb_t

Prüfe, ob die Stromversorgung stabil ist. Sie muss mindestens 500 mA alleine für den ESP liefern können, plus mehr für alles was da sonst noch dran hängt.

Angehängte Dateien:
#7669432
Lesenswert?

Helmut H. schrieb:

Ist denn die Nachricht auch wirklich exakt so lang, oder ist sie kürzer, so daß dahinter Mumpitz gesendet wird?

Es wird doch garnix gesendet...

Weißt du das genau? Anscheinend sendest du zu viel, da kann sich der Empfänger dran verschlucken.

memcpy(&Puffer, &myData, sizeof(myData)); esp_now_send(broadcastAddress, (uint8_t *)&Puffer, sizeof(Puffer));

Müsste es in der zweiten Zeile nicht sizeof(myData) heißen?

OP #7672640
Lesenswert?

Hi, Dank euch Beiden. Es gab wohl tatsächlich eine Kollision. Nachdem ich die HTTP-Abfrage mal auskommentiert hatte, sendete die ESPNOW-Funktion einwandfrei. Um weiterzukommen, hab ich jetzt die häufig angewandte Methode gewählt, und zum Senden einen zweiten ESP investiert, dem ich den Datensatz über serial geliefert habe. Jetzt funktioniert alles.

Gruß Helle

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren