--- /dev/null
+#!/bin/bash
+INFLUX_HOST="http://cns-master:8086"
+HOSTNAME="`hostname`"
+LOCATION="bedroom"
+AUDIODEVICE=hw:1
+
+echo "Started at: `date`"
+
+log_audio()
+{
+ if [ ! -z "`ps -ef | grep rec | grep -v grep`" ]; then
+ return
+ fi
+ now="`date +%s`"
+ end="`expr $now + 55`"
+ export AUDIODRIVER=alsa
+ export AUDIODEV=${AUDIODEVICE}
+ while [ "`date +%s`" -le "$end" ]; do
+ line="`rec -n stat trim 0 1 2>&1 | awk '{print $1"_"$2 $3}' | grep ":" | tail -15 | tr '\n' ',' | sed 's/,$//g' | tr ':' '='`"
+ curl --silent -i -XPOST ${INFLUX_HOST}/write?db=motion --data-binary "motion,hostname=${HOSTNAME},type=audio $line" >/dev/null
+ done
+ echo "AUDIO DONE"
+ date +%s
+}
+
+log_bme()
+{
+#set -x
+ bme="`/home/pi/monitoring/bme680 | awk \
+ 'BEGIN { count=0; tmp=0; prs=0; hum=0; voc=0; }
+ /^[0-9]/ {count++; tmp+=$4; prs+=$7; hum+=$10; vocs+=$13}
+ END {print "temperature="(tmp/count)",pressure="(prs/count)",humidity="(hum/count)",vocs="(vocs/count)}' |\
+ sed 's/temperature=0.00,//g'`"
+
+ echo "bme: $bme"
+ curl --silent -i -XPOST ${INFLUX_HOST}/write?db=environment --data-binary "atmosphere,hostname=${HOSTNAME},sensor=bme680 $bme" 2>/dev/null
+}
+
+log_scd()
+{
+ ppmco2="`cat /run/sensors/scd30/last | grep CO2 | cut -d' ' -f2`"
+ temp="`cat /run/sensors/scd30/last | grep degC | cut -d' ' -f2`"
+ hum="`cat /run/sensors/scd30/last | grep humidity | cut -d' ' -f2`"
+
+ curl --silent -i -XPOST ${INFLUX_HOST}/write?db=environment --data-binary "atmosphere,hostname=${HOSTNAME},sensor=scd30 ppmco2=$ppmco2,temperature=$temp,humidity=$hum" 2>/dev/null
+}
+
+log_df()
+{
+ df | sed 's/%//g' | awk '{if(a[1] == "") {for(i=1;i<NF;i++){a[i]=$i}} else {printf a[NF]"="$NF",";for(i=1;i<NF;i++){printf a[i]"="$i","} print ""}}' | sed 's/,$//g' | sed 's/\(,[^,]*\),/\1 /' | while read line; do
+ curl --silent -i -XPOST ${INFLUX_HOST}/write?db=sysmon --data-binary "sysmon,hostname=${HOSTNAME},$line" >/dev/null
+ done
+}
+
+log_vm()
+{
+ line="`vmstat | grep -v '-' | awk '{if(a[1] == "") {for(i=1;i<NF;i++){a[i]=$i}} else {for(i=1;i<NF;i++){printf a[i]"="$i","} print ""}}' | sed 's/,$//g'`"
+ mempct="`free | grep "^Mem" | awk '{printf "%0.2f",(\$3/\$2)}'`"
+ curl --silent -i -XPOST ${INFLUX_HOST}/write?db=sysmon --data-binary "sysmon,hostname=${HOSTNAME} $line,mempct=$mempct" >/dev/null
+}
+
+log_sess()
+{
+ who -uH | \
+ sed 's/\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\) /\1@/g' | \
+ awk 'BEGIN{a[1]=""}{if(a[1]==""){for(i=1;i<=NF;i++){a[i]=$i}}else{for(i=1;i<=NF;i++){printf a[i] "=" $i ","}}print"\n"}' | \
+ grep -v '^$' | sed 's/IDLE=[.]/IDLE=0:0/g' | \
+ sed 's/COMMENT=(/COMMENT=/g' | sed 's/),$//g' | \
+ sed 's/IDLE=old/IDLE=99:00/g' | sed 's/TIME=/LOGIN_TIME=/g' | \
+ while read line; do
+ # Convert time field to seconds
+ time="`echo "$line" | tr '@' ' ' | cut -d',' -f3 | cut -d'=' -f2`"
+ seconds=`date -d "$time" +%s`
+ line="`echo "$line" | sed "s/TIME=[^,]*,/TIME=${seconds},/g"`"
+
+ # Quote string fields
+ #line="`echo "$line" | sed 's/=\([^,]*\),/="\1",/g' | sed 's/="\([0-9.-]*\)",/=\1,/g'`"
+
+ # Make EVERYTHING a tag so we can group on it...
+ line="`echo "$line" | sed 's/\(.*\)\(LOGIN_TIME=[^,]*\),\(.*\)/\1\3 \2/g'`"
+
+ curl --silent -i -XPOST ${INFLUX_HOST}/write?db=sysmon --data-binary "users,hostname=${HOSTNAME},$line" >/dev/null
+ done
+}
+
+log_pir()
+{
+ pir=`cat /sys/class/gpio/gpio12/value`
+ curl --silent -i -XPOST ${INFLUX_HOST}/write?db=security --data-binary "sensors,type=pir,location=${LOCATION},hostname=${HOSTNAME} value=$pir"
+}
+
+start=`date +%s`
+stop="`expr $start + 50`"
+date +%s
+log_audio &
+while [ "`date +%s`" -lt "$stop" ]; do
+ log_scd
+ log_bme
+ log_df
+ log_vm
+ log_sess
+ log_pir
+ sleep 25
+done