Vincent schrieb:
> Also sorgt ESP-NOW schon dafür, dass die Daten
> richtig ankommen? Oder sollte ich auch einen CRC dazu packen?
Ethernet Pakete sind bereits durch eine CRC abgesichert. Fehlerhafte
Pakete werden verworfen.
Beim TCP Protokoll werden automatisch mehrere Wiederholversuche gemacht.
Falls auch das erfolglos warm bricht TCP die Verbindung ab. TCP kennst
du vom Web Browser.
Beim UDP Protokoll werden (vom Netzwerk Stack/Treiber) keine
Wiederholungen gemacht. Es gibt keine Verbindung, also auch keinen
Abbruch. Es gibt auch kein Signal an das Anwendungsprogramm, dass ein
Paket verloren wurde. Oft ergänzen die Anwendungsprogramme das
Protokoll, um verlorene Pakete wenigstens zu bemerken (z.B. anhand einer
fortlaufenden Sequenz-Nummer). UDP kennst du vom Video Streaming (z.B.
Netflix).
ESP-NOW ist ein Spezialfall, weil es weder TCP noch UDP nutzt. Ich bin
nicht 100% sicher, aber ich denke dass fehlerhafte Pakete nicht
entschlüsselt werden können.
Ofenbar findet wie bei UDP keine automatische Wiederholung statt, und
das Anwendungsprogramm erfährt nicht, ob das Paket beim Empfänger
angekommen ist. Denn Espressif empfielt:
"If necessary, send back ack data when receiving ESP-NOW data. If
receiving ack data timeouts, retransmit the ESP-NOW data. A sequence
number can also be assigned to ESP-NOW data to drop the duplicate data."
Siehe
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html
Zusammengefasst: Was du sendest, kann verloren gehen. Was du empfängst
ist garantiert richtig (unverändert).