简体   繁体   English

传感器Python DHT11

[英]Sensor Python DHT11

I try to follow this tutorial : https://medium.com/@dvd.ciri/raspberry-pi-firebase-home-automation-d5a237f18fb5 我尝试遵循此教程: https : //medium.com/@dvd.ciri/raspberry-pi-firebase-home-automation-d5a237f18fb5

but i have a problem with adafruit. 但我对adafruit有问题。 Some one can help me ? 有人可以帮助我吗?

import RPi.GPIO as GPIO
from time import sleep
import datetime
from firebase import firebase
import pigpio
import Adafruit_DHT
import urllib2, urllib, httplib
import json
import os 
from functools import partial

# Global variables
LOGGER = 1
sensor_pin_number = 4;
firebase = firebase.FirebaseApplication('https://p8.firebaseio.com/', None)


# LOGGER
def printlog(text):
    if(LOGGER):
        print(text)
# LOGGER


# Start script
# ============================================================================
printlog("Script Started\n")

#Information about temperature, humidity, cpu, disk, RAM
# Initiate GPIO for pigpio
pi = pigpio.pi()
# Setup the sensor
sensor= Adafruit_DHT.DHT22



def readDHT22():
    # Get a new reading
    # Save our values
    humidity,temp = Adafruit_DHT.read_retry(sensor, sensor_pin_number)

    return (humidity, temp)


# Return CPU temperature as a character string                                      
def getCPUtemperature():
    res = os.popen('vcgencmd measure_temp').readline()
    return(res.replace("temp=","").replace("'C\n",""))

# Return RAM information (unit=kb) in a list                                        
# Index 0: total RAM                                                                
# Index 1: used RAM                                                                 
# Index 2: free RAM                                                                 
def getRAMinfo():
    p = os.popen('free')
    i = 0
    while 1:
        i = i + 1
        line = p.readline()
        if i==2:
            return(line.split()[1:4])

# Return % of CPU used by user as a character string                                
def getCPUuse():
    return(str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip(\
)))

# Return information about disk space as a list (unit included)                     
# Index 0: total disk space                                                         
# Index 1: used disk space                                                          
# Index 2: remaining disk space                                                     
# Index 3: percentage of disk used                                                  
def getDiskSpace():
    p = os.popen("df -h /")
    i = 0
    while 1:
        i = i +1
        line = p.readline()
        if i==2:
            return(line.split()[1:5])

##Date time formatting
dateString = '%d/%m/%Y %H:%M:%S'


def updatePiInfo():

    printlog("## Updating Firebase Info.. ##")
    firebase.put("/Settings", "/last_update_datetime", datetime.datetime.now().strftime(dateString))

    ##retrive max & min humidity (remove the %)
    maxHumidity = firebase.get("/Controls/Sensors/Humidity/max_inside", None)
    maxHumidity = maxHumidity[:-1]

    minHumidity = firebase.get("/Controls/Sensors/Humidity/min_inside", None)
    minHumidity = minHumidity[:-1]

    #retrieve max & min temperature (remove the C)
    maxTemperature = firebase.get("/Controls/Sensors/Temperature/max_inside", None)
    maxTemperature = maxTemperature[:-1]

    minTemperature = firebase.get("/Controls/Sensors/Temperature/min_inside", None)
    minTemperature = minTemperature[:-1]

    #add current value
    humidity, temperature = readDHT22()
    firebase.put("/Controls/Sensors", "/Humidity/current_inside", ""+humidity+"%")
    firebase.put("/Controls/Sensors", "/Temperature/current_inside", ""+temperature+"C")

    ##check for max values
    if float(humidity) > float(maxHumidity):
        firebase.put("/Controls/Sensors", "/Humidity/max_inside", ""+humidity+"%")
        printlog("Updated Humidity max_inside")
    if float(temperature) > float(maxTemperature):
        firebase.put("/Controls/Sensors", "/Temperature/max_inside", ""+temperature+"C")
        printlog("Updated Temperature max_inside")

    ## cehck for min values
    if float(humidity) < float(minHumidity):
        firebase.put("/Controls/Sensors", "/Humidity/min_inside", ""+humidity+"%")
        printlog("Updated Humidity min_inside")
    if float(temperature) < float(minTemperature):
        firebase.put("/Controls/Sensors", "/Temperature/min_inside", ""+temperature+"C")
        printlog("Updated Temperature min_inside")

    #CPU INFO
    CPU_temp = getCPUtemperature()
    CPU_usage = getCPUuse()
    firebase.put("/PI/CPU", "/temperature", CPU_temp)

    #RAM INFO
    RAM_stats = getRAMinfo()
    RAM_total = round(int(RAM_stats[0]) / 1000,1)
    RAM_used = round(int(RAM_stats[1]) / 1000,1)
    RAM_free = round(int(RAM_stats[2]) / 1000,1)
    firebase.put("/PI/RAM", "/free", str(RAM_free)+"")
    firebase.put("/PI/RAM", "/used", str(RAM_used)+"")
    firebase.put("/PI/RAM", "/total", str(RAM_total)+"")

    #DISK INFO
    DISK_stats = getDiskSpace()
    DISK_total = DISK_stats[0]
    DISK_free = DISK_stats[1]
    DISK_perc = DISK_stats[3]
    DISK_used = float(DISK_total[:-1]) - float(DISK_free[:-1])
    firebase.put("/PI/DISK", "/total", str(DISK_total[:-1]))
    firebase.put("/PI/DISK", "/free", str(DISK_free[:-1]))
    firebase.put("/PI/DISK", "/used", str(DISK_used))
    firebase.put("/PI/DISK", "/percentage", str(DISK_perc))


    printlog(datetime.datetime.now().strftime(dateString))
    printlog("Humidity: Current["+humidity+"], Max["+maxHumidity+"], Min["+minHumidity+"]")
    printlog("Temperature: Current["+temperature+"], Max["+maxTemperature+"], Min["+minTemperature+"]")
    printlog("CPU temperature: "+CPU_temp)
    printlog("RAM total["+str(RAM_total)+" MB], RAM used["+str(RAM_used)+" MB], RAM free["+str(RAM_free)+" MB]")
    printlog("DISK total["+str(DISK_total)+"], free["+str(DISK_free)+"], perc["+str(DISK_perc)+"]")
    printlog("## Update finished successfully ##")
    printlog("======================================================\n")

i have this error : 我有这个错误:

 dht22 = Adafruit_DHT.sensor(pi, sensor_pin_number) AttributeError: 'module' object has no attribute 'sensor' 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////////////////////////////

Try this: 尝试这个:

import RPi.GPIO as GPIO
from time import sleep
import datetime
from firebase import firebase
import pigpio
import Adafruit_DHT
import urllib2, urllib, httplib
import json
import os 
from functools import partial

# Global variables
LOGGER = 1

sensor_pin_number = 4;
firebase = firebase.FirebaseApplication('https://p8.firebaseio.com/', None)


# LOGGER
def printlog(text):
    if(LOGGER):
        print(text)
# LOGGER


# Start script
# ============================================================================
printlog("Script Started\n")

#Information about temperature, humidity, cpu, disk, RAM
# Initiate GPIO for pigpio
pi = pigpio.pi()
# Setup the sensor
sensor= Adafruit_DHT.DHT22



def readDHT22():
    # Get a new reading
    # Save our values
    humidity,temperature = Adafruit_DHT.read_retry(sensor, sensor_pin_number)

    return (humidity, temperature)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在jetson nano上使用python的Usinr DHT11传感器 - Usinr DHT11 sensor on jetson nano using python DHT11温度/湿度传感器Web服务错误 - DHT11 Temp/Humidity Sensor Web Service Error 使用DHT11传感器在Raspberry Pi上读取温度 - Reading temperature on Raspberry Pi using DHT11 sensor DHT11传感器在Edison上发生故障,而在RPi上成功工作 - DHT11 sensor failure on Edison whereas working successful on RPi 将 DHT11 传感器中的值保存到 CSV 文件 - Save Values from a DHT11 Sensor to a CSV file 无法安装Adafruit的DHT11 Python库 - Trouble installing Adafruit's DHT11 Python library 当我尝试运行此脚本时,出现错误:OverflowError: unsigned short is greater than maximum。 树莓派 4B,传感器为 DHT11 - When i try to run this script, i get a error: OverflowError: unsigned short is greater than maximum. Raspberry pi 4B, the sensor is DHT11 从 DHT-11 温度/湿度传感器到 CSV 文件的传感器数据(python/树莓派 3) - Sensor data from DHT-11 temperature/ humidity sensor to CSV file (python/ raspberry pi 3) DHT传感器Python脚本错误 - DHT Sensor Python script error 代码不起作用,(DHT11 数据到 LCD)(Micro:bit)(错误:第 3 行语法错误无法分配给表达式) - Code is not working, (DHT11 Data to LCD) (Micro:bit) (ERROR: line 3 syntax error can't assign to expression)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM