Forum: Mikrocontroller und Digitale Elektronik Webserver NICHT mit Arduino


von ESP (Gast)


Lesenswert?

Hallo,

ich suche ein Beispiel für einen Webserver mit einem ESP8266 Modul und 
zwar OHNE Verwendung von Arduino.
Ein schlichtes C Programm mit den wesentlichen Dingen, um einen 
Webserver auf zu bauen.

Gibt es so etwas?

von Michael U. (amiga)


Lesenswert?

Hallo,

findet man durchaus im Netz wenn man sucht.

Passende IDE mit dem SDK für den ESP8266 installieren.
Sich durch das SDK wühlen und die mötigen Funktionen zusammensuchen, um 
WiFi in Gang zu bekommen usw.
Einen HTTP-Servercode finden, anpassen und einbauen.

Es sind relativ wenige, die den ESP von Grund auf programmieren wollen.
Aufwand/Nutzen-Frage.
Die Mehrheit greift auf die funktionieren Arduino-Bibliotheken für den 
ESP zu, einige nutzen die NodeMCU-Firmware und LUA.

Ohne all das mußt Du ja eben mehr als den Webserver haben, das ist mit 
ein paar Zeilen C auf dem nackten ESP8266 nicht zu realisieren.

Gruß aus Berlin
Michael

von ESP (Gast)


Lesenswert?

Also ich kommuniziere ja bereits mit dem Modul, kann Befehle schicken, 
AP und TCP Server aufsetzen, benötige jetzt aber irgendwie mal ein 
Beispiel, welche Schritte zusätzlich nötig sind, um von hier aus nun 
einen Webserver aufsetzen zu können.

von Einer K. (Gast)


Lesenswert?

ESP schrieb:
> und TCP Server aufsetze

Ein Webserver ist auch nur ein TCP Server.
Welcher das HTTP bedienen kann.
Die Spezifikation findest du hier: 
https://www.w3.org/Protocols/rfc2616/rfc2616.html
Ja,  nicht frisch, aber für dich sicher ausreichend.

von Bernd K. (prof7bit)


Lesenswert?

ESP schrieb:
> Also ich kommuniziere ja bereits mit dem Modul, kann Befehle schicken,
> AP und TCP Server aufsetzen,

Dann musst Du jetzt nur noch die Spezifikation von HTTP grob überfliegen 
und implementieren (ist ein extrem simples textbasiertes Protokoll, es 
stammt noch aus der Zeit bevor der Bloat in Mode kam). Wenn Du alles bis 
hinauf zu TCP schon hast ist der Rest ein Kinderspiel.

: Bearbeitet durch User
von Blud (Gast)


Lesenswert?

ESP schrieb:
> Hallo,
>
> ich suche ein Beispiel für einen Webserver mit einem ESP8266 Modul und
> zwar OHNE Verwendung von Arduino.
> Ein schlichtes C Programm mit den wesentlichen Dingen, um einen
> Webserver auf zu bauen.
>
> Gibt es so etwas?

http://www.esp8266.com/ ist die Seite, wenn es um den ESP8266 geht.

von Detlef _. (detlef_a)


Lesenswert?

Dieses Ding

http://www.ulrichradig.de/home/index.php/software/avr-webserver-software

ist plein C, das macht bißchen http, email, ntp. Läuft gut.

Cheers
Detlef

von temp (Gast)


Lesenswert?

An dieser Stelle verstehe ich nicht warum man nicht von dem 
partizipieren sollte was die Arduino Leute hier geleistet haben. Die 
Arduino IDE ist dafür ja nicht nötig, aber die Libs sind so schlecht 
nicht. Das musst du erst mal selbst in einer ähnlichen Qualität 
hinkriegen. Wer wie du nach Beispielcode für einen einfachen 
httpd-Server als Kopiervorlage fragt, dürfte aber gefühlte Lichtjahre 
davon entfernt sein.
Gerade auf dem ESP8266 wo man ausser mit printf kaum debuggen kann und 
jeder Zyklus:

Code ändern->flashen->probieren->vor den Kopf klopfen und wieder von 
vorn

deutlich länger dauert als das was man z.B. bei der Cortex-Entwicklung 
gewöhnt ist, empfinde ich das ehr als Segen. Außerdem ist der gesamte 
ESP8266 durch seine internen Tasks schon gut ausgelastet und man muss 
diese Tatsachen ständig im Hinterkopf haben, sonst endet es im 
Watchdog-Reset. Alles hier im Forum gut nachzulesen.
Nodemcu ist für mich jedenfalls überhaupt keine Alternative. Hier noch 
eine andere Programmiersprache ins Spiel zu bringen kosten Zeit und 
Nerven und am Ende klemmt es an allen Ecken.

von Einer K. (Gast)


Lesenswert?

temp schrieb:
> Nodemcu ist für mich jedenfalls überhaupt keine Alternative.
Da muss man unterscheiden, zwischen dem "Board" und der Software.
Die Boards sind schon ok, verwende ich gerne.
Aber das Lua Zeugs, damit kannste mich jagen.

von Thomas Z. (thomas_z41)


Lesenswert?

Guck dir doch einfach esphttpd von SpriteTM an: 
https://github.com/Spritetm/esphttpd

von ESP (Gast)


Lesenswert?

ok,

habe gerade einen TCP Server auf Port 80 eröffnet und danach diese IP 
Adresse aus meinem Webbrowser aufgerufen.
Habe dann im Terminalprogramm sehen können, was mir der Browser 
zurückschickt und muss nun wohl erstmal sehen wie ich das übersetze.

Was ich aber auch schon ausprobiert habe, ist einen leeren HTTP Header 
zurück zu antworten und darauf habe ich dann auch gleich die Daten im 
Browser angezeigt bekommen, hab aber auch nur eine Überschrift 
hingeschickt.

Als ich die Daten zweimal geschickt habe, hat die Webseite die Daten 
einfach untereinander geschrieben, also nach dem ersten Aufruf stand

Überschrift 1

auf der Seite.


Nach dem zweiten senden stand dann

Überschrift 1
Überschrift 1

Ändere ich dann den Text, erhalte ich nach erneutem Senden

Überschrift 1
Überschrift 1
geänderter Text


Wird also alles untereinander weg geschrieben. Muss ich mich wohl etwas 
in die HTML Geschichte einlesen wie ich die Daten nun schön anzeigen 
kann.

von ESP (Gast)


Lesenswert?

Aber eine Frage habe ich noch speziell zu dem Board:

Ich musste ja nun in dem Browser meine IP Adresse eingeben.
Wie kann ich das ESP Modul konfigurieren, dass es auf irgendeinen 
spezifischen Namen reagiert und ich nicht die IP Adresse auswendig 
lernen muss?

von Einer K. (Gast)


Lesenswert?

Dein Client hat sicherlich eine hosts Datei.
Da kannst du den ESP eintragen.

Alternativ:
1. Einen DNS Eintrag im Router.
2. Multicast DNS

von Stefan F. (Gast)


Lesenswert?

Meine Fritzbox erkennt die Hostnamen der WLAN Clients und stellt sie via 
DNS zur Verfügung. Also wenn ich mein ESP Modul "Kanne" nenne, dann kann 
ich im Web Browser http://Kanne eingeben. Leider kann das nicht jeder 
WLAN Router.

Auf der Arbeit haben wir keinen DNS Server, da sind wir es alle gewohnt, 
manuell Einträge in die hosts Datei zu machen.

von Dirk B. (dirkb2)


Lesenswert?

ESP schrieb:
> Wie kann ich das ESP Modul konfigurieren, dass es auf irgendeinen
> spezifischen Namen reagiert und ich nicht die IP Adresse auswendig
> lernen muss?

Dafür gibt es den DNS und das ist (meist) die Aufgabe vom Router.

von Dirk B. (dirkb2)


Lesenswert?

ESP schrieb:
> Als ich die Daten zweimal geschickt habe, hat die Webseite die Daten
> einfach untereinander geschrieben, also nach dem ersten Aufruf stand

Hast du nach der ersten Übertragung die Verbindung beendet?

von Einer K. (Gast)


Lesenswert?

Dirk B. schrieb:
> Hast du nach der ersten Übertragung die Verbindung beendet?

In ca 2H kann man das HTTP noch nicht verstanden haben.
;-)

von Klaus (Gast)


Lesenswert?

temp schrieb:
> Code ändern->flashen->probieren->vor den Kopf klopfen und wieder von
> vorn
>
> deutlich länger dauert als das was man z.B. bei der Cortex-Entwicklung
> gewöhnt ist, empfinde ich das ehr als Segen. Außerdem ist der gesamte
> ESP8266 durch seine internen Tasks schon gut ausgelastet und man muss
> diese Tatsachen ständig im Hinterkopf haben, sonst endet es im
> Watchdog-Reset. Alles hier im Forum gut nachzulesen.
> Nodemcu ist für mich jedenfalls überhaupt keine Alternative. Hier noch
> eine andere Programmiersprache ins Spiel zu bringen kosten Zeit und
> Nerven und am Ende klemmt es an allen Ecken.

Das "noch eine andere Programmiersprache" verstehe ich nicht. Ich 
benutze nur lua auf dem Esp. Ich geb zu, ich hab da Vorkenntnisse. Die 
vorhandenen Module nehmen einem schon viel Arbeit ab. So gibt es einen 
Modul für die WS2812, da muß man sich nur noch um das Lichtmuster 
kümmern.

Es macht schon einen Unterschied, ein Filesystem zur Verfügung zu haben 
und nur ein paar k Lua-Code hochzuladen statt der ganzen Firmware. Da 
man immer eine Konsole hat, ist es ein bisschen wie das Programmieren 
der ersten Basic Computer nur mit Flash statt Kasettenrekorder. Zum 
Testen kann man auch vieles direkt eintippen und sieht sofort, wo der 
Hund begraben ist. So ein Webserver ist da kein großes Ding. Mit dem 
Filesystem im Hintergrund sieht das fast wie auf einem richtigen 
Computer aus, so mit index.html etc.

MfG Klaus

von Stefan F. (Gast)


Lesenswert?

Schau mal in mein Buch 
http://stefanfrings.de/mikrocontroller_buch/index.html

In Band 2 erkläre ich die Grundlagen vom HTTP Protokoll und im Band 2 
zeige ich ein konkretes Anwednungsbeispiel des ESP8266 über AT Befehle.

von Michael U. (amiga)


Lesenswert?

Hallo,

@ Klaus (Gast):

das wird wohl immer eine philosphische Frage bleiben. ;)

Für mich wäre LUA eine "andere" Programmiersprache.
Filesystem (SPIFFS) usw. habe ich auch ohne LUA auf dem ESP.
Damit sieht auch der Webserver nicht nur fast wie auf dem richtigen 
Computer aus, ich lade die Dateien aus dem Webinterface des ESP per 
Upload hoch und fertig. Natürlich bleiben bestimmte Grenzen des ESP 
dabei trotzdem.
Wenn ich aber z.B. ein bild.jpg mit 300kB ins Filesystem hochlade wird 
es mir eben im Browser mit http://xxx.xxx.xxx.xxx/bild.jpeg angezeigt 
usw.

Natürlich geht nur das, wo ich Routinen zum Behandeln der MIMI-Typen 
auch eingebaut habe. Der ESP-Webserver soll ja nur das zur Verfügung 
stellen, was man auch sinvoll dort benutzt.

Ob man den Kram jetzt in C, C++, LUA oder auf einem AVR per AT-Command 
zum ESP macht, ist nur eine Frage des Aufwandes.

>So gibt es einen
>Modul für die WS2812, da muß man sich nur noch um das Lichtmuster
>kümmern.

Die NeoPixelBus_by_Makuna Library nutzt I2S mit DMA auf dem ESP8266, da 
stören auch Webserver, JS-Colorpicker usw. die Darstellung auch bei 
vielen LEDs normalerweise nicht.

Wenn die NodeLUA-Module das auch sicherstellen kann man sicher auch LUA 
nehmen.

Gruß aus Berlin
Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.