Forum: Mikrocontroller und Digitale Elektronik Mosquitto über Mobilfunk realisieren


von anna (Gast)


Lesenswert?

Hi,

ich habe hier neulich gelesen, dass so manche iot-projekte über 
mosquitto bewerkstelligt werden.
> ich fande das thema spannend und habe mich selbst etwas eingelesen und auch 
gleich mal eine Testumgebung aufgebaut.

ich habe einen kleinen ESP8266 an welchen ein Drehgeber und ein Relais 
angeschlossen ist...
=> der Drehgeber bewegt sich aktuell nur wenn man mit der Hand dran 
dreht <- funktioniert aber "annähernd" perfekt.

der Server steht im Internet, und das ganze läuft über eine 
Mobilfunkverbindung (hierzu ein LTE-Router, welcher ein WLAN für das ESP 
bereitstellt).

jetzt habe ich über nacht ~8 Stunden, fast 500MB verbraucht. Andere 
verbraucher sind ausgeschlossen.
=> Ich bin doch sehr überrascht wieviel so ein kleiner ESP verbrauchen 
kann.

Ich habe einen Thread Aboniert über welchen zu Nacht aber nicht 
Kommuniziert wurde. Daten übermittle ich nur, wenn ich am Drehgeber 
drehe...

Hat jemand eine idee was "falsch" läuft bzw. falsch laufen kann? Ich 
will heute nachmittag die Verbindung nochmal mit Wireshark 
analysieren... da ich aber verschlüsselt Kommuniziere, erwarte ich hier 
nicht viel auskunft.

> Bitte Fragt nach, wenn ich euch noch Informationen geben könnte um mir helfen zu 
können... danke ;)

von Christian B. (casandro)


Lesenswert?

Log doch mal mit, was der ESP macht. So weit wie ich weiß hat MQTT eine 
Möglichkeit die Verbindung durch regelmäßigen Austausch von speziellen 
Ping-Nachrichten am Leben zu erhalten. Das braucht man, wenn ein NAT 
dazwischen ist (hier im Mobilfunkrouter und beim Mobilfunkbetreiber).

von Michael U. (amiga)


Lesenswert?

Hallo,

MQTT ist eigentlich für geringe Datenmengen usw. entwicklet worden.
500MB in 8 Stunden wären rund 1MB pro Minute, da kann man ja Romane hin- 
und herschicken.

MQTT selbst nutzt eine keepAlive-Message damit der Broker weiß, daß der 
Client noch da ist. Wie oft und wieviel Byte das sind weiß ich jetzt 
nicht, aber eine übliche keepAlive Zeit sind 15 Minuten.

Ich habe nur mal mqttfx gestartet und alles lokale abboniert, sind so 
ca. 30 Message/min. Der Windows Resourcenmonitor meldet auch nur einige 
Byte/s von mqtt.fx
Wireshark o.ä. habe ich hier gerade nicht drauf.

Gruß aus Berlin
Michael

von Christian B. (casandro)


Lesenswert?

Michael U. schrieb:
> aber eine übliche keepAlive Zeit sind 15 Minuten.

Nein, das konnte man früher mal machen. Inzwischen haben NAT-Router 
einen Timeout von 5 Minuten (bei den guten) oder gar weniger als eine 
Minute (bei ganz schlechten). Sprich mit einem Keepalive alle 15 
Minuten würde Dir jedes mal die Verbindung abbrechen.


Aber das kann man alles sehr einfach nachschauen, einfach, zum Beispiel 
am Server, per tcpdump oder Wireshark den Netzwerkverkehr mitschreiben, 
wichtig ist dabei natürlich, dass auch der Verbindungsaufbau 
aufgezeichnet wird, und dann ein paar Minuten aufzeichen, dann sieht man 
ja alles sofort.

von Christian B. (casandro)


Lesenswert?

Michael U. schrieb:
> Wireshark o.ä. habe ich hier gerade nicht drauf.

Dann wirst Du nichts sehen können, und musst mit Hellseherei arbeiten. 
Setzt dann doch mal eine Anzeige in das "Elexier-Magazin". ;)

von Michael U. (amiga)


Lesenswert?

Hallo,

Christian B. schrieb:
> Nein, das konnte man früher mal machen. Inzwischen haben NAT-Router
> einen Timeout von 5 Minuten (bei den guten) oder gar weniger als eine
> Minute (bei ganz schlechten). Sprich mit einem Keepalive alle 15
> Minuten würde Dir jedes mal die Verbindung abbrechen.

ok. Sortieren wir: keepAlive wird vom Client beim Broker gesetzt, mit 
keepAlive kann man es auch für diesen Client komplett abschalten. Macht 
z.B. Sinn, wenn man nur published und nichts abboniert hat.
Bowser scheint default 10s zu sein, müßte man in dessen Einstellungen 
klären.
Beim Client hängt es auch von den Voreinstellungen ab.
Das Verhalten von NAT oder bei mir z.B. CGN (Timeout 1 Minute...) hat 
darauf erstmal nur indirekt Einfluß. Ich nutze MQTT nur im lokalen Netz, 
meine Antwort bezog sich auch nur auf die Datenmengen von MQTT, nicht 
auf irgendwelche Verbindungsaufbauten wegen NAT-Timeout usw.
Das wird sich wohl nur vor Ort klären lassen.

Christian B. schrieb:
> Dann wirst Du nichts sehen können, und musst mit Hellseherei arbeiten.
> Setzt dann doch mal eine Anzeige in das "Elexier-Magazin". ;)

wenn ich wissen will, wieviel durch die Netzwerkverbindung des 
MQTT-Clients an Daten geht, muß ich weder deren Inhalt noch andere Daten 
dazu wissen.
Und das sagt der Windows-Resourcenmonitor durchaus brauchbar aus.

Gruß aus Berlin
Michael

von Timmo H. (masterfx)


Lesenswert?

Wenn man die Pubsubclient lib für den ESP8266 benutzt ist der Keep-Alive 
auf 15s gesetzt (richtig wären eigentlich 10s).
Da dürften aber trotzdem nicht so viele Daten zusammen kommen.

Aber vielleicht hast du in deiner ESP Firmware auch einen Bug dass du 
versehendlich alle paar Millisekunden eine Message schickst weil du 
denkst dass der Drehgeber sich bewegt hat.

von Michael U. (amiga)


Lesenswert?

Hallo,

Timmo H. schrieb:
> Wenn man die Pubsubclient lib für den ESP8266 benutzt ist der Keep-Alive
> auf 15s gesetzt (richtig wären eigentlich 10s).

ja, habe ich auch gefunden, beim AsyncMQTT sind es auch 15s dafault. Da 
hat wohl wer gepokert und sich auf die keepAlive + 50% verlassen, bis 
der Broker disconnected...

Ein keepAlive-Ping vom Client wird nur gesendet, wenn über die Zeit 
keine andere Message gesendet wird.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von anna (Gast)


Lesenswert?

ich kann euch zwar folgen, aber selbst wenn ich alle 10 Sekunden 2 Byte 
austausche, komme ich auf 5kb (wenn ich mich nicht verrechnet habe) und 
wenn ich das 1000 mal so oft mache, evtl. 5MB aber 500MB ist schon echt 
viel?

Der Drehgeber bringt definitiv keine "falscheingaben" da er einrastet 
und ich die Ausgabe auch über die Konsole sehe, und da gibt es keine 
neuen werte...

=> aber evtl. ist auch mein Script im ESP falsch,...
dennoch bringen mich die 500MB ins grübeln

Kennt jemand eine gute Library für MQTT? ich habe jetzt irgendwas von 
pubsubclient gefunden. Das Arbeitet ziemlich schnell <- inwiefern das 
aber sauber und stabil ist, weiß ich noch nicht...

von Michael U. (amiga)


Lesenswert?

Hallo,

anna schrieb:
> Kennt jemand eine gute Library für MQTT? ich habe jetzt irgendwas von
> pubsubclient gefunden. Das Arbeitet ziemlich schnell <- inwiefern das
> aber sauber und stabil ist, weiß ich noch nicht...

Pubsubclient ist auch auf dem ESP8266 absolut stabil, nutze ich aber nur 
noch auf Sensoren, die nur alle paar Minuten aufwachen und z.B. 
temperatur schicken.
Ansonsten AsyncMQTT für den ESP, ebenfalls stabil.
Beim AsyncMQTT muß man evtl. aufpassen, wenn man DHCP nutzt und es einen 
WLAN-Reconnect gab. WiFi.status() meldet WL_CONNECTED wenn die 
Verbindung zum Router steht. Wenn man jetzt sofort MQTT-connect aufruft 
kann das gegen die Wand laufen, weil man vom DHCP noch keine IP bekommen 
hat...
Passiert selten, ist aber unberechenbar, weil es dann keinen neuen 
Versuch eines connect zum MQTT gibt und man Messages nach weißen Sand 
schickt. Fehlerabfragen macht man erfahrungsgemäß dort selten.
Man sollte also ers5t WiFiEventStationModeGotIP auf eine gültige IP 
testen.

Stabil heißt 24/7 über inzwischen etliche Monate.

Gruß aus Berlin
Michael

von oszi40 (Gast)


Lesenswert?

anna schrieb:
> ~8 Stunden, fast 500MB verbraucht

Je nach Servicequalität könnte er viele erfolglose Versuche gestartet 
haben um seine Meldung loszuwerden? 
https://www.sic-software.com/das-mqtt-protokoll-1/

von Marco H. (damarco)


Lesenswert?

Da verursacht was anderes die Traffic. Selbst mit gedrosselter Datenrate 
funktioniert MQTT zuverlässig. Bei solch einer Geschichte kann man den 
kleinste Tarif wählen, so lange die Paketdaten nicht abgeschaltet werden 
funktioniert MQTT.

von anna (Gast)


Lesenswert?

leider habe ich den Fehler immer noch nicht gefunden...
=> zum Mitschnitt im wireshark bin ich noch nicht gekommen

aber ich habe gestern mal einen Delay von 15 Sekunden im loop eingebaut 
und konnte dann gut beobachten wie alle 15 Sekunden im (lte)router ein 
größeres (80kb) Paket an Daten transferiert wurde...

ich versteh das nicht.
=> Ich arbeite im QOS0 also fire and forget <- da müsste man schon die 
wenigsten daten brauchen.

am Router hängt NICHTS anderes...
=> ich habe zwar zum "nachschauen" wieviele Daten verbraucht wurden, 
kurzzeitig einen Windows Rechner dran hängen... aber um auszuschließen 
dass der Updates zieht oder irgendwelche Daten verbraucht (obwohl er so 
eingestellt ist, dass er dies nicht machen soll) => schalte ich diesen 
auch direkt nach dem "nachschaueeen" wieder komplett aus.
=> niemand anderes Hat Zugriff auf dem Router

nur der kleine ESP8266 schafft es nach wie vor in der Stunde ~80MB an 
Daten zu verbraten (im übrigen 80% Davon ist upload).

für weitere Ideen bin ich immer noch offen

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Wird ständig die Mobilfunk-Verbindung auf und ab gebaut?

Was hast du für einen Tarif? So einen Tarif, mit "angefangene 100 KB 
zählen als 100 KB"? oder noch schlimmer?

Hat das Modem oder der ESP versucht ein Firmware-Update über Mobilfunk 
zu machen? Allgemein, läuft auf dem ESP oder dem Modem irgendein anderer 
Dienst der das Datenvolumen verursacht?

Ist das bereitgestellte WLAN vielleicht offen und der Nachbar surft 
"versehentlich" drüber?

Und für die Zukunft (löst nicht das aktuelle Problem), schau mal nach 
NB-IoT oder Cat-M1 Modems und Tarifen. Am besten mit LwM2M statt MQTT. 
So langsam kommt da richtig feines Zeug auf den Markt.

von Michael U. (amiga)


Lesenswert?

Hallo,

anna schrieb:
> der Server steht im Internet, und das ganze läuft über eine
> Mobilfunkverbindung (hierzu ein LTE-Router, welcher ein WLAN für das ESP
> bereitstellt).

Server heißt hier ein im INet erreichbarer MQTT-Broker?

anna schrieb:
> nur der kleine ESP8266 schafft es nach wie vor in der Stunde ~80MB an
> Daten zu verbraten (im übrigen 80% Davon ist upload).

Dann wirst Du wohl wirklich den Datenverkehr des ESP im WLAN mitloggen 
und kontrollieren müssen.
Ich müßte jetzt überlegen, wie man das am günstigsten macht in dieser 
Konfiguration (ESP und LTE-Router) macht.
Gute Router sollten ja selbst zumindest die Menge an den Traffic 
zwischen Router und einer bestimmten Client-IP in beiden Richtungen 
anzeigen können.

Hannes J. schrieb:
> Hat das Modem oder der ESP versucht ein Firmware-Update über Mobilfunk
> zu machen? Allgemein, läuft auf dem ESP oder dem Modem irgendein anderer
> Dienst der das Datenvolumen verursacht?

Vielleicht kannst Du hier mal den User fragen, ob er was über seine 
Datenmengen weiß:
https://www.arduinoforum.de/arduino-Thread-NODEMCU-vs-ESP8266?page=6

Er nutzt ESP direkt mit SIM-Modul und MQTT.

Gruß aus Berlin
Michael


Der ESP macht definitiv nur, was man drauf programmiert hat.
Wobei hier eine Frage bei mir auftaucht: wenn der ESP sich beim Router 
anmeldet hält er auch diese Verbindung bis man sie disconnected.
Wie verhält sich ein LTE-Router mit der Verbindung nach außen?
Wie verhält sich der Router in Verbindung mit MQTT wenn sich der Client 
im Internet beim Broker anmeldet? Wie lange bleibt diese Verbindung und 
damit auch die LTE-verbindung aktiv auch wenn keine Daten aktiv gesendet 
werden?

von anna (Gast)


Lesenswert?

@Michael U.
> Server heißt hier ein im INet erreichbarer MQTT-Broker?

warum sollte ich das sonst über Mobilfunk realisieren?

@Hannes J.
> Was hast du für einen Tarif? So einen Tarif, mit "angefangene 100 KB
> zählen als 100 KB"? oder noch schlimmer?

was hat das mit meinem Verbrauch zu tun... das sind exakt die Daten die 
mir der Router und die Mobilfunkverbindung anzeigt

> Ist das bereitgestellte WLAN vielleicht offen und der Nachbar surft
> "versehentlich" drüber?

wenn ich doch sage, dass niemand da Zugriff drauf hat.

@Marco H.
> Da verursacht was anderes die Traffic. Selbst mit gedrosselter Datenrate
> funktioniert MQTT zuverlässig. Bei solch einer Geschichte kann man den
> kleinste Tarif wählen, so lange die Paketdaten nicht abgeschaltet werden
> funktioniert MQTT.

nichts weiter da... jetzt kommt wireshark action...
> aber damit kenn ich mich nicht sooo gut aus :/

von c-hater (Gast)


Lesenswert?

anna schrieb:

> nichts weiter da... jetzt kommt wireshark action...

Zeit wird's...

Das ganze Geseiere bisher war völlig sinnbefreit. Wenn man was 
untersuchen will, muss man erstmal sehen, was passiert, das ist doch 
sowas von logisch, dass man das nichtmal weiter diskutieren muss...

>> aber damit kenn ich mich nicht sooo gut aus :/

Lernen hat noch niemandem wirklich geschadet, Faulheit und Ignoranz 
hingegen schon...

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

anna schrieb:
> @Hannes J.
>> Was hast du für einen Tarif? So einen Tarif, mit "angefangene 100 KB
>> zählen als 100 KB"? oder noch schlimmer?
>
> was hat das mit meinem Verbrauch zu tun... das sind exakt die Daten die
> mir der Router und die Mobilfunkverbindung anzeigt

Weil Mobilfunkanbieter in manchen Verträgen aufrunden. Kräftig. Aber da 
stehst du ja drüber, du Maximalspezialistin.

>> Ist das bereitgestellte WLAN vielleicht offen und der Nachbar surft
>> "versehentlich" drüber?
>
> wenn ich doch sage, dass niemand da Zugriff drauf hat.

Ja, klar, du sagst viel. WEISST du es? Ach, weißt du was? Ist mir egal.

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.