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