]> vault307.fbx.one Git - webserver.git/blob - web_serverHTML.py
pico w micropython webserver
[webserver.git] / web_serverHTML.py
1 import network, socket, time, machine, si7021
2 from machine import Pin
3
4 cat=machine.Pin(14,machine.Pin.OUT)
5 red=machine.Pin(10,machine.Pin.OUT)
6 green=machine.Pin(11,machine.Pin.OUT)
7 sensor=si7021.Si7021(machine.I2C(0,sda=machine.Pin(0),scl=machine.Pin(1)))
8 temp=si7021.convert_celcius_to_fahrenheit(sensor.temperature)
9 relHum=sensor.relative_humidity
10
11 button = Pin(17,Pin.IN,Pin.PULL_UP) #not implemented at this time
12
13 ssid='SSID'
14 password='PSSWD'
15
16 def connect():
17 wlan=network.WLAN(network.STA_IF)
18 wlan.active(True)
19 wlan.connect(ssid,password)
20 while wlan.isconnected() == False:
21 print('Waiting for connection...')
22 time.sleep(1)
23 ip=wlan.ifconfig()[0]
24 print(f'Connected on {ip}')
25 return ip
26
27 def open_socket(ip):
28 address=(ip,80)
29 connection=socket.socket()
30 connection.bind(address)
31 connection.listen(1)
32 return connection
33
34 def get_html(html_name):
35 with open(html_name, 'r') as file:
36 html=file.read()
37 return html
38
39 def serve(connection):
40 state='OFF'
41 RState='OFF'
42 GSTate='OFF'
43
44 while True:
45 client=connection.accept()[0]
46 request=client.recv(1024)
47 request=str(request)
48 try:
49 response=get_html('index.html')
50 request=request.split()[1]
51 except IndexError:
52 pass
53 if request=='/lighton?':
54 cat.on()
55 state='ON'
56 elif request=='/lightoff?':
57 cat.off()
58 state='OFF'
59 elif request=='/redon?':
60 red.on()
61 RState='ON'
62 elif request=='/redoff?':
63 red.off()
64 RState='OFF'
65 elif request=='/greenon?':
66 green.on()
67 GSTate='ON'
68 elif request=='/greenoff?':
69 green.off()
70 GSTate='OFF'
71
72 response=response.replace('state', state)
73 response=response.replace('RState', RState)
74 response=response.replace('GSTate', GSTate)
75 response=response.replace('temp', str(temp))
76 response=response.replace('relHum', str(relHum))
77 client.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
78 client.send(response)
79 client.close()
80
81 try:
82 ip=connect()
83 connection=open_socket(ip)
84 serve(connection)
85 except KeyboardInterrupt:
86 pass