Jo det kanske är vad jag är ute efter med något är i alla fall fel..
följande kod generar:
import Adafruit_DHT
import RPi.GPIO as GPIO
import time
DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4
Relay_Ch1 = 26
Relay_Ch2 = 20
Relay_Ch3 = 21
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(Relay_Ch1,GPIO.OUT)
GPIO.setup(Relay_Ch2,GPIO.OUT)
GPIO.setup(Relay_Ch3,GPIO.OUT)
try:
while True:
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
GPIO.output(Relay_Ch1,GPIO.HIGH)
GPIO.output(Relay_Ch2,GPIO.HIGH)
GPIO.output(Relay_Ch3,GPIO.HIGH)
state = 0
if humidity is not None and temperature is not None:
print("Temp={0:0.1f}C Fuktighet={1:0.1f}%".format(temperature, humidity))
if temperature <= 17 and state != 0:
print("under eller lika med 17C")
GPIO.output(Relay_Ch2,GPIO.LOW)
time.sleep(30.0)
GPIO.output(Relay_Ch2,GPIO.HIGH)
state = 0
elif temperature >= 26 and state != 2:
print("över eller lika med 26C")
GPIO.output(Relay_Ch1,GPIO.LOW)
time.sleep(20.0)
GPIO.output(Relay_Ch1,GPIO.HIGH)
state = 2
elif temperature >= 20 and state != 1:
print("Över eller lika med 20C")
GPIO.output(Relay_Ch1,GPIO.LOW)
time.sleep(10.0)
GPIO.output(Relay_Ch1,GPIO.HIGH)
state = 1
else:
print("Annat värde")
else:
print(" Ingen kontakt med Sensorn")
time.sleep(1.0)
Temp=13.7C Fuktighet=64.6%
Annat värde
Temp=13.7C Fuktighet=65.2%
Annat värde
Temp=16.6C Fuktighet=66.1%
Annat värde
Temp=19.9C Fuktighet=63.5%
Annat värde
Temp=20.0C Fuktighet=63.5%
Över eller lika med 20C
Temp=20.0C Fuktighet=63.5%
Över eller lika med 20C
Temp=26.1C Fuktighet=44.3%
över eller lika med 26C
Temp=26.4C Fuktighet=43.6%
över eller lika med 26C
Temp=20.8C Fuktighet=42.2%
Över eller lika med 20C
Temp=18.3C Fuktighet=47.6%
Annat värde
Temp=18.0C Fuktighet=48.2%
^Cexcept
"under eller lika med 17C" Fungerar inte alls den skippar helt:
GPIO.output(Relay_Ch2,GPIO.LOW)
time.sleep(30.0)
GPIO.output(Relay_Ch2,GPIO.HIGH)
"Över eller lika med 20C" gör att relä nr 1 kör sin:
GPIO.output(Relay_Ch1,GPIO.LOW)
time.sleep(10.0)
GPIO.output(Relay_Ch1,GPIO.HIGH)
i alla oändlighet vilket inte är vad jag vill.
"över eller lika med 26C" fungerar som "Över eller lika med 20C"
Alltså verkar inte state = 0 till 2 göra nått alls.