# Begin configuration
TITLE = "Air conditioner"
GPIO_NUM = 15
STA_SSID = "[redacted]"
STA_PSK = "[redacted]"
# End configuration
import network
import machine
import usocket
#ap_if = network.WLAN(network.AP_IF)
#if ap_if.active(): ap_if.active(False)
#sta_if = network.WLAN(network.STA_IF)
#if not ap_if.active(): sta_if.active(True)
#if not sta_if.isconnected(): sta_if.connect(STA_SSID, STA_PSK)
pin = machine.Pin(GPIO_NUM, machine.Pin.OUT)
pin.value(0)
def ok(socket, query):
socket.write("HTTP/1.1 OK\r\n\r\n")
socket.write("
"+TITLE+"")
socket.write(TITLE+" status: ")
if pin.value():
socket.write("ON")
else:
socket.write("OFF")
socket.write("
")
if pin.value():
socket.write("")
else:
socket.write("")
def err(socket, code, message):
socket.write("HTTP/1.1 "+code+" "+message+"\r\n\r\n")
socket.write(""+message+"
")
def handle(socket):
(method, url, version) = socket.readline().split(b" ")
if b"?" in url:
(path, query) = url.split(b"?", 2)
else:
(path, query) = (url, b"")
while True:
header = socket.readline()
if header == b"":
return
if header == b"\r\n":
break
if version != b"HTTP/1.0\r\n" and version != b"HTTP/1.1\r\n":
err(socket, "505", "Version Not Supported")
elif method == b"GET":
if path == b"/":
ok(socket, query)
else:
err(socket, "404", "Not Found")
elif method == b"POST":
if path == b"/on":
pin.high()
ok(socket, query)
elif path == b"/off":
pin.low()
ok(socket, query)
else:
err(socket, "404", "Not Found")
else:
err(socket, "501", "Not Implemented")
print ('xxxxxx')
server = usocket.socket()
server.settimeout(2)
server.setsockopt(usocket.SOL_SOCKET, usocket.SO_REUSEADDR, 1)
server.bind(('0.0.0.0', 80))
server.listen(1)
while True:
print ('here')
try:
(socket, sockaddr) = server.accept()
if socket != None:
handle(socket)
except OSError:
print ("timeout")
continue
except:
print ("error")
socket.write("HTTP/1.1 500 Internal Server Error\r\n\r\n")
socket.write("Internal Server Error
")
socket.close()