Forum: Mikrocontroller und Digitale Elektronik MQTT esp32/Arduino-pubsubclient.h - publish mehr als 700 B esp


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Olso L. (Firma: technik) (toelqo)


Bewertung
0 lesenswert
nicht lesenswert
Hallo guten Tag,

(Thema MQTT- Bibliothek - pubsubclient.h für ESP32/ Arduino)

wenn man mehr als ca. 700 Byte mit der Funktion publish() oder write 
(start/end) verschicken möchte kommt im Topic nichts an.

Als wichtig konnte ich bis jetzt nur die beiden Zeilen in der 
pubsubclient.h erkennen...
#define MQTT_VERSION MQTT_VERSION_3_1_1
#define MQTT_MAX_PACKET_SIZE 1000000

Da ich mit publish(topic,payload); auch nicht weitergekommen bin, teste 
ich gerade write()... (benötigt glaube ich ein Byte-Array).
 
mqtt.beginPublish (topic,500,false);
mqtt.write(tt,500);//int write (payload, length)
mqtt.endPublish();


Hat jemand eine Idee?

Vielen Dank :D

von Olso L. (Firma: technik) (toelqo)


Bewertung
0 lesenswert
nicht lesenswert
(Entschuldigung - nach Drücken des Veröffentlichen-Buttons gab es keine 
Reaktion von der Seite. ich habe deswegen immer wieder auf Vorschau und 
dann auf Veröffentlichen geklickt)

: Bearbeitet durch User
von Helmut -. (dc3yc)


Bewertung
1 lesenswert
nicht lesenswert
Soweit ich mich erinnere, ist der Buffer nur 128 Byte gross. Damit käme 
es in die Kategorie "Weltwunder", wenn man 700 Bytes senden könnte. 
Kannst du deine Daten nicht in mehreren Paketen schicken?

p.s. hab das in der Pubsub-Beschreibung noch gefunden:

Maximum Message Size As part of minimising its footprint, it limits the 
size of any MQTT packet it can send or receive to 128 bytes. If you want 
to send or receive messages larger than this, you must change the value 
of MQTT_MAX_PACKET_SIZE in PubSubClient.h. The library allocates this 
much memory in its internal buffer, which reduces the memory available 
to the sketch itself.

p.p.s: hat der ESP32 überhaupt 1MB RAM, so wie du es versuchst?

: Bearbeitet durch User
von Olso L. (Firma: technik) (toelqo)


Bewertung
0 lesenswert
nicht lesenswert
Hi vielen Dank für die Antwort,
[h]
https://en.wikipedia.org/wiki/ESP32#:~:text=The%20ESP32%20system%20on%20a%20chip%20integrated%20circuit,5%20mm%20%C3%97%205%20mm%20sized%20QFN%20packages
[/h].

512 kib habe ich jetzt daraus gelesen
-----
#define MQTT_MAX_PACKET_SIZE 1000000
wären dann wirklich zu viel xD
Ich trage jetzt erst mal wieder 20000 ein...
---
Empfangen/Senden geht aber auf jeden Fall mit bis zu ca. 800 Byte.
128 Byte werden da auf jeden Fall überschritten.
Ich denke nicht, dass das eine Grenze ist.

von Olso L. (Firma: technik) (toelqo)


Bewertung
0 lesenswert
nicht lesenswert
Ich spalte die Nachricht jetzt immer auf...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.