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