From 7dd33a02cf15c4392c4e0c625d6bc27abd5a3b9c Mon Sep 17 00:00:00 2001 From: cuu Date: Mon, 23 Aug 2021 14:27:09 +0800 Subject: [PATCH] add devterm_fan_daemon_rpi source code --- Code/devterm_fan_daemon_rpi/README | 23 +++++++++ .../devterm_fan_daemon_rpi/temp_fan_daemon.py | 51 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 Code/devterm_fan_daemon_rpi/README create mode 100644 Code/devterm_fan_daemon_rpi/temp_fan_daemon.py diff --git a/Code/devterm_fan_daemon_rpi/README b/Code/devterm_fan_daemon_rpi/README new file mode 100644 index 0000000..0cc1e96 --- /dev/null +++ b/Code/devterm_fan_daemon_rpi/README @@ -0,0 +1,23 @@ +# Fan control daemon for devterm cm3(rpi os) + +## Install +``` +wget -O - https://raw.githubusercontent.com/clockworkpi/apt/main/debian/KEY.gpg | sudo apt-key add - +echo "deb https://raw.githubusercontent.com/clockworkpi/apt/main/debian/ stable main" | sudo tee -a /etc/apt/sources.list.d/clockworkpi.list + +sudo apt update && apt install -y devterm-fan-temp-daemon-rpi +``` + +## Change the threshold temperature + +Edit `/usr/local/bin/temp_fan_daemon.py` + +line starts with `MAX_TEMP=80` + +change the value of MAX_TEMP to whatever youlike + +then restart systemd service to take effect + +`sudo systemctl restart devterm-fan-temp-daemon` + + diff --git a/Code/devterm_fan_daemon_rpi/temp_fan_daemon.py b/Code/devterm_fan_daemon_rpi/temp_fan_daemon.py new file mode 100644 index 0000000..8808e70 --- /dev/null +++ b/Code/devterm_fan_daemon_rpi/temp_fan_daemon.py @@ -0,0 +1,51 @@ +###devterm raspberry pi fan control daemon +import os +import time + + +def isDigit(x): + try: + float(x) + return True + except ValueError: + return False + +def measure_temp(): + temp = os.popen("/opt/vc/bin/vcgencmd measure_temp").readline() + temp2 = temp.replace("temp=","") + temp3 = temp2.replace("'C","").strip() + #print(temp3) + if isDigit(temp3): + return float(temp3) + else: + return 0 + + +def init_fan_gpio(): + os.popen("gpio mode 41 out") + +def fan_on(): + init_fan_gpio() + os.popen("gpio write 41 1") + +def fan_off(): + init_fan_gpio() + os.popen("gpio write 41 0") + + +MAX_TEMP=80 + +init_fan_gpio() + +while True: + temp = measure_temp() + if(temp > MAX_TEMP): + fan_on() + else: + fan_off() + + time.sleep(5) + + + +