Difference between revisions of "Third example"
From MyWiki
(Created page with "<source lang = "python"> import network import socket import time from machine import Pin led = Pin(15, Pin.OUT) ssid = 'YOUR NETWORK NAME' password = 'YOUR NETWORK PASSWOR...") |
|||
Line 3: | Line 3: | ||
import socket | import socket | ||
import time | import time | ||
+ | import machine | ||
from machine import Pin | from machine import Pin | ||
− | + | led = machine.Pin("LED", machine.Pin.OUT) | |
− | led = Pin( | + | stateis = "" |
− | + | ||
− | ssid = ' | + | ssid = 'dlink2' |
− | password = ' | + | password = 'bananatree' |
wlan = network.WLAN(network.STA_IF) | wlan = network.WLAN(network.STA_IF) | ||
wlan.active(True) | wlan.active(True) | ||
wlan.connect(ssid, password) | wlan.connect(ssid, password) | ||
− | + | ||
html = """<!DOCTYPE html> | html = """<!DOCTYPE html> | ||
− | <html> | + | <html> |
− | + | <head> <title>Pico W</title> </head> | |
− | + | <body> <h1>Pico W</h1> | |
− | + | <p>%s</p> | |
− | + | </body> | |
− | </html> | + | </html> |
− | """ | + | """ |
− | + | ||
+ | # Wait for connect or fail | ||
max_wait = 10 | max_wait = 10 | ||
while max_wait > 0: | while max_wait > 0: | ||
Line 31: | Line 33: | ||
print('waiting for connection...') | print('waiting for connection...') | ||
time.sleep(1) | time.sleep(1) | ||
− | + | ||
+ | # Handle connection error | ||
if wlan.status() != 3: | if wlan.status() != 3: | ||
raise RuntimeError('network connection failed') | raise RuntimeError('network connection failed') | ||
Line 38: | Line 41: | ||
status = wlan.ifconfig() | status = wlan.ifconfig() | ||
print( 'ip = ' + status[0] ) | print( 'ip = ' + status[0] ) | ||
− | + | ||
+ | # Open socket | ||
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] | addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] | ||
Line 44: | Line 48: | ||
s.bind(addr) | s.bind(addr) | ||
s.listen(1) | s.listen(1) | ||
− | + | ||
print('listening on', addr) | print('listening on', addr) | ||
− | + | ||
# Listen for connections | # Listen for connections | ||
while True: | while True: | ||
Line 60: | Line 64: | ||
print( 'led on = ' + str(led_on)) | print( 'led on = ' + str(led_on)) | ||
print( 'led off = ' + str(led_off)) | print( 'led off = ' + str(led_off)) | ||
− | + | ||
if led_on == 6: | if led_on == 6: | ||
print("led on") | print("led on") | ||
led.value(1) | led.value(1) | ||
stateis = "LED is ON" | stateis = "LED is ON" | ||
− | + | ||
if led_off == 6: | if led_off == 6: | ||
print("led off") | print("led off") | ||
led.value(0) | led.value(0) | ||
stateis = "LED is OFF" | stateis = "LED is OFF" | ||
− | + | #stateis = "LED" | |
response = html % stateis | response = html % stateis | ||
Revision as of 16:34, 11 February 2023
import network import socket import time import machine from machine import Pin led = machine.Pin("LED", machine.Pin.OUT) stateis = "" ssid = 'dlink2' password = 'bananatree' wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) html = """<!DOCTYPE html> <html> <head> <title>Pico W</title> </head> <body> <h1>Pico W</h1> <p>%s</p> </body> </html> """ # Wait for connect or fail max_wait = 10 while max_wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break max_wait -= 1 print('waiting for connection...') time.sleep(1) # Handle connection error if wlan.status() != 3: raise RuntimeError('network connection failed') else: print('connected') status = wlan.ifconfig() print( 'ip = ' + status[0] ) # Open socket addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] s = socket.socket() s.bind(addr) s.listen(1) print('listening on', addr) # Listen for connections while True: try: cl, addr = s.accept() print('client connected from', addr) request = cl.recv(1024) print(request) request = str(request) led_on = request.find('/light/on') led_off = request.find('/light/off') print( 'led on = ' + str(led_on)) print( 'led off = ' + str(led_off)) if led_on == 6: print("led on") led.value(1) stateis = "LED is ON" if led_off == 6: print("led off") led.value(0) stateis = "LED is OFF" #stateis = "LED" response = html % stateis cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n') cl.send(response) cl.close() except OSError as e: cl.close() print('connection closed')