<p>一切都运行顺利,代码在调试器中处理异常</p>
<pre><code> File "/usr/lib/python3/dist-packages/thonny/backend.py", line 305, in _custom_import
module = self._original_import(*args, **kw)
ImportError: No module named 'urllib2'
</code></pre>
<p>但总体而言,它运行良好。我们可以把线合上</p>
<pre><code>"""
dht22.py
Temperature/Humidity monitor using Raspberry Pi and DHT22.
Data is displayed at thingspeak.com
Original author: Mahesh Venkitachalam at electronut.in
Modified by Jacques Kleynhans 06062020
Return rounded string values
Created Temporary variables Hum and Tair
"""
#import sys
import math
#import RPi.GPIO as GPIO
from time import sleep
import Adafruit_DHT
import urllib2
#Constant Variables - Magnus Parameters Max 0.083 Tair Range -20C + 50C
m = 17.62 # g/mol Mass Constant (Water Vapour)
Tn = 240.7263 #Tempreture Constant
Ah = 6.116441 #hPa Pressure Constant
Ak = 0.611 #kPa Pressure Constant
K = 273.15 #Kelvin constant
Ta = 216.7 #Tempreture Constant
#constant for leaf Temperature
Tc = 2.0
myAPI = 'FZZHL7N2R2AXXXXX'
def getSensorData():
RH, T = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 17)
return (round(RH,3), round(T,3))
# Define functions to calculate dewpoint, return a rounded string)
def calcDewPoint(Hum,Tair):
#print('dewpoint1')
Td = (Tn * gamma(Hum,Tair)) / (m - gamma(Hum,Tair))
#print('dewpoint2')
return round(Td,3)
def gamma(Hum,Tair):
#print ('gamma1')
g = math.log(Hum/100.0) + ((m * Tair) / (Tn + Tair))
#print('gamma2')
return round(g,3)
# Define functions to calculate VPD, return a rounded integer)
#Vapor pressure deficit control strategies for plant production
#IFAC Control applications and Ergonomics in Agriculture, Athens, Greece, 1998
def satVaporPres(Tair):
es = 6.1078*math.exp((Tair*17.2694)/(Tair+237.3)) #mPa
return round(es,3)
def actVaporPres(Hum, es):
ea = (Hum/100)*es
return round(ea,3)
def leafEs(Tair):
leafTemp = Tair - Tc
les = 6.1078*math.exp((leafTemp*17.2694)/(leafTemp+237.3))
return round(les, 3)
#Partial pressure of water vapour Pw in the air surrounding the plant
def parPressureW(Hum, es, Tair):
Pw = Hum*es*Tair
return(Pw)
def VPD(les, ea): #VPD air / crop
VPD = (les - ea)/10
return round(VPD,3)
def main():
print('starting...')
baseURL = 'https://api.thingspeak.com/update?api_key=%s' % myAPI
while True:
try:
RH, T = getSensorData()
Hum = RH
Tair = T
Td = calcDewPoint(Hum,Tair)
es = satVaporPres(Tair)
ea = actVaporPres(Hum, es)
les = leafEs(Tair)
TempVPD = VPD(les,ea)
print(Hum, Tair, Td, TempVPD)
f = urllib2.urlopen(baseURL + "&field1=%s&field2=%s&field3=%s&field4=%s" % (RH, T, Td, TempVPD))
print f.read()
f.close()
sleep(60) #uploads DHT22 sensor values every 1 minutes
except:
print('exiting.')
break
# call main
if __name__ == '__main__':
main()
</code></pre>