Hallo,
ich kann ganz gut Delphi, SPIN und etwas assembler programmieren. Nur
HTML sagt mir noch fast gar nix.
Zur Zeit bastle ich mit und nodeMCU (ESP8266)/Lua.
Da gibt es hier und da Beispielcode für superklitzekleine
ultrapico-Webserver. Ich verwende hier sehr bewusst die Bezeichnung
ultrapico.
Der "Webserver" soll ja auf dem ESP8266 laufen und nicht auf einem PC.
folglich muss der auch kein PHP, SQL, Perl, Java und wie die PC-Sachen
sonst noch alle heißen sondern nur ein ganz kleines bisschen auf
Mausklicks reagieren und Strings mit vielleicht 4-20 Zeichen in Empfang
nehmen oder auf den Bildschirm schreiben.
Ein KISS-Webinterface um einige Status/Meßwerte anzuzeigen und Parameter
einzustellen. Mehr nicht. Daher der Name Ultra-pico.
Ich hoffe das war jetzt genug der Vorrede das mir niemand mit
Appache-Server oder dergleichen ankommt.
Wo gibt es im Web ein Tutorial, dass die ganz elementaren Grundlagen
erklärt?
In einem Beispielcode den ich bisjetzt zum lernen verwende kommt da zum
Beispiel vor
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+)
(.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+)
HTTP");
print("string.find(request..)")
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
buf = buf.."(h1) ESP8266 Web Server(/h1)";
buf = buf.."(p)GPIO0 (a h
ref=\"?pin=ON1\")(button)ON(/button)(/a) (a h
ref=\"?pin=OFF1\")(button)OFF(/button)(/a)(/p)";
buf = buf.."(p)GPIO2 (a h
ref=\"?pin=ON2\")(button)ON(/button)(/a) (a h
ref=\"?pin=OFF2\")(button)OFF(/button)(/a)(/p)";
Dazu würde ich gerne ein Tutorial lesen um im Detail zu verstehen was da
abgeht.
Was ich bis jetz vermute ist folgendes
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
starte einen "Server" der auf Port 80 (http) "hört"
Wenn ein Client einen "request" sendet dann empfange den request-string
Aber was genau machen die Code-Zeilen
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+)
HTTP");
print("string.find(request..)")
end
???
Den empfangen String nach bestimmten Zeichenketten durchsuchen??
Da habe ich noch eine Menge Fragezeichen wie das abläuft.
Meine Fragen betreffen den Datenaustausch zwischen aufrufendem Browser
und Server. Da weiß ich noch nicht mal mit was für Stichworten ich
danach googeln sollte.
Wäre ganz große Klasse wenn mir da jemand Tips geben könnte.
viele Grüße
Stefan
Hi Stefan,
die Antwort auf Deine Frage würde ich zweiteilen:
1.) Um zu verstehen, wie ein Webserver mit einem Browser
kommuniziert, solltest Du Dir das HTTP-Protokoll genauer
anschauen. Dazu gibt es 1 Mio. Tutorials im Netz.
Anschließend kann es nicht schaden, wenn Du Dir das HTTP-
Protokoll einmal "live" auf Deinem PC mit einem Netzwerk-
Sniffer (z.B. wireshark) anschaust, während Du durch die
Gegend surfst.
2.) Dein o.g. Beispiel ist in der Skriptsprache "LUA" geschrieben.
Nachdem Du die Grundlagen von HTTP verstanden hast,
würde ich mir an Deiner Stelle ein LUA-Tutorial vornehmen.
Wenn Du schon etwas programmieren kannst, so ist LUA
recht einfach zu erlernen. Auch dazu gibt es 10.000
Tutorials im Netz.
Good luck
Andreas
Hi Andreas,
vielen Dank fürs antworten.
Andreas S. schrieb:> Hi Stefan,>> die Antwort auf Deine Frage würde ich zweiteilen:>> 1.) Um zu verstehen, wie ein Webserver mit einem Browser> kommuniziert, solltest Du Dir das HTTP-Protokoll genauer> anschauen. Dazu gibt es 1 Mio. Tutorials im Netz.>> Anschließend kann es nicht schaden, wenn Du Dir das HTTP-> Protokoll einmal "live" auf Deinem PC mit einem Netzwerk-> Sniffer (z.B. wireshark) anschaust, während Du durch die> Gegend surfst.
Ich habe eine Menge Erfahrung damit Tutorials im Netz zu lesen. 98%
dieser Tutorials sind von bescheidener Qualität.
Beispiel zum Flashen einer Firmware:
Man versetzt das nodeMCU-Board in den flashmode und startet den
Flashvorgang.
Ja schön. WIE versetzt man das Board in den Flashmode???
Da fehlt dann ganz oft die Sorgfalt noch die Details hinzuzuschreiben.
Reset-Taster gedrückt halten. Dann Flashtaster drücken, zuerst
Resettaster loslassen dann Flashtaster loslassen. Status-LED blinkt kurz
auf.
Das gäbe bei mir Schulnote 2
Schulnote 1 für das Tutorial gäbe es nur dann wenn jetzt auch noch
erklärt würde Welcher Pin am board ist der Reset-Pin, welcher ist der
"flash"-pin auf welches Spannungsniveau low/high wird der beim Drücken
gezogen und bei welchem Spannungswechsel wird der Flashmode aktiviert.
Dann könnte man die Informationen sogar für abweichende Boards benutzen.
Dieser Thread ist mein Versuch den Suchprozess nach den 2% Tutorial die
von guter Qualität sind abzukürzen, dadurch das jemand der ein
hochwertiges Tutorial kennt mir einen entsprechenden Link postet.
>> 2.) Dein o.g. Beispiel ist in der Skriptsprache "LUA" geschrieben.> Nachdem Du die Grundlagen von HTTP verstanden hast,> würde ich mir an Deiner Stelle ein LUA-Tutorial vornehmen.> Wenn Du schon etwas programmieren kannst, so ist LUA> recht einfach zu erlernen. Auch dazu gibt es 10.000> Tutorials im Netz.>
Das Problem mit den Lua-Tutorials ist, das sie sich auf Lua
konzentrieren. Wenn dann müsste es ein Tutorial sein das speziell die
nodeMCU-Firmware-module "net", und evtl. "http" anhand von Beispielen
erklärt und nicht nur eine dürre Referenz. Die Referenz habe ich
natürlich gelesen aber da bleiben immer noch eine Menge Fragen offen.
Die könnte ich jetzt natürlich durch eine Menge Versuch und Irrtum
klären aber das macht mir keinen Spaß mehr. Die Phase das mir nahezu
blindes herumtinkern Spaß gemacht hat ist vorbei.
Und ich will auch das Verhalten der Befehle nicht durch Austesten aller
erdenklichen Varianten mit naturwissenschaftlicher Gründlichkeit
ergründen.
> Good luck>
Das Glück die 2% gute Tutorials zu finden war mir bisher nicht
beschieden. Daher hier die Frage.
Vielleicht ist jetzt klarer geworden was mein Ziel ist und wie ich
vorgehen möchte. Also wenn jemand weder Lust hat es selbst zu erklären
noch links zu wirklich guten Tutorials kennt vielleicht auch mal nicht
antworten.
Trotzdem vielen Dank an Andreas. Deine Antwort hat mir geholfen genauer
beschreiben zu können was mein Ziel ist und wie ich vorgehen möchte.
viele Grüße
Stefan
Stefan L. schrieb:> Das Problem mit den Lua-Tutorials ist, das sie sich auf Lua> konzentrieren.
Liegt ein wenig in der Natur der Sache ;-)
> Wenn dann müsste es ein Tutorial sein das speziell die> nodeMCU-Firmware-module "net", und evtl. "http" anhand von Beispielen> erklärt und nicht nur eine dürre Referenz.
Die hier kennst Du vermutlich(?) :
http://nodemcu.readthedocs.io/en/master/http://www.luafaq.org/http://lua-users.org/wiki/LearningLua
Leider liegt mein kleiner ESP-LUA-Ausflug schon 2 Jahre zurück und ich
habe inzwischen alles wieder vergessen.
Ich kann Dir nur meine Links von damals hier auflisten - ob Sie Dir
zusagen, ist natürlich Geschmackssache:
http://benlo.com/esp8266/esp8266QuickStart.htmlhttps://www.allaboutcircuits.com/projects/guts-of-the-iot-part-1-building-nodemcu-from-source-for-the-esp8266/https://www.allaboutcircuits.com/projects/how-to-make-an-interactive-tcp-server-nodemcu-on-the-esp8266/https://github.com/marcoskirsch/nodemcu-httpserver
Und gaaanz wichtig: schau Dir unbedingt das Repository der
nodemcu-firmware an - dort findest Du genau das, was Du suchst - nämlich
schöne Beispiele mit LUA für ESP:
https://github.com/nodemcu/nodemcu-firmware
Auch Kolban's book on ESP8266 habe ich teilweise in guter Erinnerung
(ich hatte allerdings nur die ersten Seiten mit den Anschlußbelegungen
gelesen):
https://leanpub.com/ESP8266_ESP32
Ach ja - und das ESP8266-Forum solltest Du ebenfalls nicht missen.
Ist recht gut besucht. Dort gibt es auch ein nodemcu - Unterforum:
http://www.esp8266.com/
An mehr kann ich mich leider nicht erinnern.
Nur noch daran, dass man in der Tat ein bißchen wurschteln mußte und
dass mein SMTP-Beispiel aus dem o.g. Repository leider ziemlich buggy
war.
Insgesamt schien mir die ESP-Geschichte sowieso weitaus weniger
ausgereift als die meisten Dinge im Umfeld ATmega oder gar ARM.
Ich habe z.B. viele Stunden versenkt um festzustellen, dass das
WLAN-Modul im ESP die Ergebnisse des AD-Moduls im ESP beeinflußt und man
daher durch irgendwelche Klimmzüge verhindern muß, dass dieses
WLAN-Modul in Schlafmodi geht, weil diese Sleepmodes die
AD-Genauigkeiten schrotten.
> Die Referenz habe ich natürlich gelesen
Oh weh - da bist Du vermutlich schon schlauer als ich.
> aber da bleiben immer noch eine Menge Fragen offen.> Die könnte ich jetzt natürlich durch eine Menge Versuch und Irrtum> klären aber das macht mir keinen Spaß mehr. Die Phase das mir nahezu> blindes herumtinkern Spaß gemacht hat ist vorbei.> Und ich will auch das Verhalten der Befehle nicht durch Austesten aller> erdenklichen Varianten mit naturwissenschaftlicher Gründlichkeit> ergründen.
Kann ich verstehen - in diesem Fall würde ich persönlich Dir vom ESP8266
abraten, denn Dich erwartet genau das, was Du nicht willst.
>>> Good luck>>>> Das Glück die 2% gute Tutorials zu finden war mir bisher nicht> beschieden. Daher hier die Frage.
Entscheide selbst, ob einer meiner Links Deinen 2%-Ansprüchen genügt.
> Vielleicht ist jetzt klarer geworden was mein Ziel ist und wie ich> vorgehen möchte. Also wenn jemand weder Lust hat es selbst zu erklären> noch links zu wirklich guten Tutorials kennt vielleicht auch mal nicht> antworten.
Ich hab's trotzdem gewagt :-)
> Trotzdem vielen Dank an Andreas. Deine Antwort hat mir geholfen genauer> beschreiben zu können was mein Ziel ist und wie ich vorgehen möchte.
Hab's verstanden, aber so richtig gute Doku, wie ich sie aus dem Umfeld
ATmega, ARM, 8086, Z80 oder UNIX kenne, konnte ich im ESP8266-Umfeld bei
meinen LUA-Versuchen ebenfalls nicht auftun.
>> viele Grüße>> Stefan
Dito
Igel1
HTML-Crash-Kurs für microcontroller HTML4µC einfache simple WEB-GUIs
Hallo Leute,
also jetzt habe ich einen geeigneten HTML-Crashkurs gefunden.
https://www.webmaster-crashkurs.de
Webmaster hört sich ja etwas hochtrabend an aber der Kurs ist gut.
Gute Reihenfolge der Grundlagen. Nicht zu ausführlich. Erscheinungsbild
der Webseiten und des HTML-codes direkt nebeneinander.
gefällt mir gut. Hätte ich unter dem Namen aber nicht vermutet.