Webserver - Access point



  • Hi All,
    Where can I find a good functional example of a web server that acts as an access point?
    If possible I would like to store the web pages in the file system.
    It should be easy to add routes.
    It will be awesome if provision is made for dynamic data
    Any guidance will be appreciated.



  • @nftylitak Thnx for the feedback. I did see this. I think it is approx 150K in size, a bit big but comes with a lot of functionality.
    Not sure how to get started with it. THNX!!



  • @Gijs Thnx for the feedback. I will definitely look into it. It looks simple enough to do an interface for setting network credentials etc. Much appreciated.



  • We have been using MicroWebSrv2 that allows you to serve any files needed. Also supports a custom file type: pyhtml that you can embed python code, it will be first processed by the web engine, then produce the actual html file finally it will serve it.


  • Global Moderator

    Hi,
    I made this example a while ago. Some adapting is required but I believe you should be able to make it work!
    Best,

    import usocket
    import _thread
    import time
    from network import WLAN
    import pycom
    
    availablecolor = 0x001100
    connectioncolor = 0x110000
    
    # Thread for handling a client
    def client_thread(clientsocket,n):
        # Receive maxium of 12 bytes from the client
        r = clientsocket.recv(4096)
    
        # If recv() returns with 0 the other end closed the connection
        if len(r) == 0:
            clientsocket.close()
            return
        else:
            # Do something wth the received data...
            print("Received: {}".format(str(r))) #uncomment this line to view the HTTP request
    
        http = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection:close \r\n\r\n" #HTTP response
        
        if "GET / " in str(r):
            #this is a get response for the page   
            # Sends back some data
            clientsocket.send(http + "<html><body><h1> You are connection "+ str(n) + "</h1><br> Your browser will send multiple requests <br> <a href='/hello'> hello!</a><br><a href='/color'>change led color!</a></body></html>")
        elif "GET /hello "in str(r):
            
            clientsocket.send(http + "<html><body><h1> Hello to you too! </h1><br> <a href='/'> go back </a></body></html>")
        elif "GET /color" in str(r):
            pycom.rgbled(0xFFFFFF)
            clientsocket.send(http + "<html><body><h1> You are connection "+ str(n) + "</h1><br> Your browser will send multiple requests <br> <a href='/hello'> hello!</a><br><a href='/color'>change led color!</a></body></html>")
    
        # Close the socket and terminate the thread
    
        clientsocket.close()
        pycom.rgbled(connectioncolor)
        time.sleep_ms(500)
        pycom.rgbled(availablecolor)  
    
    time.sleep(1)
    wifi = WLAN()
    wifi.init(mode=WLAN.AP, ssid="hello", auth=None, channel=1)
    print("WiFi is up!")
    time.sleep(1)
    pycom.heartbeat(False)
    pycom.rgbled(availablecolor)
    
    # Set up server socket
    serversocket = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
    serversocket.setsockopt(usocket.SOL_SOCKET, usocket.SO_REUSEADDR, 1)
    serversocket.bind(("192.168.4.1", 80))
    
    # Accept maximum of 5 connections at the same time
    serversocket.listen(5)
    
    # Unique data to send back
    c = 1
    while True:
        # Accept the connection of the clients
        (clientsocket, address) = serversocket.accept()
        # Start a new thread to handle the client
        _thread.start_new_thread(client_thread, (clientsocket, c))
        c = c+1
    serversocket.close()
    

Log in to reply
 

Pycom on Twitter