Tag 15: Ein Webserver

Nachdem in den letzten Tagen vor allem die Blynk-Plattform zentraler Punkt unserer Projekte war, kommt nun ein ganz neues Thema, und zwar der NanoESP als Webserver. Bei dem Versuch des ersten Tages haben Sie bereits einen ersten Eindruck bekommen. In den folgenden Tagen werden Sie sehen, was noch alles möglich ist.

Hinter dem heutigen Türchen befindet sich ein spezielles doppeladriges Kabel, mit dem sich z.B. auch LEDs oder Sensoren außerhalb des Boards einsetzen lassen. Für den heutigen Versuch ist allerdings gar kein Hardwareaufbau nötig. Alles was Sie benötigen ist das Programm und einen Browser.

Laden Sie das Programm herunter und programmieren Sie es auf das Board. Sie wundern sich vielleicht warum Sie heute keine WLAN-Daten eingeben müssen. Der Grund ist, dass das Board, genauer gesagt der WLAN-Chip, Ihre WLAN-Daten des vorherigen Versuchs noch gespeichert hat. Eine neue Funktion der Library wartet nun nach einem Neustart, bis eine Verbindung zum bekannten WLAN aufgebaut wurde. Wenn Sie ein neues WLAN benutzen, müssen Sie die Kommentarzeichen vor der Zeile

nanoesp.configWifi(DUAL, SSID, PASSWORD);

entfernen, damit die neuen Daten eingestellt werden können. Dies gilt auch für alle folgenden Tage. Eine weitere Neuigkeit gibt es heute. Das Board wird nämlich im Dualen Modus verwendet. Das heißt, dass sich das Board sowohl mit Ihrem Heim WLAN Netzwerk verbindet, als auch einen eigenen AccesPoint generiert. Sie können also über zwei Wege auf das Board zugreifen.

Nach dem Upload erscheinen im Seriellen Monitor diesmal auch gleich zwei IPs. Die IP die hinter +CIFST:APIP steht, ist die IP des Boards im AccesPoint WLAN. Die hinter +CIFST:STAIP die, die das Board vom Router zugewiesen bekommen hat. Da Ihr Rechner vermutlich gerade noch mit dem Heimnetzwerk verbunden ist, sollten Sie die zweite IP in Ihren Browser eingeben. Es erscheint eine Hauptseite, von der aus Sie über Links auf anderen Seiten des Boards gelangen, die alle auch im Board gespeichert sind. Im Seriellen Monitor können Sie das Aufrufen einer Seite verfolgen.

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

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

Die Webseite im Browser

Die Webseite im Browser

Wenn Sie jetzt Ihren PC mit dem NanoESP-eigenen WLAN verbinden, müssen Sie die AccesPoint IP im Browser aufrufen. Die Seiten sind dieselben, mit der Ausnahme, dass man das Bild auf der Pinlayout-Seite nicht laden kann. Das liegt daran, dass der PC über dieses Netzwerk keine Verbindung zum Internet hat, und somit das Bild als externe Ressource nicht geladen werden kann. Der Vorteil an diesem Netzwerkmodus ist aber, dass Sie keinen Router als Zwischenstation benötigen, sondern direkt auf das Board zugreifen. Beide Methoden haben also ihre Vor- und Nachteile.

Die IP-Adressen und Browser-Requests im Seriellen Monitor

Die IP-Adressen und Browser-Requests im Seriellen Monitor

 

35 Kommentare

  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.

  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!

    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!

  3. TheMilestone

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

    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

      1. Marco

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

  4. Detlef Redante

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

    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);

      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.

  5. Detlef Redante

    das war DER Tipp. Danke.

  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 !

    1. Sam B

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

      1. Martin Klein

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

      2. Ralf

        Danke auch von mir, jetzt habe ich es hinbekommen.

      3. Detlef Redante

        ich finde diese Datei nicht

        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

          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.

  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.

    1. Hansi

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

      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.

  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.

  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

    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)

  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

  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?

    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.

      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 …

  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.

    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.

      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??

        1. Flo

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

          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

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.