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