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...") |
|||
(13 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | This code was from the official manual, but it didn't work<br> | ||
+ | I had to add and and initialise the variable "stateis"<br><br> | ||
+ | Modify code at beginning from: | ||
+ | <source lang = "python"> | ||
+ | led = Pin(15, Pin.OUT) | ||
+ | </source> | ||
+ | to: | ||
+ | <source lang = "python"> | ||
+ | led = machine.Pin("LED", machine.Pin.OUT) | ||
+ | |||
+ | stateis = "" | ||
+ | </source> | ||
+ | Now everything works<br> | ||
<source lang = "python"> | <source lang = "python"> | ||
import network | import network | ||
Line 6: | Line 19: | ||
from machine import Pin | from machine import Pin | ||
− | led = Pin( | + | led = machine.Pin("LED", machine.Pin.OUT) |
− | ssid = ' | + | stateis = "" |
− | password = ' | + | |
+ | ssid = 'dlink2' | ||
+ | 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> | |
− | + | Switches on and off the on board LED on my Pico W | |
− | + | <p>%s</p> | |
− | </html> | + | </body> |
− | """ | + | </html> |
− | + | """ | |
+ | |||
+ | # Wait for connect or fail | ||
max_wait = 10 | max_wait = 10 | ||
while max_wait > 0: | while max_wait > 0: | ||
Line 31: | Line 48: | ||
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 56: | ||
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 63: | ||
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 79: | ||
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 | ||
Latest revision as of 15:11, 12 February 2023
This code was from the official manual, but it didn't work
I had to add and and initialise the variable "stateis"
Modify code at beginning from:
led = Pin(15, Pin.OUT)
to:
led = machine.Pin("LED", machine.Pin.OUT) stateis = ""
Now everything works
import network import socket import time 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> Switches on and off the on board LED on my Pico W <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')