Codi detallat 👇
1. importació de llibreries i mòduls
import socket
import miwifi
# per interactuar amb els pins de l'ESP32 cal:
from machine import Pin # importar la classe Pin
led = Pin (23, Pin.OUT) # configurar el pin de connexió del LED
2. configuració del servidor
servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
servidor.bind(('', 80))
servidor.listen(5)
3. definició de la resposta en format pàgina web
caldrà canviar el codi de la pàgina web de resposta:
def pag_web( ):
html = """ """
return html
4. execució de la connexió a WiFi
miwifi.connecta_wifi( )
5. escolta les sol·licituds (request)
while True:
conn, addr = servidor.accept( )
addr_s = str(addr) #
print ('Nova connexió des de', addr_s)
6. afegeix la interacció amb el LED
# cal afegir la interacció amb el led en funció del botó premut a la pàgina web:
# Al mètode GET, la informació enviada s'inclou a continuació de la URL després dels símbols /?
led_on = request.find ('/?led=on')
led_off = request.find ('/?led=off')
if led_on == 6:
print ('LED ON')
led.value (1)
if led_off == 6:
print ('LED OFF')
led.value (0)
7. envia resposta (response)
response = pag_web()
conn.send ('HTTP/1.1 200 OK\n')
conn.send ('Content-Type: text/html\n')
conn.send ('Connection: close\n\n')
conn.sendall (response)
conn.close( )
Codi detallat 👇
def pag_web( ):
# utilitzarem una variable estat_led per definir l'estat del led
if led.value( ) == 1:
estat_led = "ON"
else:
estat_led = "OFF"
html = """<html>
<head><title>ESP32 Servidor Web</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>html {text-align: center; font-family: Helvetica; margin: 10px auto;}
p {font-size: 20px;} </style></head>
<body><h1>Mi Servidor</h1>
<p><strong>Hola, """ + addr[0]+ """</strong></p>
<!-- nou codi a afegir: -->
<p>estat LED: """ + estat_led + """</p> <!-- la pàgina retornarà el valor de la variable estat_led -->
<p><a href="/?led=on">ON</a></p> <!-- a href indica enllaç a una URL -->
<p><a href="/?led=off">OFF</a></p>
</body></html>"""
return html
El resultat, en accedir a la IP de l'ESP32 des del navegador:
En clicar els enllaços s'hauria d'encendre o apagar el LED, i actualitzar l'estat LED.