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