WebServer, oder nicht?

Gast #4790096
Guten Tag, liebe Gemeinde!

Ich hatte vor Jahren versucht, mein umfangreiches Beleuchtungsprojekt 
per Funk zu steuern - das führte seinerzeit zu der Erkenntnis: wer Funk 
kennt, nimmt Kabel. Inzwischen habe ich ein NodeMCU (Dev. Kit. 1.0) mit 
einem ESP8266 geschenkt bekommen. Mit diesem und der Arduino Software 
ist es mir recht schnell gelungen, eine Verbindung zum Computer 
herzustellen. Der normale Workflow wäre jetzt, dass der ESP8266 einen 
WebServer bekommt, der die Beleuchtungssteuerung über eine WebSite zur 
Verfügung stellt. Damit könnte ich von jedem Internetfähigen Gerät meine 
Lampen steuern.
Leider fehlt mir jegliche Grundlage der WebServer-Programmierung, ich 
habe auch an den Beispielen erkannt, dass das nicht ganz trivial ist. 
Insbesondere die Frage: Wie bekomme ich die Nutzdaten "aus" dem 
Webserver raus um sie per UART an den MikroController zu senden, habe 
ich auf die Schnelle nicht eruieren können.

Jetzt meine Frage: Gibt es einen anderen Weg, Daten aus dem Computer 
über das WLAN Netz in den ESP zu bekommen? Helfen mir meine Visual Basic 
Kenntnisse dabei? Oder soll ich das Ding weiterverschenken? Ich wäre 
schon froh, wenn man mir Suchbegriffe nennen könnte, mit denen ich dann 
recherchieren würde!

Danke für Eure Antwort!
Gast #4790253
> Leider fehlt mir jegliche Grundlage der WebServer-Programmierung, ich
> habe auch an den Beispielen erkannt, dass das nicht ganz trivial ist.

Das kommt immer auf den Blickwinkel an. Jemand, der sich schon Jahre 
damit beschäftigt würde sagen: "Ist doch alles total simpel..."

> Insbesondere die Frage: Wie bekomme ich die Nutzdaten "aus" dem
> Webserver raus um sie per UART an den MikroController zu senden, habe
> ich auf die Schnelle nicht eruieren können.

Dazu solltest du dir erst mal auf dem PC einen kleinen WEB-Server 
einrichten und damit lernen. Vor allem wie man Daten vom Client an den 
Server sendet und dort ablegt, um sie dann woanders weiter zu 
verarbeiten.

> Gibt es einen anderen Weg, Daten aus dem Computer
> über das WLAN Netz in den ESP zu bekommen?

Ja, direkt mit TCP/IP. PC-seitig musst du dir das Socket-API ansehen. In 
Windows heißt das "Windows Sockets API (WSA)". In Linux heißt das 
"POSIX-Sockets-API". ESP-seitig musst du dir das LWIP-API ansehen.

> Helfen mir meine Visual Basic
> Kenntnisse dabei?

Unter Umständen ja.

Wenn du ohne Browser auf den ESP-WEB-Server zugreifen möchtest, dann 
google nach "visual basic http client"

Wenn du es vom PC aus auf TCP/IP-Ebene, also ohne WEB-Server und HTTP 
versuchen möchtest. Google mal nach "visual basic socket client".

> Oder soll ich das Ding weiterverschenken?

Nein, bloß nicht! Kämpfe weiter und lerne dabei.
Gast #4790516
In meinem Buch in band 2 beschreibe ich die Grundlagen des HTTP 
Protokolls. Und in Band 3 wird ein Webserver mit ESP8266 (AT-Firmware) 
und einem AVR Mikrocontroller ausgesetzt.

Ein dem Anwendungsbeispiel wird eine LED durch Buttons auf der Webseite 
ein/aus geschaltet und der aktuelle Status angezeigt.

http://www.stefanfrings.de/mikrocontroller_buch/index.html

Im Prinzip kannst du den Webserver auch direkt auf den ESP laden, das 
ist dann allerdings nicht mehr ganz so einfach, weil du Dir die 
Ressourcen des ESP mit dem Betriebsystem und dem Netzwerkprotokoll 
teilen musst.
Gast #4790902
Herzlichen Dank für Deinen Hinweis Stefan! Da hast Du Dir ja wirklich 
Mühe gegeben. Und es hat sich gelohnt! Die Bücher sind großartig!

Weiter so!
#4790928
ArduStemmi schrieb:
> Leider fehlt mir jegliche Grundlage der WebServer-Programmierung, ich
> habe auch an den Beispielen erkannt, dass das nicht ganz trivial ist.
> Insbesondere die Frage: Wie bekomme ich die Nutzdaten "aus" dem
> Webserver raus um sie per UART an den MikroController zu senden, habe
> ich auf die Schnelle nicht eruieren können.

Dieser Absatz verwirrt mich etwas: Wieso willst Du die Nutzdaten 
ausgerechnet per UART an den Mikrocontroller senden?

> Jetzt meine Frage: Gibt es einen anderen Weg, Daten aus dem Computer
> über das WLAN Netz in den ESP zu bekommen? Helfen mir meine Visual Basic
> Kenntnisse dabei? Oder soll ich das Ding weiterverschenken? Ich wäre
> schon froh, wenn man mir Suchbegriffe nennen könnte, mit denen ich dann
> recherchieren würde!

Ich gehe im Folgenden einfach mal davon aus, dass die Erwähnung von 
"UART" oben nur ein Irrtum bzw. eine kleine Verwechslung war, und es 
letztlich auf die gleiche Frage hinausläuft, die hier in diversen 
Variationen alle paar Tage gestellt wird.

Der Suchbegriff, den ich Dir vorschlagen würde, ist "MQTT" bzw. "MQTT 
ESP8266". MQTT ist derzeit quasi DAS Protokoll schlechthin für das 
sogenannte "Internet der Dinge", und Du wirst problemlos Hunderte von 
Codebeispielen finden, wie man den ESP8266 mit der Arduino IDE so 
programmiert, dass er über MQTT kommuniziert und darüber gesteuert 
werden kann.

MQTT hat nicht nur den Vorteil, dass es für derartige Anwendungszwecke 
ein viel geeigneteres Protokoll ist als HTTP/HTML; speziell für Dich 
kommt da noch der Vorteil dazu, dass Du bei diesem Ansatz auch erst 
einmal überhaupt keinerlei Kenntnisse in klassischer 
Webserver-Programmierung, HTML etc. brauchst.

Stattdessen installierst Du Dir auf Deinem PC (oder noch besser: einem 
eigenen kleinen Server, z.B. einem Raspberry Pi) einen sogenannten 
"MQTT-Broker", in aller Regel die Software "mosquitto". Dieser 
"MQTT-Broker" agiert dann sozusagen als zentrale Steuerzentrale.
Wenn Du nun einen ESP8266 hast, der eine Lampe, nennen wir sie "Lampe 
1", steuern soll, dann würdest Du in Deinem ESP8266-Sourcecode 
einstellen, über welche sogenannte "MQTT-Topic" er seine Befehle 
empfangen soll, z.B. über die Topic "lampe_1/schaltzustand".

Um diese Lampe einzuschalten, musst Du nun nur noch eine entsprechende 
Nachricht an besagte "Topic" senden. Das geht auf vielfältige Weise; die 
für die ersten Anfang wohl einfachste Möglichkeit ist ein einfacher 
Aufruf des Kommandozeilen-Tools "mosquitto_pub", das der 
"mosquitto"-Software beiliegt; mit einem Befehl a la:

mosquitto_pub -t "lampe_1/schaltzustand" -m "on"

würdest Du dann bspw. die Lampe einschalten.
Wenn das so weit gut funktioniert, kannst Du Dich an den nächsten 
Schritt machen, nämlich, dass Du die Lampe(n) zusätzlich bequem per 
Webbrowser von jedem internetfähigen Gerät steuern kannst. An der Stelle 
musst Du dann allerdings doch anfangen, Dich zumindest oberflächlich mit 
Webserver-Programmierung zu beschäftigen.
Gast #4791083
Openhab kommt mir bekant vor. War das nicht die Software, auf deren 
Basis man sich relativ schnell und einfach ein Web-Interface für 
fernsteuerbare Sachen im Haus bauen kann (Heizung, Licht, Rollos und 
so)?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.