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


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


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...
1
#define MQTT_VERSION MQTT_VERSION_3_1_1
2
#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).
1
 
2
mqtt.beginPublish (topic,500,false);
3
mqtt.write(tt,500);//int write (payload, length)
4
mqtt.endPublish();


Hat jemand eine Idee?

Vielen Dank :D

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


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)


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)


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)


Lesenswert?

Ich spalte die Nachricht jetzt immer auf...

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.