Day 11: TCP-Webserver

In the previous experiments, we dealt with the subject of TCP and access to web servers a lot. Today, the module is to act as a web server of its own for the first time.

Behind the door of the 11th day, there is a special cable that will be very useful soon. A special setup is not necessary today, since the program works similarly to the serial monitor programme of day one.

The program: Day11_TCPServer

Change the WLAN data as before and load the program onto your board. Then start the monitor. It may take a few seconds before the message that the board is connected appears. When the success message has appeared and the IP of the module is displayed, you can start with the first command in the Serial Monitor:

AT+CIPMUX=1

This command permits multiple connections to the module. You can then access the web server from several computers. Use the next command to start the web server:

AT+CIPSERVER=1,80

The parameter 1 means that the server is being started. 0 terminates a server again. The number 80 represents the port under which the server can be reached. HTTP requests sent by the browser are generally sent through port 80.

You can now open a browser of your choice and enter the IP of your module into the address bar and call it. The browser initially shows a loading message, but the Serial Monitor will show a change. You can see a request query similar to the one you have sent out manually before.

Die Browser-Anfrage

The browser query

The browser now waits for a response, and will show a loading sign until then, or until the connection is interrupted due to time-out. You can send a message to the browser with a version of a familiar command:

AT+CIPSEND=0,7

The parameter 0 indicates the client to which the message is to be sent here. This is necessary because multiple connections are permitted and several clients may therefore also be connected. The second parameter, here 7, again indicates the characters to be sent. > appears, and you can enter a simple

Hello

and send it out with Enter. Nothing will change in your browser at first. You need to close the connection before this can happen. For this, use the command:

AT+CIPCLOSE=0

Now you can see a Hello in the browser. You have implemented the first webserver application.

16 Comments

  1. GoPe

    Gleiches Problem wie Matthias. (Da der Junior schon an Tag 1 scheiterte, habe ich mich an der Sache probiert.)
    Beim Tag 11 ist mit OSX definitiv Schluss. Chrome und Safari können keine Verbindung mit dem Nano aufbauen.

    Sehr unschön ist auch, dass der Nano den Mac immer mal wieder abstürzen lässt. Das habe ich noch nie erlebt. Der unsignierte Treiber ist wohl nicht stubenrein.

    Nach vielem Herumprobieren ist mein Urteil nun leider “Daumen nach unten”.

    Reply
  2. Matthias

    Hi,

    OK ich bin spät dran… :-)
    Ich kann leider den NanoESP nicht erreichen. Als client um ins Web zu gehen hatte ich nie ein Problem gehabt. Alles Funktioniert ganz normal und auch meine Fritzbox sagt mir das da ein Gerät im Netz hängt (PC-[IP-v4]). Aber weder der web-browser noch ein ping kommt durch. Andere Geräte in meinem Heim-Netzwerk erreiche ich alle über ping. Was kann das sein?

    Matthias

    P.S.: Auch die WLAN P2P Verbindung aus den ersten Tagen hatte funktioniert.

    Reply
  3. gilo

    Offenbar habe ich ein “server” problem: nachdem alle einstellungen und AT-commandos erfolgreich abgesetzt wurden, und in der console auch die IP-Adresse des TCP-Servers angezeigt wird, bekomme ich beim Zugriff durch den browser (egal ob IE oder chrome) ein Timeout und in der Console tut sich “nix”. Dementsprechend geht auch das consolenkommando AT+CIPSEND=0,7 auf die Bretter mit Fehler “link is not valid” (der irgendwo aus der ESP-Lib kommen muss). Interessanterweise komme ich auch mit netzwerk-tools nicht an den ESP ran unter der angegebenen IP-Adresse. Kann es sein dass der Server gleich wieder “zu macht”, ggf. ein timeout-problem oder so? Oder habe ich ggf ein “hardware” problem mit meinem ESP? Bis dato sind alle anderen Programme einfach gelaufen ohne Probleme.
    Irgenwelche Ideen ?
    Gleiches Problem auch bei TAG 15 (mit dem Helligkeits-Server), auch keine Reaktion im Browser

    Reply
  4. Martin

    Hallo,

    habe es mit Chrome und sehr vielen Anläufen mal kurz ans laufen bekommen. Mein Eindruck ist, dass die Verbindung zwischen Browser und Modul nicht lange genug stabil ist, um die manuellen Eingaben im Serial Monitor ausreichend schnell durchführen zu können. Wenn dem so ist: Gibt es eine Möglichkeit, die Verbindung über mehrere Sekunden bis hin zu Minuten zu stabilisieren?

    Reply
  5. Christoph

    Wie isset nur möglich??

    Erster Tag wo es schon beim erstenmal störungsfrei funktioniert hat.

    Reply
  6. Marc

    Hi, ich habe gerade versucht, das Board aus einem anderen Netzwerk anzusprechen. Dies hat leider nicht funktioniert. Woran kann das liegen und wie kann man dies dennoch realisieren?

    Gruß Marc

    Reply
    1. Nikdro

      Was meinst du mit “aus einem anderen Netzwerk”? Beschreibe das bitte etwas genauer :)

      Reply
      1. Marc

        Ich wollte das Board über das mobile Netz meines Smartphones ansteuern. Also nicht aus dem privaten Heimnetzwerk. (IP 192.168…)

        Reply
  7. Vamish

    An alle die keine Meldung im Browser nach durführen der beschriebenen schritte haben:
    Benutzt einen anderen Browser, bei mir hat es bei Safari nicht funktioniert in Firefox schon

    Reply
  8. asd

    Nachdem ich den Browser aufgerufen und die IP eingegeben habe, kam auf dem seriellen Monitor gar nichts. Die Seite hat sich auch nicht geladen.
    Was können Fehler sein?

    Reply
    1. Nikdro

      Bevor Du mit AT+CIPSEND=0,7 etwas an den Browser sendest, kann dieser auch nichts anzeigen.

      Komisch, dass im seriellen Monitor nichts angezeigt wird :-/
      Sicher, dass Du AT+CIPMUX=1 und AT+CIPSERVER=1,80 angegeben hast und die Richtige IP verwendest?

      Welchen Browser verwendest Du?

      Reply
  9. Dirk

    Hi, nach dem ich den Befehl AT+CIPSERVER=1,80 eingegeben habe, muss ich dann wie bei Tag 8 weiter arbeiten um einen Browser zu ereichen.
    Vielen dank.

    Reply
    1. fk (Post author)

      Hi,
      nein gemeint ist ein normaler Browser vom PC, z.B. Chrome, Firefox etc, mit dem auf das Modul zugegriffen wird. In die Adressleiste des Browser wird dann die IP des Moduls eingetippt.

      Reply
      1. k

        Wie kann ich die IP des Moduls herausfinden?

        Reply
        1. Dirk

          Hi K,

          Wenn du den NanoESP mit deinem Wlan Router verbindest und es erfolgreich war, sende das Modul über den Seriellen Monitor seine IP Adresse.

          Reply
  10. jz

    danke, fk

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.