Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Define function snore()
- snore()
- {
- local IFS
- [[ -n "${_snore_fd:-}" ]] || { exec {_snore_fd}<> <(:) && read -r -t 0 -u $_snore_fd; } 2>/dev/null ||
- {
- # workaround for MacOS and similar systems
- local fifo
- fifo=$(mktemp -u)
- mkfifo -m 700 "$fifo"
- exec {_snore_fd}<>"$fifo"
- rm "$fifo"
- }
- read ${1:+-t "$1"} -u $_snore_fd || :
- }
- # Define delimter as comma for brightnessctl -m list
- IFS=","
- #echo "New IFS is $IFS"
- # Define hundred variable
- hun=100
- # Define highest illuminance sensor value expected
- imax=3355
- # Define top of linear slope: illuminance values above this amount will all be treated as go to full brightness
- ipeak=100
- # Define starting manual adjustment value
- madj=0
- # Get initial brightness value
- bctl=$(brightnessctl -m)
- set -- $bctl
- blast=$3
- # Main Loop
- while true
- do
- iraw=$(cat /sys/bus/iio/devices/iio:device0/in_illuminance_raw)
- #echo "iraw is $iraw"
- bctl=$(brightnessctl -m)
- set -- $bctl
- #echo $bctl
- #echo $3
- braw=$3
- #echo "braw is $braw"
- #echo $4
- bpct="${4//%}"
- #echo "bpct is $bpct"
- #echo $5
- bmax=$5
- #echo "Calculating bdiff from $braw and $blast"
- bdiff=$((braw - blast))
- #echo "bdiff is $bdiff"
- if [ "$bdiff" -ne "0" ]
- then
- #echo "Need to adjust ipeak.."
- #echo "ipeak is $ipeak"
- ipeak=$(( ipeak - ( bdiff * 100 / bmax ) ))
- if (( $(bc -l <<< "${ipeak/e/E} < 0") ))
- then
- ipeak=1
- fi
- #echo "ipeak changed to $ipeak"
- fi
- blast=$braw
- #echo $bctl
- #echo $3
- btarget=$((iraw * bmax / ipeak))
- #echo "btarget is $btarget"
- bstep=$(( (btarget-blast) / 10))
- if (( $(bc -l <<< "${bstep/e/E} > $bmax/100") ))
- then
- bstep=$(( bmax / 100 ))
- fi
- #echo "bstep is $bstep"
- bnext=$(( braw + bstep ))
- if [ $bnext -gt $bmax ]; then
- #echo "Bnext too high!, setting to $bmax"
- bnext=$bmax
- bstep=0
- #echo "Bnext is $bnext"
- fi
- brightnessctl -q set $bnext
- # Save last brightness value to compare against in next loop
- #bctl=$(brightnessctl -m)
- #set -- $bctl
- #echo $bctl
- #echo $3
- #braw=$3
- #echo "new braw is $braw"
- blast=$bnext
- #echo "blast is $blast"
- #Variable update amount based on last movement
- ssec=$(( 200 / ( 100 + ${bstep//-} ) ))
- #echo "initial ssec is $ssec"
- if (( $(bc -l <<< "${ssec/e/E} > 2") ))
- then
- ssec=2
- fi
- if (( $(bc -l <<< "${ssec/e/E} < .01") ))
- then
- ssec=.01
- fi
- #echo "ssec is now $ssec"
- #echo "------------SLEEPING----------"
- #ssec=1
- #sleep $ssec
- snore $ssec
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement