Browse Source

add devterm_fan_daemon_rpi source code

cuu 2 years ago
parent
commit
7dd33a02cf
2 changed files with 74 additions and 0 deletions
  1. 23 0
      Code/devterm_fan_daemon_rpi/README
  2. 51 0
      Code/devterm_fan_daemon_rpi/temp_fan_daemon.py

+ 23 - 0
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`
+
+

+ 51 - 0
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)
+
+
+
+