|
1 | 1 | import board |
2 | 2 | import busio |
| 3 | +import time |
3 | 4 | from digitalio import DigitalInOut |
4 | 5 | from secrets import secrets |
5 | 6 |
|
|
13 | 14 | esp32_cs = DigitalInOut(board.D10) |
14 | 15 | esp32_ready = DigitalInOut(board.D9) |
15 | 16 | esp32_reset = DigitalInOut(board.D7) |
| 17 | +esp32_gpio0 = DigitalInOut(board.D12) |
16 | 18 |
|
17 | 19 |
|
18 | 20 | spi = busio.SPI(board.SCK, board.MOSI, board.MISO) |
19 | | -esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset, debug=True) |
| 21 | +esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset, gpio0_pin=esp32_gpio0, debug=False) |
20 | 22 |
|
| 23 | +## Create Access Point from SSID and optional password in secrets |
21 | 24 | wifi = wifimanager.ESPSPI_WiFiManager(esp, secrets, debug=True) |
22 | | - |
23 | 25 | wifi.create_ap() |
24 | 26 | time.sleep(10) |
25 | 27 |
|
26 | | -sock = socket.socket() # gets and creates a socket |
27 | | -sock_num = sock.get_sock_num() # returns socket number |
| 28 | +socket.set_interface(esp) |
| 29 | +sock = socket.socket() # Request a socket for the server |
| 30 | +curr_sock = sock |
| 31 | +sockNum = sock.get_sock_num() |
| 32 | +print("server status: ", esp.get_server_state(sockNum)) |
| 33 | + |
| 34 | +# Start the server on port 80 with the socket number we just requested for it. |
| 35 | +esp.start_server(80, sockNum) |
28 | 36 |
|
29 | | -esp.start_server(sock_num, 80) |
30 | | -print("socket num: ", sock_num) |
31 | | -print("socket status?: ", esp.socket_status(sock_num)) |
| 37 | +print("socket num: ", sockNum) |
| 38 | +print("server status: ", esp.get_server_state(sockNum)) |
32 | 39 | print("IP addr: ", esp.pretty_ip(esp.ip_address)) |
| 40 | +print("info: ", esp.network_data) |
| 41 | +print("done!") |
| 42 | + |
33 | 43 |
|
34 | 44 | status = 0 |
| 45 | +last_sock = 255 |
| 46 | +def server_avail(): # TODO: make a server helper class |
| 47 | + global last_sock |
| 48 | + sock = 255; |
| 49 | + |
| 50 | + if (curr_sock != 255): |
| 51 | + # if (last_sock != 255): |
| 52 | + # TODO: if last sock, check that last_sock is still connected and available |
| 53 | + # sock = last_sock |
| 54 | + if (sock == 255): |
| 55 | + sock = esp.socket_available(sockNum) |
| 56 | + if (sock != 255): |
| 57 | + last_sock = sock |
| 58 | + return sock |
| 59 | + |
| 60 | + return 255 |
| 61 | + |
35 | 62 | while True: |
36 | | - if status != esp.status: |
| 63 | + if status != esp.status: # TODO: Move device connected check to server class ? |
37 | 64 | status = esp.status |
38 | 65 |
|
39 | 66 | if status == 8: |
40 | | - print("Device connected!") ## works |
| 67 | + print("Device connected! status=", status) |
41 | 68 | else: |
42 | | - print("Device disconnected status=", status) ## works |
| 69 | + print("Device disconnected! status=", status) |
43 | 70 |
|
44 | | - print("socket available?: ", esp.socket_available(sockNum)) |
45 | | - print("socket_status: ", esp.socket_status(sockNum)) |
46 | | - print(sock.read()) |
47 | 71 |
|
| 72 | + avail = server_avail() |
| 73 | + if (avail != 255): |
| 74 | + sock.set_sock_num(avail) # TODO: Server class should return a new client socket |
| 75 | + data = sock.read() |
| 76 | + if (len(data)): |
| 77 | + print(data) |
| 78 | + sock.write(b"HTTP/1.1 200 OK\r\n"); |
| 79 | + sock.write(b"Content-type:text/html\r\n"); |
| 80 | + sock.write(b"\r\n"); |
48 | 81 |
|
49 | | -print("done!") |
| 82 | + sock.write(b"Click <a href=\"/H\">here</a> turn the LED on!!!<br>\r\n"); |
| 83 | + sock.write(b"Click <a href=\"/L\">here</a> turn the LED off!!!!<br>\r\n"); |
| 84 | + |
| 85 | + sock.write(b"\r\n") |
| 86 | + sock.close() |
0 commit comments