Tag 11: TCP Webserver
In den vorangegangenen Versuchen haben wir uns viel mit dem Thema TCP und dem Zugriff auf Webserver beschäftigt. Heute soll das Modul erstmalig selbst als Webserver fungieren.
Hinter dem Türchen des 11. Tages befindet sich ein besonderes Kabel, das demnächst noch sehr nützlich sein wird. Ein spezieller Aufbau ist heute nicht nötig, da das Programm ähnlich wie das Serial Monitor Programm des ersten Tages funktioniert.
Das Programm: Day11_TCPServer
Ändern Sie wie bisher die WLAN-Daten und laden Sie das Programm auf Ihr Board. Dann starten Sie den Monitor. Es kann wieder ein paar Sekunden dauern, bis die Meldung erscheint, dass das Board verbunden ist. Wenn die Erfolgsmeldung erschienen ist und die IP des Moduls angezeigt wird, können Sie im Serial Monitor mit dem ersten Befehl beginnen:
AT+CIPMUX=1
Mit diesem Befehl lassen Sie mehrere Verbindungen mit dem Modul zu. So können mehrere Rechner auf den Webserver zugreifen. Mit dem nächsten Befehl starten Sie den Webserver:
AT+CIPSERVER=1,80
Der Parameter 1 bedeutet, dass der Server gestartet wird. Mit 0 beenden Sie einen Server wieder. Die Zahl 80 steht für den Port, unter dem der Server zu erreichen ist. Vom Browser gesendete HTTP-Anfragen werden generell über den Port 80 gesendet.
Sie können nun einen Browser Ihrer Wahl öffnen und in die Adressleiste die IP des Moduls eintippen und aufrufen. Im Browser erscheint zunächst eine Lademeldung, aber im Serial Monitor können Sie eine Veränderung beobachten. Sie sehen eine Request-Anfrage ähnlich der, die Sie schon manuell versendet haben.
Der Browser wartet nun also auf eine Antwort und zeigt solange ein Ladezeichen, bis die Verbindung wegen Timeout getrennt wird. Sie können dem Browser mit einer Variante eines bekannten Befehls eine Nachricht schicken:
AT+CIPSEND=0,7
Der Parameter 0 gibt hier den Client an, an den die Nachricht geschickt werden soll. Das ist nötig, weil mehrere Verbindungen erlaubt sind und deswegen auch mehrere Clients verbunden sein können. Der zweite Parameter, hier 7, gibt erneut die zu sendenden Zeichen an. Es erscheint > und Sie können ein einfaches
Hallo
eintippen und mit Enter senden. In Ihrem Browser wird sich zunächst einmal dennoch nichts ändern, denn Sie müssen die Verbindung erst schließen. Verwenden Sie dazu den Befehl
AT+CIPCLOSE=0
Nun können Sie im Browser ein Hallo sehen und damit haben Sie eine erste Webserver Anwendung realisiert.
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“.
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.
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
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?
Wie isset nur möglich??
Erster Tag wo es schon beim erstenmal störungsfrei funktioniert hat.
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
Was meinst du mit „aus einem anderen Netzwerk“? Beschreibe das bitte etwas genauer :)
Ich wollte das Board über das mobile Netz meines Smartphones ansteuern. Also nicht aus dem privaten Heimnetzwerk. (IP 192.168…)
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
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?
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?
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.
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.
Wie kann ich die IP des Moduls herausfinden?
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.
danke, fk