Commit 0ea3ebfc authored by Igor Pecovnik's avatar Igor Pecovnik
Browse files

soc temp daemon, pir sensor add gpio input to userspace

parent bf19661f
......@@ -91,6 +91,14 @@ debconf-apt-progress -- apt-get -y install rpimonitor
# add my own configuration which is not default
cd /etc/rpimonitor
wget https://github.com/igorpecovnik/Debian-micro-home-server/blob/next/src/rpimonitor-myconfig.tgz?raw=true -O - | tar -xz
cd /usr/local/bin
wget https://github.com/igorpecovnik/Debian-micro-home-server/blob/next/src/temp-pir-daemon.sh?raw=true
chmod +x /usr/local/bin/temp-pir-daemon.sh
sed -e 's/exit 0//g' -i /etc/rc.local
cat >> /etc/rc.local <<"EOF"
nohup /usr/local/bin/temp-daemon.sh &
exit 0
EOF
service rpimonitor restart
}
......
#!/bin/bash
#
# SoC/HDD temperature daemon. Writes the current temperatures to
# /run/soc-temp and /run/hdd-temp (since we're experiencing always
# timeouts under heavy load when trying to get the temperatures
# directly from within RPi-Monitor.
Main() {
# SoCTempAdjustment is needed because the A20 SoC delivers uncalibrated temp values
SoCTempAdjustment=1447
# ensure module sunxi-dbgreg.ko is loaded
grep -q sunxi_dbgreg </proc/modules || ( modprobe sunxi-dbgreg ; sleep 0.1 )
# open GPIO22, PIR sensor
echo 22 > /sys/class/gpio/export
# prepare registers
echo 'f1c25000:27003f' > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write;
echo 'f1c25010:40000' > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write;
echo 'f1c25018:10fff' > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write;
echo 'f1c25004:10' > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write;
while [ 2 -ge 1 ]; do
# let the value be written to syslog
echo 'f1c25020' > /sys/devices/virtual/misc/sunxi-dbgreg/rw/read;
# wait 0.1 seconds
sleep 0.1
# read return value from syslog and transform it into degrees Celsius
HexVal=$(tail /var/log/syslog | awk -F" 0x" '/ 0x/ {print $2}' | tail -n1 )
SoCTemp=$(echo $(( 0x${HexVal} - ${SoCTempAdjustment} )) | awk '{printf ("%0.1f",$1/10); }')
if [ "X${SoCTemp}" != "X" ]; then
echo -n ${SoCTemp} >/run/soc-temp
fi
# HDD/SSD temp
DiskTemp=$(hddtemp -n /dev/sda)
if [ "X${DiskTemp}" != "X" ]; then
echo -n ${DiskTemp} >/run/hdd-temp
fi
# sleep 5 secs
sleep 5
done
} # Main
Main
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment