DHT11/12網路監測溫濕度計-micropython

 DHT11/12網路監測溫濕度計-micropython

DHT11/12單純測試參考頁面-

完整程式碼

import dht
import networksocket
from machine import Pin
from time import sleep

ssid="CTK"
password="ctk674011"


STA=network.WLAN(network.STA_IF)
STA.active(True)
STA.connect(ssidpassword)

while STA.isconnected()==False:
    pass
print("The connected successful!")
print("IP:  {}".format(STA.ifconfig()))
    
def readTempAndHumi():
    global temp, humi
    try:
        sensor=dht.DHT11(Pin(4))
        sensor.measure()
        temp=sensor.temperature()
        humi=sensor.humidity()
        if (isinstance(tempfloatand isinstance(humifloat)) or (isinstance(tempintand isinstance(humiint)):
          measureResult="{},{}".format(temphumi)
          return measureResult
        else:
          return ("--")
    except OSError as o:
        print("--")
        
def Htmlpage():
  html"""
        <html>
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <style>
        h1  {text-align: center; background-color: orange; margin-right:5px;}
        dl { width: 320px; margin: 12px auto; }
        dt { 
          font-size: 20pt; color: #444; background-color: #ddd;
          margin: 6pt 0; padding: 6pt 12pt;
        }
        dd {
          text-align: right; padding-right: 6pt;
        }
        .num { font-size: 36pt; color: dodgerblue; }
      </style>
      </head>
    <body>
      <p><h1>ESP32 DHT11/12</h1></p>
      <dl>
        <dt>Temp</dt>
        <dd class=num>"""+str(temp)+"""°C</dd>
        <dt>Humi</dt>
        <dd class=num>"""+str(humi)+""" %</dd>
      </dl>
    </body>
    </html>
    """
  return html

s=socket.socket(socket.AF_INETsocket.SOCK_STREAM)
s.bind((''80))
s.listen(5)

while True:
    connaddr = s.accept()
    print('Got a connection from %s' % str(addr))
    req = conn.recv(1024)
    print('Content = %s' % str(req))
    sensor_reading = readTempAndHumi()
    print(sensor_reading)
    respone = Htmlpage()
    conn.send("http/1.1 200 OK\n")
    conn.send("Content-Type: text/html; charset='utf-8'\n")
    conn.send("Connection: close\n\n")
    conn.sendall(respone)
    conn.close()

解析

載入dht,wifi,端口,pin和時間模組
import dht
import networksocket
from machine import Pin
from time import sleep

這個部份是設制WiFi的流程
ssid="基地台名稱"
password="基地台密碼"


STA=network.WLAN(network.STA_IF)
STA.active(True)
STA.connect(ssidpassword)

while STA.isconnected()==False:
    pass
print("The connected successful!")
print("IP:  {}".format(STA.ifconfig()))

讀取溫溼度的函式
def readTempAndHumi():
    global temp, humi
    try:
        sensor=dht.DHT11(Pin(4))
        sensor.measure()
        temp=sensor.temperature()
        humi=sensor.humidity()
        if (isinstance(tempfloatand isinstance(humifloat)) or (isinstance(tempintand isinstance(humiint)):
          measureResult="{},{}".format(temphumi)
          return measureResult
        else:
          return ("--")
    except OSError as o:
        print("--")

網頁前端的布置,記得要讓其讀取時可返回(return)
其中須注意的是讓溫溼度的值可以正顯示要使用"""+str(溫/溼度變數)+"""
def Htmlpage():
  html"""
        <html>
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <style>
        h1  {text-align: center; background-color: orange; margin-right:5px;}
        dl { width: 320px; margin: 12px auto; }
        dt { 
          font-size: 20pt; color: #444; background-color: #ddd;
          margin: 6pt 0; padding: 6pt 12pt;
        }
        dd {
          text-align: right; padding-right: 6pt;
        }
        .num { font-size: 36pt; color: dodgerblue; }
      </style>
      </head>
    <body>
      <p><h1>ESP32 DHT11/12</h1></p>
      <dl>
        <dt>Temp</dt>
        <dd class=num>"""+str(temp)+"""°C</dd>
        <dt>Humi</dt>
        <dd class=num>"""+str(humi)+""" %</dd>
      </dl>
    </body>
    </html>
    """
  return html

設制監聽套接端口
s=socket.socket(socket.AF_INETsocket.SOCK_STREAM)
s.bind((''80))
s.listen(5)

while True:
    connaddr = s.accept()
    print('Got a connection from %s' % str(addr))
    req = conn.recv(1024)
    print('Content = %s' % str(req))
    sensor_reading = readTempAndHumi()
    print(sensor_reading)
    respone = Htmlpage()
    conn.send("http/1.1 200 OK\n")
    conn.send("Content-Type: text/html; charset='utf-8'\n")
    conn.send("Connection: close\n\n")
    conn.sendall(respone)
    conn.close()









留言

這個網誌中的熱門文章

天氣光環時鐘+農曆提醒(NODE-RED)專題作品-micropython

使用PWM控制伺服馬達-micropython