Day 15: A web server

Since the Blynk platform was the central point of our projects over the last few days, now we’re coming to a totally new subject: the NanoESP as web server. You’ve already gotten a first impression of it in the test for the first day. In the coming days, we’ll see what all else is possible.

Behind today’s door is a special two-core cable with which you can connect e.g. even LEDs or sensors outside the board. For today’s test, however, no hardware layout is necessary at all. You only need the programme and a browser.

Download the programme and program it on the board. You might be wondering why you don’t have to enter any WLAN data today. The reason is that the board, or more precisely the WLAN chip, still has your WLAN data stored from the previous test. A new function of the library now waits for a restart until a connection to the known WLAN has been made. If you’re using a new WLAN, you need to delete the comment characters before the line

nanoesp.configWifi(DUAL, SSID, PASSWORD);

so that the new data can be adjusted. The same is true for all subsequent days. There’s something else new today: The board is used in dual mode. This means that the board both connects to your home WLAN network and generates its own access point. You can thus access the board in two ways.

After the upload, two IP addresses also appear simultaneously on the serial monitor this time. The address that’s after +CIFST:APIP is that of the board in the access point WLAN. The one after +CIFST:STAIP is the one that the board has been assigned by the router. Because your computer is probably already connected to the home network, you should enter the second IP address in your browser. A main page appears through which you can reach other pages via links, all of which are also stored on the board. You can follow the calling up of a page on the serial monitor.

Das Board ist über zwei Netzwerke erreichbar, aber nur eins hat eine Internetverbindung

The board can be accessed through two networks, but only one has an Internet connection

Die Webseite im Browser

The website in the browser

If you now want to connect your PC to the NanoESP’s own WLAN, you have to call up the access point IP address in the browser. The pages are the same, with the exception that no pictures are displayed. The reason is that the PC has no connection to the Internet through this network and thus the images, as external resources, can’t be loaded. The advantage of this network mode, however, is that you don’t need a router as a way station but can access the board directly. Both methods thus have their advantages and disadvantages.

Die IP-Adressen und Browser-Requests im Seriellen Monitor

The IP addresses and browser requests on the serial monitor

35 Comments

  1. Alex

    Mit Safari wird die Seite nicht angezeigt, mit Chrome aber schon.
    Das blöde dabei ist, dass Safari nichts über den Fehler sagt, bzw. sich mit "Server antwortet nicht" nach einem Timeout meldet. Und das stimmt nicht, denn der Fehler sieht man in der Konsole:
    [Error] Sandboxing 'http://192.168.1.104/' because it is using HTTP/0.9.
    [Error] Stopped document load from 'http://192.168.1.104/' because it is using HTTP/0.9 on a non-default port.

    Reply
  2. Enno Klatt

    Ich arbeite mit dem Raspberry PI.
    Arduino IDE 2:1.0.5+dfsg2-4

    Hat bisher alles funktioniert.
    Aber was ist hier los?
    Der IDE-Editor stürzt ab bei Eingabe von:
    if (nanoesp.wifiConncte…..

    Der Buchstabe "d" bringt den Editor zum Absturz.
    Mit Strg+Z hört es auf.

    Fehlermeldung:
    java.lang.ArrayIndexOutOfBoundsException: 16

    Titte ich statt WifiConnected "Knuddelwutsch" ist alles okay!

    Reply
    1. Enno Klatt

      Ach ja, der Fehler lag in der keywords.txt der NanoESP-library:

      Hinter den Einträgen der Wörter darf kein ";" stehen!

      Reply
  3. TheMilestone

    Bei mir konnte ich merkwürdigerweise auch über das Accespoint Wlan das Pinlayout aufrufen.

    Reply
    1. Jonathan

      Ja bei mir auch. Der einzige Unterschied ist beim AP das fehlende Bild des Bretzel Board … aus

      Das ist auch verständlich.

      Sonst ist alles TOP, PRIMA DANKE

      Reply
      1. Marco

        Browser Cache zwischendrin mal geleert? Bei mir funktionierte es auch nur so, dass die Bilder verschwinden ;)

        Reply
  4. Detlef Redante

    `"TCP Server Error" klingt nicht gut. Was kann ich machen

    Reply
    1. sumero

      vermutlich hat dein board keine IP adresse.
      schick zeig doch bitte mal die Ausgabe von deinem Seriellen Monitor.
      Ansonsten empfehle ich die folgenden Zeilen auszukommentieren, SSID/PASSWORT neu zu setzen und das Programm nochmal hochzuladen.
      nanoesp.configWifi(ACCESSPOINT, "NanoESP", "");
      nanoesp.configWifi(DUAL, SSID, PASSWORD);

      Reply
      1. Detlef Redante

        Hallo Sumero, Danke fürs Kümmern.
        ssid und Passwort setze ich neu.
        Die Zeilen habe ich auskommentiert – hilft nicht
        Der Serielle Monitor sagt:
        TCP Server Error

        AT+CIFSR

        +CIFSR:APIP,"192.168.4.1″
        +CIFSR:APMAC,"1a:fe:34:cf:60:81″
        +CIFSR:STAIP,"192.168.178.30″
        +CIFSR:STAMAC,"18:fe:34:cf:60:81″

        OK
        "
        Hast Du noch einen Tipp wo ich mich ein bißchen weiterbilden kann? Ich würde die ganzen kopierten Codes gerne verstehen.

        Reply
  5. Detlef Redante

    das war DER Tipp. Danke.

    Reply
  6. Martin Klein

    Ich kann das Programm diesmal nicht Kompilieren.

    Arduino: 1.6.13 (Windows Store 1.6.13.0) (Windows 10), Board: "Arduino Nano, ATmega328"

    C:\Users\marti_000\Documents\Arduino\A16_P15_Webserver\A16_P15_Webserver.ino:9:62: fatal error: Websites.h: No such file or directory

    #include "Websites.h" //websites in a special file as progmem

    Vielen Dank für eure Hilfe !

    Reply
    1. Sam B

      Hallo Martin,
      Hast du die Datei Websites.h im Ordner A16_P15_Webserver?

      Reply
      1. Martin Klein

        Danke für den Tip ! Das hatte ich übersehen.
        Alles funktioniert !

        Reply
      2. Ralf

        Danke auch von mir, jetzt habe ich es hinbekommen.

        Reply
      3. Detlef Redante

        ich finde diese Datei nicht

        Reply
        1. Martin Klein

          Du mußt dir hier alle Programme für alle Tage runterladen.
          http://iot.fkainka.de/wp-content/uploads/2016/10/Adventskalender16.zip

          Da sind dann für jeden Tag auch alle Addons dabei, also html Dateien usw. und auch diese Websites.h Datei.

          Viele Grüße
          Martin Klein

          Reply
          1. Beni Mautner

            Danke, hat bei mir auch nicht funktioniert!

            Jetzt geht’s aber.

            LG Beni

  7. Ralf

    Die Übung heute war eine kleine Herausforderung.
    Wenn der NanoESP im gesicherten Gastnetzwerk angemeldet ist bekommt er zwar eine STAIP, kann aber trotzdem nicht von einem anderen Gerät im Gastnetzwerk aufgerufen werden, da der Router bei Gästen keine Kommunikation untereinander zulässt. Da muss man bei lauter Probieren erst mal drauf kommen.

    Reply
  8. Bernd

    Die STAIP adresse funktioniert einwandfrei, die APIP adresse: 192.168.4.1 allerdings nicht (no answer).
    Die beiden blauen LEDs (äussere) auf dem Nano leuchten.
    Nun weiss ich wieder mal nicht, was hier falsch ist.
    "TCP Server Activ
    AT+CIFSR

    +CIFSR:APIP,"192.168.4.1″
    +CIFSR:APMAC,"1a:fe:34:cf:a9:72″
    +CIFSR:STAIP,"192.168…."
    +CIFSR:STAMAC,"18:fe:34….."

    OK"
    so eigentlich sollte es funtionieren.

    Reply
    1. Hansi

      Hast Du Dich mit dem WLAN des NanoESP verbunden? Nur damit funktioniert die 192.168.4.1.

      Reply
      1. bernd

        danke, bin ich einfach nicht drauf gekommen – liegt daran dass der PC mit dem ich hiermit arbeite kein Wlan hat sondern mit kabel am router hängt.
        mit dem telephon klappts jetzt.

        Reply
  9. Frank444

    Mein Server ist online, aber mein Rechner/Browser meint beim Aufrufen der Webseite und der Fehleranalyse, das die Adresse zwar online ist aber nicht auf Verbindungsversuche antwortet. Ich bin ratlos.

    Reply
  10. Heiko

    Hallo, hat wunderbar funktioniert, was mich interesieren würde ist, kann man den inhalt der web seiten ändern ?
    und wenn ja wie ?

    mfg heiko

    Reply
    1. Hansi

      Der Inhalt ist statisch. Bedeutet: kann nicht online geändert werden. Wenn die Seiten anders sein sollen, musst Du die Quellen ändern. Die Dateien: error404.html, index.html, lib.html und pinout.html sind praktisch der Inhalt in HTML code. Die Files musst Du so anpassen wie Du das haben möchtest (wie erfährst Du auf z.B. selfhtml.de oder w3schools.com) und mit einem Browser Deiner Wahl testen. Sobald Du fertig bist, die einzelnen Datei-Inhalte nach C-String (char) konvertieren (ein Tool dafür ist in der Datei Websites.h angeführt.) und an die entsprechende Stelle in Websites.h kopieren (die einzelnen HTML Dateien werden dann nicht mehr benötigt). Neu kompilieren, hochladen – fertig. (siehe auch Adventskalender 2015. Da steht das noch recht ausführlich beschrieben)

      Reply
  11. blaubaer

    Hallo,
    ich habe nicht am 01.12. mit den Versuchen angefangen, sondern eine gute Woche später und hatte die letzten Tage dadurch etwas mehr zu tun; aber nun bin ich synchronisiert… ;-)
    Ich muss sagen, ich bin bis jetzt begeistert von der Versuchsreihe – es ist beieindruckend, wie vielseitig das Board ist und wie einfach es ist, mit der Software Blynk schöne Applikationen zu zaubern.
    Zugegeben, die Komponenten sind etwas billig ausgefallen, das Steckboard ist viel zu schwergängig und ein Poti hat meine rohen Kräfte nicht ausgehalten, hat die Beinchen gespreitzt und musste ersetzt werden. Trotzdem, ein toller Kalender und eine Superidee – Kompliment an Herrn Kainka – na ja, liegt ja in der Familie… :-)
    Grüße, Michael

    Reply
  12. Jürgen Geerdts

    Die IP-Adresse vom Webserver im WLAN Netz ist falsch: STAIP 192.168.179.22
    Die IP Adresse vom PC im WLAN Netz ist: 192.168.178.22
    Das WLAN Gateway hat: 192.168.178.1
    Damit ist der Webserver in einem anderen Netz und nicht auffindbar…
    Vielleicht ein Off-by-One Fehler in der Bibliothek?

    Reply
    1. sumero

      Der NanoESP holt sich normalerweise seine IP per DHCP von deinem Router. Dort würde ich als erstes nach dem Fehler suchen. Die IP-Adresse von deinem Webserver STAIP 192.168.179.22 ist nicth per se im falschen Netz. Ob diese Adresse noch im gleichen Netz ist, kommt auf die Netzmaske an. Wenn deine Subnetzmaske z.B. /16 also 255.255.0.0 ist, wären dein PC und dein Webserver immernoch im gleichen Netz.
      Es ist zwar unwahrscheinlich so eine Netzmaske bei einem 192.168.x.x Netz im Heimrouter zu finden, einen Codefehler finde ich jedoch noch unwahrscheinlicher und außerdem sollen Leute schon Pferde kotzen gesehn haben.

      Reply
      1. Jürgen Geerdts

        Stimmt! Das war schwer zu finden: Das Gastnetz hat tatsächlich einen anderen Adressbereich und ist bei einer Netzwerkmaske von 255.255.255.0 nicht zu sehen. Ich muss mich also im Heimnetz anmelden, dann ist das dort auch sichtbar. Danke für den Tipp …

        Reply
  13. Linus K.

    Bei mir gibt es eine Fehlermeldung:
    Arduino: 1.6.13 (Windows 7), Board: "Arduino Nano, ATmega328"

    C:\Users\…\Documents\Arduino\A16_P15_Webserver\A16_P15_Webserver.ino:6:21: fatal error: NanoESP.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Fehler beim Kompilieren für das Board Arduino Nano.

    Reply
    1. Tutmanichtun

      Hatte ich auch zuerst. Es reicht heute nicht, den Arduino-Code aus dem Fenster herauszukopieren. Oben sind noch weitere Reiter, die zu weiteren Dateien führen. Alle müssen im selben Ordner wie der Sketch (*.ino) liegen.

      Reply
      1. clausdieter

        Dusselig ist nur, dass meine Arduino IDE die html Dateien nicht öffnet, den gleichen Fehler habe ich auch. Ich downloade mir aber auch immer den .zip dekomprimiere den, und öffnen den dann mit Arduino. Sind bei euch auch nur folgende Dateien im Ordner:
        die Webserver.ino
        error404.html
        index.html
        lib.html
        pinout.html
        sketch.json
        Websites.h
        ?
        Oder fehlt mir da eine??

        Reply
        1. Flo

          Wo kannst du denn die .zip downloaden? Ich finde das leider nicht…

          Reply
          1. clausdieter

            Auf den Button neben Open Code
            Oben in diesem Arduino Fesnter mit dem Code

          2. SHA

            Nimm' mal nen anderen Browser. Bei mir war der Download-Button im Safari auch nicht sichtbar. Im Firefox war er aber da.

        2. sumero

          die .html dateien benötigst du nicht unbedingt. die eigentlichen webseiten werden als const char index[] PROGMEM = {
          "…\0"
          };
          in der Datei Websites.h hinterlegt.
          Die HTML-Dateien sind nur, falls du diese anpassen möchtest. Nach dem anpassen muss du den HTML-Text jedoch noch durch einen Convert schicken und dann den konvertierten Text in die Websites.h einfügen

          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.