ESP8266用网页控制电灯(micropython)

#此esp8266的网页又链接到另一个esp8266    里边还有个温湿度传感器

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

# #####################################################################main.py
import network
import utime

SSID = "OpenWrt"
PASSWORD = "*****************" ####################################

def do_connect():
    wlan = network.WLAN(network.AP_IF)
    wlan.active(True)
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.ifconfig(('192.168.123.254', '255.255.255.0', '192.168.123.1', '192.168.123.1'))##############################
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(SSID, PASSWORD)

    start = utime.time()
    while not wlan.isconnected():
        utime.sleep(1)
        if utime.time()-start > 5:
            print("connect timeout!")
            break

    if wlan.isconnected():
        print('network config:', wlan.ifconfig())

do_connect()
import web2

 

---------------------------------------------------------------------------------------------------------------------

###########################################################web2.py

 

import machine
import utime
import dht
d = dht.DHT11(machine.Pin(2))
from machine import Pin
p0 = Pin(0, Pin.OUT)
p0.on()
p1 = Pin(4, Pin.OUT)
color1="blue"
color2="blue"
color3="black"
color4="black"
loc="<html>"
loc2="""
<script >
location.href="http://192.168.123.254"
</script >
</html>

"""
def html():
  return """
<html><head>
    <meta  http-equiv="Content-Type"  content="text/html; charset=utf-8" />
    <meta name="viewport"content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes"/>
</head>

<script >
    function dianji(val)
    {
        var request = new XMLHttpRequest();

        
        request.open('GET', "?mcu_do="+val,true);
        if (val=='5on'){
         {   request.onload = function() {  huixian.innerHTML= this.response;    }
    }
        }
        else{
        request.onload = function() {  
        if( this.response[6]==1)deng3.style.color="black";else deng3.style.color="red" 

        }

        }
        request.send();
    }

    function dianji2(val){
location.href="http://192.168.123.253/?mcu_do="+val
    }
    
</script>

<body>
    <h1 id=deng1 style="color:"""+color1+"""">屋里电灯</h1>
    <input  type="button" οnclick="dianji2('1on');" value="开" />&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <input  type="button" οnclick="dianji2('1of');" value="关" />
        <h1 id=deng2 style="color:"""+color2+"""" >院里电灯</h1>
    <input  type="button" οnclick="dianji2('2on');" value="开" />&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <input  type="button" οnclick="dianji2('2of');" value="关" />
    <h1 id=deng3 style="color:"""+color3+"""">西屋电灯</h1>
    <input  type="button" οnclick="dianji('3on');" value="开" />&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <input  type="button" οnclick="dianji('3of');" value="关" />
        
    <br>
    <br>    
    <div style="width:40px; height:50px;" id="huixian"></div>
    <input  type="button" οnclick="dianji('5on');" value="温湿度" />
</body>
</html>

""" 
import socket
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
addr2 = socket.getaddrinfo('192.168.123.253',80)[0][-1]
s = socket.socket()

s.bind(addr)
s.listen(0)


print('listening on', addr)
response2 = html
while True:
  try:
    cl, addr = s.accept()
    print('client connected from :', addr)
    #cl_file = cl.makefile('rwb', 0)
    cl.settimeout(3.0)
    lll= b''
    while True:       
            line = cl.readline()        
            lll=lll+line
            #print( lll)
            if not line or line == b'\r\n':
                break
    llll=lll.decode("utf-8")
    l=llll.find("mcu_do=",0,20)
    if  not l==-1:
        cmd=(llll[l+7:l+10])
        if cmd=="5on":
            try:
                d.measure()
            ddd=str(d.temperature()) 
            except OSError:
                cl.send( "错")
                cl.close()

           else:
                response =ddd + " " + str(d.humidity())
                cl.send(response)
                cl.close()
            continue
        elif cmd=="3of":
            print("of")
            p0.on()
            cl.send(loc)
            cl.send(str(p0.value())+str(p1.value()))
            cl.send(loc2)
            cl.close()
        elif cmd=="3on":
            print("on")
            p0.off()
            cl.send(loc)
            cl.send(str(p0.value())+str(p1.value()))
            cl.send(loc2)
            cl.close()

       elif cmd=="xof":
            print("3of")
            s2.connect(addr2)
            sss="GET /?mcu_do=1of  http/1.1\r\n"
            s2.send(sss.encode('utf-8'))
            sss="HOST:192.168.123.253\r\n"
            s2.send(sss.encode('utf-8'))    
            s2.close()
            cl.close()
        elif cmd=="xon":
            print("3on")
            s2 = socket.socket()
            s2.connect(addr2)
            sss="GET /?mcu_do=2on  http/1.1\r\n"
            s2.send(sss.encode('utf-8'))
            sss="HOST:192.168.123.253\r\n\r\n"
            s2.send(sss.encode('utf-8'))    
            
            cl.send(s2.recv(100))
            s2.close()
            cl.close()
        elif cmd=="yof":
            print("yof")
            p1.off()
            cl.send(loc)
            cl.send(str(p0.value())+str(p1.value()))
            cl.send(loc2)
            cl.close()
        elif cmd=="yon":
            print("yon")
            p1.on()
            cl.send(loc)
            cl.send(str(p0.value())+str(p1.value()))
            cl.send(loc2)
            cl.close()
        elif cmd=="rst":
            machine.reset()
            
    else:        
      if(p1.value()):
        color3="red"
      else:
        color3="black"
      if(p0.value()):
        color4="red"
      else:
        color4="black"
      cl.write(html())
      cl.close()
  except :
        print( "cuowu")
    

        

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值