Skip to content

Instantly share code, notes, and snippets.

@cgarz
Created November 8, 2020 17:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cgarz/7fcf016262efa4f77e9f3c883449da7c to your computer and use it in GitHub Desktop.
Save cgarz/7fcf016262efa4f77e9f3c883449da7c to your computer and use it in GitHub Desktop.
A hacky Termux bash script that uses the accelerometer to make an alarm that fires when the phone changes orientation.
#!/data/data/com.termux/files/usr/bin/bash
echo "getting wake lock state"
termux-notification-list | jq -r '.[] | select(.id == 1337).content' | grep -qF 'wake lock held' && locked="true" || locked="false"
if [ "$locked" = "false" ]; then
echo "wake lock not set, setting for duration of script"
termux-wake-lock
else
echo "wake lock set, Will not alter wake lock state."
fi
limit=4
echo "put phone to rest within 5 sec"
sleep 5
echo "getting initial values."
old_x=$(termux-sensor -n1 -s "BMI160 Accelerometer" | jq -r '.[].values[0]')
old_y=$(termux-sensor -n1 -s "BMI160 Accelerometer" | jq -r '.[].values[1]')
old_z=$(termux-sensor -n1 -s "BMI160 Accelerometer" | jq -r '.[].values[2]')
echo "values set. Watching for deviation."
while :; do
x=$(termux-sensor -n1 -s "BMI160 Accelerometer" | jq -r '.[].values[0]')
y=$(termux-sensor -n1 -s "BMI160 Accelerometer" | jq -r '.[].values[1]')
z=$(termux-sensor -n1 -s "BMI160 Accelerometer" | jq -r '.[].values[2]')
(( $(bc -l <<< "x=(${old_x} - ${x}); if ( x < 0) x = -x; x > ${limit}") )) && break
(( $(bc -l <<< "y=(${old_y} - ${y}); if ( y < 0) y = -y; y > ${limit}") )) && break
(( $(bc -l <<< "z=(${old_z} - ${z}); if ( z < 0) z = -z; z > ${limit}") )) && break
sleep 0.5
done
echo "Limit surpassed. Beginning vibration. Press any key to quit."
while :; do
termux-vibrate -fd 1000
read -s -t 1.1 -n 1 && break
done
[ "$locked" = "false" ] && termux-wake-unlock && echo "wake lock disabled"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment