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.
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!
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.
Ich empfehle Openhab z.B. auf einem Raspberry. Da kann MQTT über das Webinterface genutzt werden. https://klenzel.de/2668
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.