Ich habe einen Raspberry Pi Model B Revision 2 und einen Mini-5-V-Lüfter an einem Relaisschalter eingerichtet, den ich jetzt mit Python steuern möchte. Ich werde jede Stunde eine Crontab laufen lassen, um die Temperatur des Pi zu überprüfen, und wenn die Temperatur über 50 ° C liegt, werde ich den Lüfter etwa 10 Minuten lang laufen lassen. Dies ist mein aktuelles Setup:
Das Relais ist hier wie in diesem Diagramm dargestellt:
Ich habe das Relais auf diese Weise eingerichtet, da oben ein Licht darauf leuchtet (ein rotes Licht), das ich möchte, dass es eingeschaltet ist, wenn der Lüfter arbeitet ... und ausgeschaltet, wenn es nicht funktioniert.
Hier ist mein Skript:
#! / usr / bin / python3import timeimport osimport sysimport RPi.GPIO als GPIO # Identifizieren Sie, welcher Pin das Relais steuertFAN_PIN = 3 # Temperaturprüfung. Lüfter nach 50 ° C starten, unter 50CFAN_START = 50def herunterfahren GPIOsetup (): GPIO.setmode (GPIO.BCM) GPIO.setup (FAN_PIN, GPIO.OUT) GPIO.setwarnings (False) def getCPUtemperature (): res = os.popen ( 'vcgencmd Measure_temp'). readline () return (res.replace ("temp =", ""). replace ("'C \ n", "")) def fanON (): GPIO.output (FAN_PIN, 0) print "fan on" return () def fanOFF (): GPIO.output (FAN_PIN, 1) print "fan off" return () def getTEMP (): CPU_temp = float (getCPUtemperature ()) wenn CPU_temp>FAN_START: fanON () else: fanOFF () return () def main (): GPIOsetup () getTEMP () try: main () endlich: print ("Finish") # GPIO.cleanup ()
Nun das Problem ist, dass ich einige Warnungen bekomme, die ich einfach nicht loswerden kann:
root @ raspberrypi: / home / pi # python fan.pyfan.py:14: RuntimeWarning: Dieser Kanal ist bereits in benutze, trotzdem weiter. Verwenden Sie GPIO.setwarnings (False), um Warnungen zu deaktivieren. GPIO.setup (FAN_PIN, GPIO.OUT) fan.py:14: RuntimeWarning: Auf diesem Kanal ist ein physikalischer Pull-up-Widerstand installiert! GPIO.setup (FAN_PIN, GPIO.OUT) Lüfter offFinish
Die fragliche Zeile lautet wie folgt:
GPIO.setup (FAN_PIN, GPIO.OUT)
Warum erhalte ich diesen Fehler? Ich habe GPIO.setwarnings (False) in meinem Code. Und sollte ich diesen Pin auch zur Steuerung des Relais verwenden? Gibt es einen optionalen Pin, den ich verwenden sollte? Danke.