Sleepmon gnuplot graphing
[mirrors/Programs.git] / c / goertzel / sleepmon.sh
1 #!/bin/sh
2 # Simple sleep monitor (Harvie 2012)
3 #
4 # You probably have soundcard with one output and input
5 # Take PIR motion sensor from security system
6 # Use PIR to switch connection between left channels of output and input (tips of 3.5mm jacks)
7 # Connect grounds of these two together (maybe you will not need it - depending on your soundcard)
8 # Power up PIR
9 # Launch this script
10 # Use alsamixer and some GUI recorder (like audacity) to tune volume to some usable level
11 # Place PIR facing to your bed and go sleep
12 # Wake up
13 # Enjoy your data
14
15
16 out=/tmp/sleeplog-"$(date +%F_%T)".txt
17 speaker-test -t sine &>/dev/null &
18 tresh=10
19 lastdate=0
20 screen=false
21 while getopts "s" OPT; do
22 test "$OPT" == 's' && screen=true;
23 done
24 echo "Writing to file: $out";
25 arecord | ./goertzel -n i -q -l c -t $tresh -d 4 | while read line; do
26 date="$(date +%s)"
27 time="$(echo "$line" | cut -f 1)"
28 level="$(echo "$line" | cut -f 2)"
29 echo -ne "$time\t$date\t$(date '+%F%t%T')\t"
30 test "$level" -gt "$tresh" && {
31 echo -n "0 Nothing detected...";
32 $screen && xset dpms force off || true;
33 } || {
34 echo -n "1 Motion detected!!!!";
35 $screen && xset dpms force on;
36 }
37 test "$lastdate" != 0 && {
38 after=$(( $date - $lastdate))
39 echo -ne "\t$level After $after secs";
40 }
41 echo;
42 ./sleepplot.sh "$out" &>/dev/null;
43 lastdate="$date";
44 done | tee "$out"
45 kill $!
46 echo
47 echo "Your file: $out"
This page took 0.256894 seconds and 4 git commands to generate.