ESP32 / Webserver lampje 1,2.py
Webserver lampje 1,2.py
Raw
import socket
#maakt IP communicatie mogelijk.

led_state = {0: "uit", 1: "aan"}
#een dictionary die 0 omzet in uit en 1 omzet in aan.

def web_page():
    return """<html>
        <head>
            <title>ESP32 webserver met led</title>
            <meta name="viewport" content="width=device-width, initial-scale=1">
        </head>
        <body>
            <h1>ESP32 webserver met led</h1>
            <a href="/?led={}"><button>{}</button></a>
        </body>
    </html>""".format(led_state[not led.value()], led_state[led.value()])
    #het html script, hier ga ik laten op in
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 8080)) 
server_socket.listen(5) 
#maakt een socket aan met het TCP/IP protocol(familie).
#verbindt de zocket met het IP adress van de ESP32 en poort.
#accepteerd inkomende verbindingen, met een maximale wachtrij van 5.

while True:
    connection, address = server_socket.accept()
    print("Got a connection from %s" % str(address))
    request = str(connection.recv(1024))
    print("connect = %s" % request)
    #verbindt, retouneert nieuwe socket en het adres van de client.
    #ontvangt en slaat inkomend HTTP verzoek op in request.
    led_on = request.find("/?led=aan")
    led_off = request.find("/?led=uit")
    if led_on ==6:
        print("LED ON") 
        led.value(1) 
    if led_off == 6:
        print("LED OFF") 
        led.value(0) 
    #zorgt Dat de value van de led op 0 of 1 wordt gezet, oftewel aan of uit.
    #print LED OFF of LED ON in de terminal wanneer hij uit of aan gaat.
    
    response = web_page()
    connection.send("HTTP/1.1 200 OK/n")
    connection.send("Content-Type: text/html/n")
    connection.send("Connection: close/n/n")
    connection.sendall(response)
    connection.close()
    #genereerd de webpagina op basis van de huidige status van de led.
    #verzenden de HTTP respons met de juiste headers en de gegenereerde HTML pagina naar de client.
    #sluit verbinding nadat response is verzonden.