美文网首页
树莓派上利用python读取传感器DHT11的温湿度

树莓派上利用python读取传感器DHT11的温湿度

作者: 刘小白DOER | 来源:发表于2021-01-23 14:58 被阅读0次

   昨晚测试Python操作dht11传感器失败!本来想着利用树莓派,传感器,数据库搭建一个机房环境监控系统,卡在了python读取数据上,怎么读取数据都是有问题。世上无难事,只要肯放弃,决定暂时放弃实验。

  本来通过C语言是可以正常读取的,为啥不试试C语言开写入mysql数据库呢。于是准备试试C语言来操作MySQL数据库!太底层的语言了,在github上搜搜现成的代码来试试,说来也巧,找到一个DHT11 Python library,哈哈哈哈!github真是生产力工具!

    DHT11传感器接入树莓派和我的上一篇文章一样。

    接下里就是克隆代码啦。

sudo git clone https://github.com/szazo/DHT11_Python.git

当然也可以进入github仓库DHT11_Python,按照说明pip install dht11来安装使用。

    进入目录。

cd DHT11_Python

      修改示例代码的针脚pin值。

sudo nano example.py,将默认的14修改成18,因为gpio的bcm编码是18。

接下里就是运行程序了,大功告成,开源万岁!

利用python将读取到的数据存入mysql数据库,方便对外提供温湿度数据。

整体代码如下:

import RPi.GPIO as GPIO

import MySQLdb

import dht11

import time

import datetime

db = MySQLdb.connect("localhost", "phpmyadmin", "phpmyadmin", "dht11", charset='utf8' )

cursor = db.cursor()

# initialize GPIO

GPIO.setwarnings(True)

GPIO.setmode(GPIO.BCM)

# read data using pin 14

instance = dht11.DHT11(pin=18)

try:

        while True:

            result = instance.read()

            if result.is_valid():

                print("Last valid input: " + str(datetime.datetime.now()))

                #print(result.humidity)

                print("Temperature: %-3.1f C" % result.temperature)

                print("Humidity: %-3.1f %%" % result.humidity)

                #有误,请看下面的阐述

                sql = """INSERT INTO data(temperature, humidity)

                      VALUES (result.temperature, result.humidity)"""

                try:

                  cursor.execute(sql)

                  db.commit()

                except:

                # Rollback in case there is any error

                  db.rollback()

            time.sleep(6)

except KeyboardInterrupt:

    print("Cleanup")

    GPIO.cleanup()

    db.close()

在实践中发现sql语句执行有问题,居然插入数据失败。

  sql = """INSERT INTO data(temperature, humidity)  VALUES (result.temperature, result.humidity)"""

把result.temperature, result.humidity两个值换成具体的数值,比如12.9可以。这两个数据我看了里面的class是float类型,不知道为啥有问题插入不了数据库!再去python操作数据库的知识看了看,原来是sql语句里面是无法识别参数值的,于是修改成这样后就正常了:

sql = """INSERT INTO data(temperature, humidity)

            VALUES (%-3.1f, %-3.1f)"""  %  (result.temperature,result.humidity)

数据库结构如下:

相关文章

网友评论

      本文标题:树莓派上利用python读取传感器DHT11的温湿度

      本文链接:https://www.haomeiwen.com/subject/pdkyzktx.html