Hello!

In this little How To I will describe what is necessary to use the Fan
and the Power button of the Argon One Case for the Raspberry Pi 4B
together with a piCorePLayer (7.x) installation.

I assume that the Raspberry Pi 4B is installed inside the case and
piCorePlayer (7.x) is installed. Also you know the IP-address or the
name of this Pi.

For the first step we need to login to the Pi via ssh. This can be done
on the Mac with the normal Terminal.app or on a Windows PC with eg.
putty. I will describe her only the way to get to the Pi for a Mac.
So start the Terminal.app, then input:

Code:
--------------------
    ssh tc@<IP or name of the Pi>
--------------------
 (without the "<" and ">"!)
You will then be asked for the password of the user "tc" which is
"piCore" if you didn't change it.

Then we create the daemon file which is later used to watch for the
temperature and for the Power button presses:

Code:
--------------------
    vi argononed.py
--------------------

Once it is started (you see only a few lines with "~" and at the end the
filename and a few other things) you press "i".

Then you change back to this browserwindow and select the text of the
following python file:

Code:
--------------------
    #!/usr/bin/python
  import smbus
  import RPi.GPIO as GPIO
  import os
  import time
  from threading import Thread
  rev = GPIO.RPI_REVISION
  if rev == 2 or rev == 3:
        bus = smbus.SMBus(1)
  else:
        bus = smbus.SMBus(0)
  GPIO.setwarnings(False)
  GPIO.setmode(GPIO.BCM)
  shutdown_pin=4
  GPIO.setup(shutdown_pin, GPIO.IN,  pull_up_down=GPIO.PUD_DOWN)
  def shutdown_check():
        while True:
                pulsetime = 1
                GPIO.wait_for_edge(shutdown_pin, GPIO.RISING)
                time.sleep(0.01)
                while GPIO.input(shutdown_pin) == GPIO.HIGH:
                        time.sleep(0.01)
                        pulsetime += 1
                if pulsetime >=2 and pulsetime <=3:
                        os.system("pcp rb")
                elif pulsetime >=4 and pulsetime <=5:
                        os.system("pcp sd")
  def get_fanspeed(tempval, configlist):
        for curconfig in configlist:
                curpair = curconfig.split("=")
                tempcfg = float(curpair[0])
                fancfg = int(float(curpair[1]))
                if tempval >= tempcfg:
                        return fancfg
        return 0
  def load_config(fname):
        newconfig = []
        try:
                with open(fname, "r") as fp:
                        for curline in fp:
                                if not curline:
                                        continue
                                tmpline = curline.strip()
                                if not tmpline:
                                        continue
                                if tmpline[0] == "#":
                                        continue
                                tmppair = tmpline.split("=")
                                if len(tmppair) != 2:
                                        continue
                                tempval = 0
                                fanval = 0
                                try:
                                        tempval = float(tmppair[0])
                                        if tempval < 0 or tempval > 100:
                                                continue
                                except:
                                        continue
                                try:
                                        fanval = int(float(tmppair[1]))
                                        if fanval < 0 or fanval > 100:
                                                continue
                                except:
                                        continue
                                newconfig.append( 
"{:5.1f}={}".format(tempval,fanval))
                if len(newconfig) > 0:
                        newconfig.sort(reverse=True)
        except:
                return []
        return newconfig
  def temp_check():
        fanconfig = ["65=100", "60=55", "57=30", "55=10", "30=0"]
        tmpconfig = load_config("etc/argononed.conf")
        if len(tmpconfig) > 0:
                fanconfig = tmpconfig
        address=0x1a
        prevblock=0
        while True:
                temp = os.popen("vcgencmd measure_temp").readline()
                temp = temp.replace("temp=","")
                val = float(temp.replace("'C",""))
                block = get_fanspeed(val, fanconfig)
                if block < prevblock:
                        time.sleep(30)
                prevblock = block
                try:
                        bus.write_byte(address,block)
                except IOError:
                        temp=""
                time.sleep(30)
  try:
        t1 = Thread(target = shutdown_check)
        t2 = Thread(target = temp_check)
        t1.start()
        t2.start()
  except:       
        t1.stop()
        t2.stop()
        GPIO.cleanup()
  
--------------------

Then you press "Command-C" (on the PC it would be "Control-C") and
change back to the Terminal.app window.
There you simply press "Command-V" (on the PC it would be "Control-V").
Now you should see the python file inside your editor.
Now press "ESC", then ":wq"
You can now close the Terminal.app, as you have done everything that is
needed to be done on the shell.

If you want you can change the temperatures and the corresponding
percent values of the fan in the following line of the python-script:

Code:
--------------------
    fanconfig = ["65=100", "60=55", "57=30", "55=10", "30=0"]
--------------------

You have there the temperature in °C and after the "=" the percent value
of the fan. You can experiment with them.

Now all other things have to be done in a browser, so open one and
input:

Code:
--------------------
    http://<IP or name of your Pi>
--------------------
 (without the "<" and ">"!)

On the piCorePlayer page chose "Main":
32766

At the bottom of the page chose "Beta":
32768

Then chose "Extensions":
32767

On the following page wait until all the five green checkmarks appear
and then chose "Available":
32769

There you have to chose first:
i2c-tools.tcz
then press on "Load", then you have to chose:
python3.8-rpi-gpio.tcz
then press "Load" again, then you have to chose:
python3.8-smbus.tcz
then press "Load" again.

Then you have to chose "Tweaks" at the top:
32770

On that page input the following "User Commands" into the appropriate
fields:

Code:
--------------------
    User Command #1: sudo modprobe i2c-dev
  User Command #2: python3 /home/tc/argononed.py
--------------------

And now press "Save". (I had a picture of that too, but I can only use
five pictures per message!)

Now "Reboot" via the Main page and now everything should be working:
Short press (ca. 3 seconds) of the Power button: shutdown
Double press of the Power button: reboot
Long press of the Power button: hard switching the Pi off

The fan should be working also, when the temperature reaches the values
of the table in the python script.


+-------------------------------------------------------------------+
|Filename: Schritt 3.png                                            |
|Download: http://forums.slimdevices.com/attachment.php?attachmentid=32770|
+-------------------------------------------------------------------+


pi4 4gb picoreplayer with lms and squeezelite for usb
pi3b+ (7\" display, hifiberry dac+ pro) picoreplayer with
squeezlite/jivelite for hifiberry and bluetooth headphone
two airport express
ikea symfonisk
------------------------------------------------------------------------
carsten_h's Profile: http://forums.slimdevices.com/member.php?userid=69113
View this thread: http://forums.slimdevices.com/showthread.php?t=113575

_______________________________________________
unix mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/unix

Reply via email to