#HTTP-Server
Explore tagged Tumblr posts
draegerit · 3 months ago
Text
MicroPython mit ESP32: Einrichten eines HTTP-Servers
Tumblr media
In diesem Beitrag zeige ich dir, wie du mit deinem ESP32 und MicroPython einen einfachen HTTP-Server einrichtest und eine kleine Webseite auslieferst. Im letzten Beitrag habe ich bereits gezeigt, wie man einen Access Point erstellt und sich mit dem Handy verbindet. Hier möchte ich nun den nächsten Schritt wagen und eine kleine Webseite ausliefern, die zunächst eine Begrüßung anzeigt und anschließend die Sensordaten eines DHT11-Sensors vom Rich Shield von Open Smart darstellt. Dadurch erhältst du eine interaktive Möglichkeit, die Daten deines ESP32 über das Web zu überwachen und anzuzeigen. https://youtu.be/klbPSt14XbA
Was ist ein HTTP-Server?
Ein HTTP-Server ist ein Programm, das auf einem Computer oder Mikrocontroller läuft und Anfragen von Webbrowsern entgegennimmt. Wenn du eine Webseite in deinem Browser öffnest, sendet der Browser eine Anfrage an den HTTP-Server, der die gewünschte Seite zurückschickt. Der Server sorgt also dafür, dass Webseiten und Daten an deinen Browser geliefert werden. Für deinen ESP32 bedeutet das, dass du mit einem HTTP-Server die Daten deines Mikrocontrollers über eine Webseite anzeigen kannst. So kannst du zum Beispiel Sensordaten in Echtzeit überwachen und auf einer Webseite anzeigen lassen.
Was du benötigst
Um dieses Projekt durchzuführen, benötigst du die folgenden Komponenten und Werkzeuge: - ESP32 D1 R32 Board* - MicroPython Firmware auf dem ESP32 - Entwicklungsumgebung (z.B. Thonny oder uPyCraft) - DHT11 Sensor (zbsp. vom Rich Shield von Open Smart) - Ein Gerät (z.B. Smartphone oder Laptop) zur Verbindung mit dem Access Point Im ersten Schritt richten wir einen Access Point (AP) ein, damit du eine direkte Verbindung zu deinem ESP32 herstellen kannst. Ein Access Point ermöglicht es, dass dein ESP32 ein eigenes WLAN-Netzwerk erstellt, mit dem du dich verbinden kannst. Dies ist besonders praktisch, wenn kein anderes WLAN in der Nähe verfügbar ist oder du eine isolierte Verbindung für dein Projekt benötigst. Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Programmieren eines kleinen HTTP-Server mit MicroPython auf dem ESP32
Im ersten Schritt richten wir einen Access Point (AP) auf dem ESP32 ein, damit du eine direkte Verbindung zu deinem Mikrocontroller herstellen kannst. Dazu verwenden wir den folgenden MicroPython-Code aus dem letzten Beitrag: import network # Access Point erstellen ap = network.WLAN(network.AP_IF) ap.active(True) ap.config(essid='ESP32', password='12345678', authmode=network.AUTH_WPA_PSK) while ap.active() == False: pass print('Access Point aktiv') print(ap.ifconfig()) try: while True: pass except KeyboardInterrupt: ap.active(False) Dieser Code aktiviert einen abgesicherten Access Point mit dem Namen / der SSID "ESP32" und dem Passwort "12345678". Sobald der AP aktiv ist, kannst du dich mit deinem Gerät verbinden. Im nächsten Schritt programmieren wir einen einfachen HTTP-Server, der eine kleine Webseite ausliefert, die "Hallo Welt!" anzeigt: import network import socket # Access Point erstellen ap = network.WLAN(network.AP_IF) # WLAN-Objekt für den Access Point erstellen ap.active(True) # Access Point aktivieren # SSID und Passwort für den Access Point festlegen ap.config(essid='ESP32', password='12345678', authmode=network.AUTH_WPA_PSK) while ap.active() == False: # Warten bis der Access Point aktiv ist pass # Access Point aktiv und Konfiguration anzeigen print('Access Point aktiv') print(ap.ifconfig()) # HTTP-Server einrichten addr = socket.getaddrinfo('0.0.0.0', 80) # Adresse und Port für den HTTP-Server festlegen (Port 80) s = socket.socket() # Socket erstellen s.bind(addr) # Socket an die Adresse binden s.listen(1) # Socket für eingehende Verbindungen vorbereiten # HTTP-Server gestartet und Adresse angezeigt print('Server läuft auf', addr) while True: cl, addr = s.accept() # Auf eine eingehende Verbindung warten print('Client verbunden von', addr) r = cl.recv(1024) # Daten von der Verbindung empfangen (hier nicht verwendet) # HTTP-Antwort erstellen response = """ HTTP/1.1 200 OK ESP32 Webserver
Hallo Welt!
""" cl.send(response) # HTTP-Antwort an den Client senden cl.close() # Verbindung schließen Dieser Code richtet zunächst einen gesicherten Access Point mit der SSID "ESP32" und dem Passwort "12345678" ein. Sobald der Access Point aktiv ist, startet er einen HTTP-Server auf Port 80. Der Server antwortet auf eingehende Anfragen mit einer einfachen HTML-Seite, die "Hallo Welt!" anzeigt. Wenn das kleine Programm gestartet wird, dann werden die Daten des AP in der Kommandozeile ausgegeben sowie dass der Server läuft. MPY: soft reboot Access Point aktiv ('192.168.4.1', '255.255.255.0', '192.168.4.1', '0.0.0.0') Server läuft auf ('0.0.0.0', 80) Wenn wir nun den Browser öffnen und die IP-Adresse des Access Point eingeben, erhalten wir als Antwort eine kleine Webseite mit dem Text "Hallo Welt!".
Tumblr media
Erstellen einer kleinen Webseite mit Sensordaten des DHT11 Sensors mit MicroPython auf dem ESP32
In den letzten Beiträgen habe ich dir das Rich Shield von Open Smart schon detailliert vorgestellt und auch gezeigt, wie man den DHT11 Sensor ausließt.
Tumblr media
Rich Shield von Open Smart Wenn du dieses kleine, nützliche Shield nicht hast, dann kannst du dir recht einfach die Schaltung auch selber nachbauen, du benötigst hierzu: - einen ESP32 D1 R32*, - einen DHT11 Sensor*, - drei Breadboardkabel*, - ein 170 Pin Breadboard*
Tumblr media
Schaltung - ESP32 D1 R32 mit DHT11 Sensor als Baustein auf einer Platine Nachfolgender Code erstellt einen Access Point und baut einen HTTP-Server auf. Wenn man auf die Adresse des Servers 192.168.4.1 zugreift werden die Sensordaten ermittelt und auf einer Seite ausgeliefert. import network import socket import dht from machine import RTC, Pin dht11 = dht.DHT11(Pin(19, Pin.IN)) # Liefert einen Zeitstempel def getTimestamp(): rtc = RTC() currentDateTime = rtc.datetime() year = currentDateTime month = currentDateTime day = currentDateTime unknown = currentDateTime hour = currentDateTime minutes = currentDateTime seconds = currentDateTime #prüfen ob die Werte kleiner 10 sind, #wenn ja wird eine führende Null angefügt if int(month) < 10: month = "0" + str(month) if int(day) < 10: day = "0" + str(day) if int(hour) < 10: hour = "0" + str(hour) if int(minutes) < 10: minutes = "0" + str(minutes) if int(seconds) < 10: seconds = "0" + str(seconds) textFormat = "{0}.{1}.{2} {3}:{4}:{5}" return textFormat.format(day, month, year, hour, minutes, seconds) # erstellt und öffnet einen Access Point def openAccessPoint(): # Access Point erstellen ap = network.WLAN(network.AP_IF) # WLAN-Objekt für den Access Point erstellen ap.active(True) # Access Point aktivieren # SSID und Passwort für den Access Point festlegen ap.config(essid='ESP32', password='12345678', authmode=network.AUTH_WPA_PSK) while ap.active() == False: # Warten bis der Access Point aktiv ist pass # Access Point aktiv und Konfiguration anzeigen print('Access Point aktiv') print(ap.ifconfig()) # HTTP-Server einrichten addr = socket.getaddrinfo('0.0.0.0', 80) # Adresse und Port für den HTTP-Server festlegen (Port 80) s = socket.socket() # Socket erstellen s.bind(addr) # Socket an die Adresse binden s.listen(1) # Socket für eingehende Verbindungen vorbereiten # HTTP-Server gestartet und Adresse angezeigt print('Server läuft auf', addr) openAccessPoint() while True: # eine Messung durchführen dht11.measure() txtTimestamp = getTimestamp() txtTemperatur = "Temperatur: " + str(dht11.temperature()) + "°C" txtLuftfeuchtigkeit = "rel. Luftfeuchtigkeit: "+ str(dht11.humidity()) + "%" cl, addr = s.accept() # Auf eine eingehende Verbindung warten print('Client verbunden von', addr) r = cl.recv(1024) # Daten von der Verbindung empfangen (hier nicht verwendet) # HTTP-Antwort erstellen response = """ HTTP/1.1 200 OK ESP32 Webserver Sensordaten vom DHT11 Sensor vom {timestamp} - {temperatur} - {luftfeuchtigkeit} """.format(timestamp=txtTimestamp, temperatur=txtTemperatur, luftfeuchtigkeit=txtLuftfeuchtigkeit) cl.send(response) # HTTP-Antwort an den Client senden cl.close() # Verbindung schließen Bei jedem Zugriff auf den Server wird die IP-Adresse des Clients auf der Kommandozeile ausgegeben. MPY: soft reboot Server läuft auf ('0.0.0.0', 80) Access Point aktiv ('192.168.4.1', '255.255.255.0', '192.168.4.1', '0.0.0.0') Client verbunden von ('192.168.4.2', 37230) Client verbunden von ('192.168.4.2', 37238) Client verbunden von ('192.168.4.2', 37244) Client verbunden von ('192.168.4.2', 37252) Auf der kleinen Webseite werden jetzt die Sensordaten inkl. einem Zeitstempel ausgegeben. Jedes Mal, wenn wir jetzt die Webseite aktualisieren, werden auch neue Sensordaten ausgelesen und ausgeliefert.
Tumblr media
Automatisches Aktualisieren nach x Sekunden Wir können mit einem Meta-Tag refresh auch die Webseite automatisch nach x-Sekunden aktualisieren lassen. Der nachfolgende Code läßt eine Seite alle 60 Sekunden aktualisieren: Um jetzt die Webseite alle 5 Sekunden zu aktualisieren, müssen wir die Antwort vom Server wiefolgt anpassen: # HTTP-Antwort erstellen response = """ HTTP/1.1 200 OK ESP32 Webserver Sensordaten vom DHT11 Sensor vom {timestamp} - {temperatur} - {luftfeuchtigkeit} """.format(timestamp=txtTimestamp, temperatur=txtTemperatur, luftfeuchtigkeit=txtLuftfeuchtigkeit)
Troubleshooting
Nachfolgend möchte ich dir ein paar Fehler und deren Lösungen aufzeigen welche in zusammenhang mit diesem Beitrag aufgetreten sind. Fehler: OSError: EADDRINUSE Die Fehlermeldung "OSError: EADDRINUSE" tritt in der Regel auf, wenn ein Programm versucht, einen Netzwerkport zu öffnen, der bereits von einem anderen Prozess verwendet wird. Traceback (most recent call last): File "", line 53, in OSError: EADDRINUSE Die Lösung ist hier recht einfach, es muss einmal die Verbindung des Mikrocontrollers vom Computer getrennt werden und ein paar Sekunden gewartet werden. Danach sollte es wieder funktionieren. Fehler: Connection lost -- GetOverlappedResult failed (PermissionError(13, 'Zugriff verweigert', None, 5)) Diese Fehlermeldung tritt häufig auf, wenn Programme unter Windows mit Dateien, Netzwerkressourcen oder anderen Systemressourcen interagieren und die erforderlichen Berechtigungen nicht korrekt konfiguriert oder gegeben sind. Connection lost -- GetOverlappedResult failed (PermissionError(13, 'Zugriff verweigert', None, 5)) Use Stop/Restart to reconnect. Process ended with exit code 1. Die Lösung ist hier das zum einen das Tool Thonny neugestartet wird, manchmal ist auch ein Rechnerneustart notwendig. Eine weitere Lösung kann in diesem Fall der austausch des USB-Datenkabel sein. Ich bekomme den Fehler ebenso wenn der Mikrocontroller mit einem normalen Micro-USB Datenkabel über eine Dockingstation mit dem PC verbunden ist. Wenn ich den Mikrocontroller nun direkt mit einem höherwertigen Kabel mit dem PC verbinde dann klappt die Verbindung.
Ausblick auf Teil2
In diesem Beitrag habe ich dir nun gezeigt wie einfach es ist einen kleinen HTTP-Server auf dem ESP32 mit MicroPython zu erstellen und Webseiten auszuliefern. Im nächsten Beitrag möchte ich dir zeigen wie du die auf dem Rich Shield von Open Smart verbauten LEDs über die Webseite steuern kannst.
Tumblr media
Rich Shield mit aktivierten LEDs Bleib also gespann was noch alles folgt... Read the full article
0 notes
topserver303-blog-sitee · 13 days ago
Text
DAFTAR ID GACOR
Tumblr media
SITUS SLOT ⚡️ TERBARU ⚡️ ANTI RUNGKAT
Tumblr media
2 notes · View notes
https-furina · 1 year ago
Note
*hides something in your pocket when you are not looking*
Tumblr media
YUME?! YAAHHA that’s so cute
(also i feel like i should pass on that my bf wants to join me the next time i come into your world LMAO)
11 notes · View notes
corvid-jay · 6 months ago
Text
why's it so hard to set up a custom minecraft server...
3 notes · View notes
daisysama · 11 months ago
Text
Tumblr media
I am so happy to share this Art Swap I was apart of, that is hosted in @artistreeio Discord server! Many artist coming together to show off our unique styles, and show support for each other! Mine is # 27
Please check out the other artist links here, and show your friends!
11 notes · View notes
diaamb · 2 years ago
Text
Tumblr media
44 notes · View notes
nando161mando · 1 year ago
Text
Victorian Government data published on dark web
youtube
6 notes · View notes
mushroomsans-151410 · 2 years ago
Text
JOIN MY DISCORD SEVER NOW!!!!ejdjjsnd
10 notes · View notes
khordyn · 1 year ago
Text
2 notes · View notes
behzadamin12 · 2 years ago
Text
خطای 429 چیست؟
خطای 429 چیست؟
این خطا به شما می‌گوید که سرور شما چقدر ظرفیت درخواست را می‌تواند در یک بازه زمانی هندل کند. اگر سرور شما نتواند حجم درخواست‌ها را هندل کند با این خطا مواجه می‌شود و باید درخواست‌ها بعد از مدتی دوباره ارسال شوند. برای رفع این مشکل توسط کاربر عادی اینترنت راه‌هایی وجود دارد، یکی از این راه‌ها را گفتیم و یکی دیگر تماس با مدیر وب سایت است.
https://jobteam.ir/ProductUser/861-429-error
2 notes · View notes
ojiro-s-hellish-site · 2 years ago
Text
TFW Ojiro is called Plain one too many times:
Tumblr media
3 notes · View notes
leefsnakesnake · 3 months ago
Text
There's an EU initiative going on right now that essentially boils down to wanting to force videogame publishers with paid games and/or games with paid elements such as DLC, expansions and microtransactions to leave said games in a playable state after they end support, or in simpler terms, make them stop killing games.
A "playable state" would be something like an offline mode for previously always online titles, or the ability for people to host their own servers where reasonably possible just to name some examples.
I don't think I need to tell anyone that having something you paid for being taken from you is bad, which is a thing that routinely happens with live service and other always online games with a notable recent example being The Crew which is now permanently unplayable.
Any EU citizen is eligible to sign the initiative, but only once and if you mess up that's it. You can find it here. (https://eci.ec.europa.eu/045/public/#/screen/home)
Even if you're not European or you signed it already, you can share this initiative with anyone who is, even if they don't care about videogames specifically because this needs a million signatures and there is different thresholds that need to be met for each EU country for their votes to even count and could also be a precedent for other similar practices like when Sony removed a bunch of Discovery TV content people paid for. EDIT: There are also some things people outside the EU can do, as well as additional things some people in specific EU countries like Germany and France can do that aim to solve this same issue as well. You can find that here. (https://www.stopkillinggames.com/)
(Note: There was a petition for UK people but the recent politics stuff there means it's on hold and has to be resubmitted and that may take some time.)
Additionally if you want to keep up with this you can check out Ross Scott (Accursed Farms on youtube or his website) who has been posting monthly about this and deserves a lot of credit for all this work.
(I hope that's all the stuff I missed)
EDIT 2: I changed the link to go directly to the form instead, this SHOULD work!
72K notes · View notes
letsdesignforyou · 6 days ago
Text
In this blog, we’ll explain HTTP/2 and guide you through the process of enabling it on your server using common control panels like Plesk and cPanel. We’ll break down the steps, providing detailed instructions and important notes to ensure a smooth transition. Let’s get started!
0 notes
https-furina · 1 year ago
Text
Tumblr media
i’m crying and i can’t tell which emotion it is 😭😭😭
4 notes · View notes
cotuff · 9 days ago
Text
https://pckeys.uk/windows-server-2019-datacenter-2-cores-device
Microsoft Windows Server 2019 Datacenter 2 Core
Buy Microsoft Windows Server 2019 Datacenter 2 Cores software product license key for UK, USA & Worldwide. Best price with free support and digital email delivery.
0 notes
serverbulgia189 · 10 days ago
Text
SERVER BULGIA 189🔰𝐋𝐈𝐍𝐊 𝐓𝐄𝐑𝐁𝐀𝐈𝐊 𝐃𝐀𝐍 𝐓𝐄𝐑𝐏𝐄𝐑𝐂𝐀𝐘𝐀 𝐒𝐄 𝐀𝐒𝐈𝐀 𝟐𝟎𝟐𝟒 ♗♖
🔰𝐃𝐀𝐅𝐓𝐀𝐑 𝐋𝐎𝐆-𝐈𝐍
🔰𝐈𝐃 𝐏𝐑𝐎 𝐑𝐄𝐒𝐌𝐈
Tumblr media
SERVER BULGIA 189🔰𝐋𝐈𝐍𝐊 𝐓𝐄𝐑𝐁𝐀𝐈𝐊 𝐃𝐀𝐍 𝐓𝐄𝐑𝐏𝐄𝐑𝐂𝐀𝐘𝐀 𝐒𝐄 𝐀𝐒𝐈𝐀 𝟐𝟎𝟐𝟒 ♗♖
Tumblr media
SERVER BULGIA 189🔰𝐋𝐈𝐍𝐊 𝐓𝐄𝐑𝐁𝐀𝐈𝐊 𝐃𝐀𝐍 𝐓𝐄𝐑𝐏𝐄𝐑𝐂𝐀𝐘𝐀 𝐒𝐄 𝐀𝐒𝐈𝐀 𝟐𝟎𝟐𝟒 ♗♖
Tumblr media Tumblr media
0 notes