kontrol scripta
This commit is contained in:
parent
4c83132299
commit
9d6e8e4ff4
@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import RPi.GPIO as GPIO
|
||||||
|
import subprocess
|
||||||
|
import time
|
||||||
|
|
||||||
|
class FanStatus(object):
|
||||||
|
|
||||||
|
ON_THRESHOLD = 50 # 50 (gradu zentigradu) Haizemailea pizten da.
|
||||||
|
OFF_THRESHOLD = 43 # 43 (gradu zentrigadu) Haizemailea itzaltzen da.
|
||||||
|
SLEEP_INTERVAL = 20 # (segundoak) Tenperatura neurketa maiztasuna.
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(FanStatus, self).__init__()
|
||||||
|
self.FanPin = 27 # pin13
|
||||||
|
|
||||||
|
def setup(self):
|
||||||
|
GPIO.setwarnings(False)
|
||||||
|
GPIO.setmode(GPIO.BCM)
|
||||||
|
GPIO.setup(self.FanPin, GPIO.OUT)
|
||||||
|
|
||||||
|
def get_temp(self):
|
||||||
|
output = subprocess.run(['vcgencmd', 'measure_temp'], capture_output=True)
|
||||||
|
temp_str = output.stdout.decode()
|
||||||
|
try:
|
||||||
|
return float(temp_str.split('=')[1].split('\'')[0])
|
||||||
|
except (IndexError, ValueError):
|
||||||
|
raise RuntimeError('Akatsa tenperatura eskuratzerakoan')
|
||||||
|
|
||||||
|
def main(self):
|
||||||
|
# Piztu/Itzaldu balioak egokiak direla ziurtatu
|
||||||
|
if self.OFF_THRESHOLD >= self.ON_THRESHOLD:
|
||||||
|
raise RuntimeError('Konfiguraketa akatsa -> ITZALTZE tenperatura PIZTE tenperatura baina txikiagoa izan behar da!')
|
||||||
|
|
||||||
|
while True:
|
||||||
|
temp = f_status.get_temp()
|
||||||
|
if temp > self.ON_THRESHOLD and not GPIO.input(self.FanPin):
|
||||||
|
GPIO.output(self.FanPin, True)
|
||||||
|
elif GPIO.input(self.FanPin) and temp < self.OFF_THRESHOLD:
|
||||||
|
GPIO.output(self.FanPin, False)
|
||||||
|
time.sleep(self.SLEEP_INTERVAL)
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
GPIO.cleanup()
|
||||||
|
|
||||||
|
f_status = FanStatus()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
f_status.setup()
|
||||||
|
try:
|
||||||
|
f_status.main()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
f_status.destroy()
|
Loading…
Reference in New Issue
Block a user