|
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