DHT Sensor Python script error
Question: I have a sensor type DHT22 connected to a raspberry. I have written a script
in python but when I run it I get errors

    
    
    #!/usr/bin/python
    import MySQLdb
    import subprocess
    import re
    import sys
    import time
    import datetime
    import Adafruit_DHT
    
    conn = MySQLdb.connect("localhost","zeus","gee3g673r","logi")
    while(True):
    date = time.strftime("%d/%m/%Y")
    clock = time.strftime("%H:%M")
    
    #output = subprocess.check_output(["/usr/bin/AdafruitDHT.py 2302", "4"]);
    output = Adafruit_DHT.read_retry(Adafruit_DHT.AM2302, 4)
    matches = re.search("Temp =\s+([0-9.]+)", output)
     if (not matches):
     time.sleep(0)
     continue
    temp = float(matches.group(1))
    
    matches = re.search("Hum =\s+([0-9.]+)", output)
     if (not matches):
     time.sleep(0)
     continue
    humidity = float(matches.group(1))
    
    # MYSQL DATA Processing
    c = conn.cursor()
    
    c.execute("INSERT INTO data_th (date, clock, temp, hum) VALUES (%s, %s,%s, %s)",(date, clock, temp, humidity))
    
    #print "DB Loaded"
    
    time.sleep(360)
    

This is the error encountered on running the script:

    
    
    root@raspberrypi:/home# ./hdt.py
    Traceback (most recent call last):
    File "./dht.py", line 22, in <module>
    matches = re.search("Temp =\s+([0-9.]+)", output)
    File "/usr/lib/python2.7/re.py", line 142, in search
    return _compile(pattern, flags).search(string)
    TypeError: expected string or buffer
    


Answer: Adafruit_DHT.read_retry() does not return string. re.search expects string as
second parameter.

Please have a look at code below (taken from
[Adafruit_Python_DHT/examples](https://github.com/adafruit/Adafruit_Python_DHT/blob/master/examples/AdafruitDHT.py)):

    
    
    # Try to grab a sensor reading.  Use the read_retry method which will retry up
    # to 15 times to get a sensor reading (waiting 2 seconds between each retry).
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    
    # Un-comment the line below to convert the temperature to Fahrenheit.
    # temperature = temperature * 9/5.0 + 32
    
    # Note that sometimes you won't get a reading and
    # the results will be null (because Linux can't
    # guarantee the timing of calls to read the sensor).  
    # If this happens try again!
    if humidity is not None and temperature is not None:
        print 'Temp={0:0.1f}*  Humidity={1:0.1f}%'.format(temperature, humidity)
    else:
        print 'Failed to get reading. Try again!'
        sys.exit(1)
    

