Recalbox Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • recalbox.com
    • Gitlab repository
    • Documentation
    • Discord

    Unsolved Script to turn off cooler

    Recalbox General
    script turn cooler
    7
    24
    9319
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • lackyluuk
      lackyluuk Translator last edited by

      @azvarel @Substring just add a time.sleep(1) or (2) into the while() loop

      NintendoRS | Nintendo Adapter Box | Cardboard Recalbox

      1 Reply Last reply Reply Quote 0
      • tikiandskull
        tikiandskull last edited by

        Well, maybe i say a stupidity but with a thermal switch? It avoids the question of the script and you can choose one with a temperature of closing and opening of your choice.

        azvarel 1 Reply Last reply Reply Quote 0
        • azvarel
          azvarel @tikiandskull last edited by

          @tikiandskull nothing is stupid, any idea is valid, where would you find this thermal switch?

          Zodian Theme | #SNESProject

          tikiandskull 1 Reply Last reply Reply Quote 0
          • tikiandskull
            tikiandskull @azvarel last edited by tikiandskull

            @azvarel maybe something like this link text It can be found on amazon, conrad, etc some works in 5v others in 12v.

            Afterwards, I do not know how it could be positioned, but probably with the probe as close as possible to cpu

            (sorry for my poor English 🙂 )

            1 Reply Last reply Reply Quote 0
            • Pdagarcia
              Pdagarcia last edited by Pdagarcia

              #!/usr/bin/env python3

              import os
              from time import sleep
              import signal
              import sys
              import RPi.GPIO as GPIO

              pin = 27 # The pin ID, edit here to change it
              maxTMP = 50 # The maximum temperature in Celsius after which we trigger the fan
              sleepTime = 30 # The time to sleep between temp checks

              def setup():
              GPIO.setmode(GPIO.BCM)
              GPIO.setup(pin, GPIO.OUT)
              GPIO.setwarnings(False)
              return()

              def getCPUtemperature():
              res = os.popen('vcgencmd measure_temp').readline()
              temp =(res.replace("temp=","").replace("'C\n",""))
              print("temp is {0}".format(temp)) #Uncomment here for testing
              return temp

              def fanON():
              print("Fan on ...")
              setPin(True)
              return()

              def fanOFF():
              print("Fan off ...")
              setPin(False)
              return()

              def getTEMP():
              CPU_temp = float(getCPUtemperature())
              if CPU_temp > maxTMP:
              fanON()
              sleep(sleepTime) # Sleep additional time in order to ensure that we stay below max temp ...
              else:
              fanOFF()
              return()

              def setPin(mode): # A little redundant function but useful if you want to add logging
              GPIO.output(pin, mode)
              return()

              try:
              setup()
              while True:
              getTEMP()
              sleep(sleepTime) # Read the temperature every x amount of seconds ...
              except KeyboardInterrupt: # trap a CTRL+C keyboard interrupt
              GPIO.cleanup() # resets all GPIO ports used by this script

              1 Reply Last reply Reply Quote 0
              • Pdagarcia
                Pdagarcia last edited by Pdagarcia

                With this transistor 2N4401 600 mA, 40V and 5v fan Works perfectly.

                azvarel 1 Reply Last reply Reply Quote 0
                • azvarel
                  azvarel @Pdagarcia last edited by

                  @Pdagarcia where would you put this script?

                  Zodian Theme | #SNESProject

                  1 Reply Last reply Reply Quote 0
                  • lackyluuk
                    lackyluuk Translator last edited by lackyluuk

                    @azvarel I would place the script into /recalbox/scripts and call the script as a background process from the startup directory /etc/init.d for example as S32StartFanControl
                    This could look like this (just one proposal, you can do it however you like it):

                    #!/usr/bin/python
                    
                    import subprocess
                    
                    try:
                        subprocess.Popen(["python","/recalbox/scripts/fanControl.py"])
                    
                    except KeyboardInterrupt:
                        print "Quit"
                    

                    I have called my script that I start as fanControl.py

                    NintendoRS | Nintendo Adapter Box | Cardboard Recalbox

                    azvarel 1 Reply Last reply Reply Quote 0
                    • azvarel
                      azvarel @lackyluuk last edited by

                      @lackyluuk thanks 😃

                      Zodian Theme | #SNESProject

                      1 Reply Last reply Reply Quote 0
                      • marcelogarbin
                        marcelogarbin last edited by

                        @azvarel I'm with the same problem, did you work? which method did you use?

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Want to support us ?

                        71
                        Online

                        99.6k
                        Users

                        28.1k
                        Topics

                        187.1k
                        Posts

                        Copyright © 2021 recalbox.com