nyni funguje i v shellu s aktivnim set -u
[mirrors/Programs.git] / c / goertzel / sleepmon.sh
index f4685dc7be3fb36a26f28a27166ee6ecd875dd61..cfa02973e5144863ac161dc9f38d5f857c6225c6 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 # Simple sleep monitor (Harvie 2012)
 #
 # You probably have soundcard with one output and input
 
 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 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 && {
This page took 0.25771 seconds and 4 git commands to generate.