BASIC WIFI DETECTION
import network
import time
def scan_wifi():
wlan = network.WLAN(network.STA_IF) # Create a WLAN object in station mode
wlan.active(True) # Activate the WLAN interface
print("Scanning for Wi-Fi networks...")
networks = wlan.scan() # Scan for available networks
for net in networks:
ssid = net[0].decode('utf-8') # SSID is the first item in the tuple
print("Found network: SSID: {}".format(ssid))
if __name__ == "__main__":
scan_wifi()
BASIC SERVER
import network
import socket
import time
def setup_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("NETWORK", "PASSWORD")
while not wlan.isconnected():
time.sleep(1)
print('Connected to Wi-Fi network:', wlan.ifconfig())
def start_server():
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
print('Listening on', addr)
while True:
cl, addr = s.accept()
print('Client connected from', addr)
request = cl.recv(1024)
print('Request:', request)
response = """\
HTTP/1.1 200 OK
Hello from ESP32!
"""
cl.send(response)
cl.close()
if __name__ == "__main__":
setup_wifi()
start_server()
BASIC HTML JS PAGE SERVING FROM ESP-32 SERVER
import network
import socket
import time
# Global variable for reply message
reply_message = "Server response here"
def setup_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('NETWORL', 'PASSWORD')
while not wlan.isconnected():
time.sleep(1)
print('Connected to Wi-Fi network:', wlan.ifconfig())
def handle_request(request):
global reply_message
try:
if request.startswith('POST /'):
if '\r\n\r\n' in request:
body = request.split('\r\n\r\n')[1]
params = body.split('&')
message = params[0].split('=')[1]
print('Received message:', message)
return "Message received: {}".format(message)
else:
return "Invalid request format"
else:
return reply_message
except Exception as e:
print("Error handling request:", e)
return "Error processing request"
def start_server():
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Allow address reuse
try:
s.bind(addr)
s.listen(1)
print('Listening on', addr)
while True:
try:
cl, addr = s.accept()
print('Client connected from', addr)
request = cl.recv(1024).decode()
print('Request:', request)
response_body = handle_request(request)
response = """\
HTTP/1.1 200 OK
Content-Type: text/html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ESP32 Web Server</title>
</head>
<body>
<div class="container">
<h1>ESP32 Web Server</h1>
<form id="dataForm">
<label for="message">Enter your message:</label>
<input type="text" id="message" name="message" required>
<input type="submit" value="Send">
</form>
<div id="response" class="response"></div>
</div>
</body>
</html>
""".format(response_body)
cl.send(response)
except Exception as e:
print("Error during communication:", e)
finally:
cl.close()
except OSError as e:
print("Socket error:", e)
finally:
s.close() # Ensure the socket is always closed
if __name__ == "__main__":
setup_wifi()
start_server()
Comments
Post a Comment