Forum: Mikrocontroller und Digitale Elektronik WebServer, oder nicht?


von ArduStemmi (Gast)


Lesenswert?

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!

von Heinz (Gast)


Lesenswert?

Z.B. hiergibt es alles schon fertig:

http://www.letscontrolit.com/wiki/index.php/ESPEasy

von robs (Gast)


Lesenswert?

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

von ArduStemmi (Gast)


Lesenswert?

Herzlichen Dank! Ich verschenke nicht!

von Stefan F. (Gast)


Lesenswert?

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.

von ArduStemmi (Gast)


Lesenswert?

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!

von Joachim S. (oyo)


Lesenswert?

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.

von robo (Gast)


Lesenswert?

Ich empfehle Openhab z.B. auf einem Raspberry.
Da kann MQTT über das Webinterface genutzt werden.

https://klenzel.de/2668

von Stefan F. (Gast)


Lesenswert?

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

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.