WLAN Modul ESP8266 – Server einrichten

Wlan16

Die Verbindung zu anderen Geräten steht nun, egal ob Sie das Modul als AP oder als Client benutzen. Doch nun sollten die Geräte auch miteinander kommunizieren können. Deswegen wird in diesem Teil ein Server eingestellt. Auf diesen Server kann dann z.B. über ein Handy zugegriffen und Daten übermittelt werden. Doch der Reihe nach.

Zunächst einmal muss eine Einstellung vorgenommen werden und zwar die Einstellung AT+CIPMUX=1. Dies ermöglicht, mehrere Verbindungen gleichzeitig aufbauen zu dürfen. Ich habe noch nicht genau herausgefunden warum diese Einstellung nötig ist, Tatsache ist aber, dass sich der Server nicht starten lässt wenn diese Einstellung nicht gemacht wurde. Ein wichtiger Punkt ist, dass sichdiese Konfiguration nicht speichert. Das bedeutet, Sie müssen diesen Befehl jedes Mal neu eingeben, wenn Sie das Modul neu eingeschaltet oder resetet haben.

Nun können Sie den Server mit dem Befehl AT+CIPSERVER=1,80starten. Der zweite Parameter, also die 80, ist der Port, über den der Server erreicht werden kann. Sie können hier auch einen anderen Port verwenden. In diesem Beispiel ist der Server aber unter dem Port 80 zu erreichen.

Nun wird es spannend. Sollte das Starten des Servers mit OK bestätigt worden sein, können Sie nun versuchen den Server über ein Gerät Ihrer Wahl zu erreichen. Wenn Sie sich nicht mehr sicher sind, wie die IP des Moduls lautet verwenden Sie den AT+CIFSR Befehl. Auf dem Bild unten sehen Sie die beiden IP-Adressen. Die erste ist gültig, wenn Sie eine direkte Verbindung über den AP benutzen, die zweite gilt, wenn Sie über den Router das Modul erreichen möchten.

Wlan10

Ich versuche nun also über den PC und den Router das Modul zu erreichen. Dazu öffne ich einen Browser und gebe die IP-Adresse des Moduls gefolgt von einem Doppelpunkt und dem Port des Servers ein. In diesem Fall also:

192.168.178.35:80

Wenn Sie nun Enter drücken versucht der Browser eine Seite zu laden. Dies hat allerdings kein Erfolgt. Im Serial Monitor können Sie allerdings sehen, dass Daten empfangen wurden:

Wlan11

Zunächst steht dort Link, was verdeutlicht, dass eine Verbindung hergestellt wurde. Dann folgen empfangene Daten. Allgemein werdenempfangene Daten durch +IPD gekennzeichnet. Danach folgen zwei Zahlen. Die erste Zahl zeigt, welche der bestehenden Verbindungen die Daten geschickt hat. Da z.Z. nur ein Rechner die Seite geöffnet hat, steht dort eine 0. Eine zweite Anfrage würde dann den Index 1 bekommen usw. Die zweite Zahl gibt die Länge der empfangenen Daten an. Hier wurden also anscheinend 376 Zeichen empfangen. Wer möchte kann ja mal nachzählen. Nach dem Doppelpunkt stehen nun die eben beschriebenen Daten.  Es scheint sich hier um eine Anforderung zu handeln, die allgemein beim Öffnen einer Seite vom Browser geschickt wird.

Diese Verbindung bleibt nun eine Weile stehen, ohne dass etwas passiert. Nach in der Regel 180s = 3 Minuten, wird die Verdingung automatisch getrennt. Dies wird durch die Meldung Unlinked verdeutlicht. Sie können die Zeit bis zur automatischen Trennungübrigens auch Einstellen und zwar mit dem Befehl AT+CIPSTO=Xwobei X maximal 28800 für 28800s = 8h entsprechen darf.

Falls Sie sich gerade nicht sicher sind, ob und wenn ja wie viele Verbindungen zum Modul bestehen, können Sie dies mit dem BefehlAT+CIPSTATUS erfragen. Status 4 scheint zu bedeuten, dass keine Verbindungen bestehen. Status 3 bedeutet anscheinend Verbindungen und wird mit einer Liste von verbunden Geräten ergänz.

Wlan12

Nun soll aber die Verbindung nicht völlig nutzlos sein, sondern es sollenDaten an den Browser geschickt werden. Dazu gibt es denAT+CIPSEND Befehl. Dieser hat zwei Parameter, die ähnlich dem Empfangsparametern sind. Der erste Parameter gibt also den Index der Verbindung an, der zweite die Anzahl der zu sendenden Zeichen. Die einfachste Form von Daten sei nun ein Text. Dieser kann tatsächlich auch so im Browser angezeigt werden. Wenn Sie also den Server im Browser andressiert haben und eine Linked Verbindung besteht, können Sie mit AT+CIPSEND=0,5 einen Text senden. Nach eintippen des Befehls ins Terminal erscheint ein > das verdeutlichen soll, dass Sie nun den Text eintippen können. Fünf Zeichen reichen für ein Hallo. Ein Wechsel zu dem Browser ist aber leider enttäuschend, denn dort wird immer noch das Seite-Laden Symbol angezeigt. Das liegt scheinbar daran, dass die Verbindung noch nicht geschlossen wurde. Sie können also nun entweder die 3 Minuten warten, oder Sie schließen mit AT+CIPCLOSE=0 die Verbindung zu diesem Gerät. Nach dem Schließen sehen Sie nun ein einfaches Hallo im Browser.

Wlan13

Wlan14

Nach dem Eintippen dem und Senden einer Nachricht mittel CISENDerscheint übrigens oft die Meldung wrong syntax und ERROR gefolgt von SEND OK. Das scheint vorzukommen, wenn man mehr Zeichen sendet als vorher angegeben. Ich schätze, dass man zwei Zeichen extra eingeplant werden müssen, vermutlich wegen dem CR und NL des Terminals. Gelegentlich trifft man aber auch die richtige Anzahl von Zeichen und die Fehlermeldungen erscheinen nicht. Ich muss diesbezüglich noch ein wenig rumprobieren, aber des Senden scheint nicht beeinträchtigt zu sein.

Es gibt auch die Möglichkeit außerhalb eines Browser eine Verbindung aufzubauen. Dazu kann ein TCP-Client genutzt werden. Ich habe mir einen solchen Client im Google Playstore heruntergeladen und konnte so eine Verbindung herstellen      und Daten hin und her schicken. Der erste Schritt für eine App wäre also gemacht.

Wlan15

Wlan16

App: TCP-Client im Google PlayStore