Forum: Mikrocontroller und Digitale Elektronik ESPNOW senden mit ESP12 geht schief, warum ?


von Helmut H. (hheck)


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

: Bearbeitet durch User
von Helmut -. (dc3yc)


Lesenswert?

Bitte beachten:

Wichtige Regeln - erst lesen, dann posten!

    Groß- und Kleinschreibung verwenden
    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.

: Bearbeitet durch User
von Oliver R. (orb)


Lesenswert?

Helmut H. schrieb:
> Gibt Fehlermeldung und kommt nix an.

Was für eine Fehlermeldung gibt es denn?

von Helmut H. (hheck)


Lesenswert?

Oliver R. schrieb:
> Was für eine Fehlermeldung gibt es denn?

"Last Packet Send Status: Delivery fail"

von Peter D. (peda)


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.

: Bearbeitet durch User
von Helmut H. (hheck)


Angehängte Dateien:

Lesenswert?

Die Nachricht (Ausgabe) ist ein String mit unterschiedlicher Länge.

Ich würde gern den gesamten Sketch als Anhang hochladen, aber wie geht 
das denn?

von Helmut H. (hheck)


Lesenswert?

Ok, hat geklappt  ;)

von Helmut H. (hheck)


Lesenswert?

Peter D. 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...

von Rainer W. (rawi)


Lesenswert?

Helmut H. schrieb:
> Ich würde gern den gesamten Sketch als Anhang hochladen, aber wie geht
> das denn?

Wie wäre es mit der passenden Extension, damit im Betrachter Dinge wie 
Syntax Highlighting funktionieren?

von Helmut H. (hheck)


Angehängte Dateien:

Lesenswert?

Ich hab den Sketch jetzt mal umsortiert und mit einer Struckt statt dem 
String versucht.
Der ESP12 sendet einfach nix: Delivery fail.
Beim Kompilieren keine Fehlermeldung.

Beitrag #7669414 wurde vom Autor gelöscht.
von Steve van de Grens (roehrmond)


Angehängte Dateien:

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.

: Bearbeitet durch User
von Rolf (rolf22)


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?

von Helmut H. (hheck)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.