X-Git-Url: http://git.harvie.cz/?a=blobdiff_plain;f=c%2Fgoertzel%2Fsleepmon.sh;h=cfa02973e5144863ac161dc9f38d5f857c6225c6;hb=86166123aef3c81e6e05cd6dcdc73ea93b5775a1;hp=60deb35826efd223c3775fc8ea808023da641b0e;hpb=6e6479ce54fab9f843d8cb2d620460b848b84be6;p=mirrors%2FPrograms.git diff --git a/c/goertzel/sleepmon.sh b/c/goertzel/sleepmon.sh index 60deb35..cfa0297 100755 --- a/c/goertzel/sleepmon.sh +++ b/c/goertzel/sleepmon.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Simple sleep monitor (Harvie 2012) # # You probably have soundcard with one output and input @@ -14,17 +14,22 @@ out=/tmp/sleeplog-"$(date +%F_%T)".txt graphout="${out%%.*}.png" + +killall speaker-test &>/dev/null speaker-test -t sine &>/dev/null & -pid_test=$! + +touch "$out" +bash ./sleepstats.sh "$out" &>/dev/null & + tresh=10 lastdate="$(date +%s)" -laststate=0 -history=''; -historymax=120; -historylen='10 30 60 90 120' screen=false graph=false +export LC_ALL=C + +#trap 'kill -9 $(jobs -p);' SIGINT + while getopts "sg" OPT; do test "$OPT" == 's' && screen=true; test "$OPT" == 'g' && graph=true; @@ -41,21 +46,11 @@ arecord | ./goertzel -n i -q -l c -t $tresh -d 4 | while read line; do $state && statenum=1 || statenum=0; $state && statename='MOTION!' || statename='Nothing'; - echo -ne "$time\t$date $(date '+%F %T') $statenum" - - #History - after=$(( $date - $lastdate)) - test $historymax -gt 0 && { - history=$(echo -n "$(yes | tr '\ny' $laststate | head -c $after)$history" | head -c $historymax) - for len in $historylen; do - on="$(echo -n ${history::$len} | tr -d 0 | wc -c)" - on="$(echo "scale=2; $on/$len" | bc)" - LC_ALL=C printf " %.2f" "$on" - done - } + printf "%.2f\t %s %s %d" "$time" "$date" "$(date '+%F %T')" "$statenum" #Debug - echo -e "\t($statename $level After $after secs)"; + after=$(( $date - $lastdate)) + printf " (%s %3d After %4d secs)\n" "$statename" "$level" "$after"; #Fun with values $state && { @@ -67,9 +62,8 @@ arecord | ./goertzel -n i -q -l c -t $tresh -d 4 | while read line; do #Prepare invariants for next round lastdate="$date"; - laststate="$statenum"; done | tee "$out" -kill $pid_test; sleep 0.2 +kill $(jobs -p); sleep 0.2 echo echo "Your log: $out" $graph && {