Hallo,
vielleicht kann mir jemand helfen. Ich versuche seit ein paar Wochen das Problem zu lösen und bekomme es nicht hin.
Ich habe den folgenden Code geschrieben um meine Lichter in der Wohnung zu steuern. Es funktioniert auch ohne Probleme, aber leider ist die CPU Last bei meinem PI 3 bei 100% und er wird sehr warm.
Die Temperatur liegt dauerhaft bei 70°C. Sobald ich aber in die Schleife auch nur die geringste sleep setze funktionieren die Lichtschalter nur noch sporadisch. Weiß jemand wie ich das lösen kann?
Python
#!/usr/bin/python3
#Datum 21.03.2018
from time import sleep
import RPi.GPIO as GPIO
bueroin = 2
bueroout = 6
kuechein = 12
kuecheout = 5
wohnin = 19
wohnout = 17
wohnklin = 3
wohnklout = 22
schlafin = 18
schlafout = 13
flurin = 27
flurout = 23
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(bueroin, GPIO.IN)
GPIO.setup(bueroout, GPIO.OUT, initial=False)
GPIO.setup(kuechein, GPIO.IN)
GPIO.setup(kuecheout, GPIO.OUT, initial=False)
GPIO.setup(wohnin, GPIO.IN)
GPIO.setup(wohnout, GPIO.OUT, initial=False)
GPIO.setup(wohnklin, GPIO.IN)
GPIO.setup(wohnklout, GPIO.OUT, initial=False)
GPIO.setup(schlafin, GPIO.IN)
GPIO.setup(schlafout, GPIO.OUT, initial=False)
GPIO.setup(flurin, GPIO.IN)
GPIO.setup(flurout, GPIO.OUT, initial=False)
#######
def buero(channel):
if GPIO.input(channel) == GPIO.LOW:
GPIO.output(bueroout, GPIO.HIGH if GPIO.input(bueroout) == GPIO.LOW else GPIO.LOW)
#######
def kueche(channel):
if GPIO.input(channel) == GPIO.LOW:
GPIO.output(kuecheout, GPIO.HIGH if GPIO.input(kuecheout) == GPIO.LOW else GPIO.LOW)
#######
def wohnzimmer(channel):
if GPIO.input(channel) == GPIO.LOW:
GPIO.output(wohnout, GPIO.HIGH if GPIO.input(wohnout) == GPIO.LOW else GPIO.LOW)
#######
def wohnzimmerkl(channel):
if GPIO.input(channel) == GPIO.LOW:
GPIO.output(wohnklout, GPIO.HIGH if GPIO.input(wohnklout) == GPIO.LOW else GPIO.LOW)
#######
def schlafzimmer(channel):
if GPIO.input(channel) == GPIO.LOW:
GPIO.output(schlafout, GPIO.HIGH if GPIO.input(schlafout) == GPIO.LOW else GPIO.LOW)
#######
def flur(channel):
if GPIO.input(channel) == GPIO.LOW:
GPIO.output(flurout, GPIO.HIGH if GPIO.input(flurout) == GPIO.LOW else GPIO.LOW)
######################Callback##########################################
bt = 800 #bouncetime
GPIO.add_event_detect(bueroin, GPIO.FALLING, callback=buero, bouncetime=bt)
GPIO.add_event_detect(kuechein, GPIO.FALLING, callback=kueche, bouncetime=bt)
GPIO.add_event_detect(wohnin, GPIO.FALLING, callback=wohnzimmer, bouncetime=bt)
GPIO.add_event_detect(wohnklin, GPIO.FALLING, callback=wohnzimmerkl, bouncetime=bt)
GPIO.add_event_detect(schlafin, GPIO.FALLING, callback=schlafzimmer, bouncetime=bt)
GPIO.add_event_detect(flurin, GPIO.FALLING, callback=flur, bouncetime=bt)
#########################################################################
try:
while True:
pass
except KeyboardInterrupt:
print ("quit")
finally:
GPIO.cleanup()
Alles anzeigen