Difference between revisions of "Third example"

From MyWiki
Jump to: navigation, search
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>
 +
Import machine as the LED has moved from GPIO pin to the wifi chip<br>
 +
 
<source lang = "python">
 
<source lang = "python">
 
import network
 
import network

Revision as of 16:36, 11 February 2023

This code was from the official manual, but it didn't work
I had to add and and initialise the variable "stateis"
Import machine as the LED has moved from GPIO pin to the wifi chip

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')