
#!/bin/sh
# File	: log_bmp180-data.sh
# By	: MaartenDeBoer.nl, 161018
# Subject	: Script to log the BMP180-data to file / direct to Graphite
#(0.2),191230	: Add RCFILE, mod FILEname
#(0.3),191230	: Added DATANAS (NOT ready, yet)
#(0.4),191231	:"Added mail
PGM="`basename $0|cut -d\. -f1`"
VER="0.4"
HOSTNAME="`hostname |cut -d\. -f1`" 
DATADIR="${HOME}/data"
RCFILE=${HOME}/etc/${PGM}.rc

#GRAPHITEHOST="mentrix.fritz.box 2003"
GRAPHITEHOST="192.168.178.7 2003"
GROUPNAME="nl"
PARTNAME="bmp180"
# echo "domotica.nl.${HOSTNAME}.${PARTNAME}.temp ${VAL1} ${EPOCH}"|nc nestorix.fritz.box 2003 
FILE=""
GRAPHITE=""

DATANASIP="192.168.178.11"
NASDIR="/Volume_1"
MNTDIR="/mnt/nas"

MAIL=""
MAILTO="maarten@agrarix.net"
MAILSUBJ="templog: ${HOSTNAME}"

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "Options              : "
  echo "     -h              : This help"
  echo "     -v              : Verbose"
  echo "     -V              : Version"
  echo "     -f | --file     : to File"
  echo "     -g | --graphite : to File"
  echo "     -m | --mail     : to File"
}

while [ ${#} -gt 0 ]
do
  case "${1}" in
    '-h')  USAGE; exit 1 ;;
    '-x')  set -x ;;
    '-V')  echo "Version=${VER}"; exit 1 ;;
    '-f' | '--file') FILE=1 ;;
    '-g' | '--graphite') GRAPHITE=1 ;;
    '-m' | '--mail') MAIL=1 ;;
    *) echo "Option ${1} not found." ; USAGE; exit 1 ;;
  esac
  shift
done
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Reading ..."
  . ${RCFILE}
fi  # RCFILE

echo "DATADIR=${DATADIR}"
echo "DATAFILE=${DATAFILE}"
echo "DATANASIP=${DATANASIP}"
echo "FILE=${FILE}"
echo "GRAPHITE=${GRAPHITE}"
echo "GRAPHITEHOST=${GRAPHITEHOST}"
echo "GROUPNAME=${GROUPNAME}"
echo "PGM=${PGM}"
echo "RCFILE=${RCFILE}"
echo "VER=${VER}"
sleep 1

# Get the BMP180-data
TEMP="`sudo python ${HOME}/bin/bmp180.py|grep Temperature|cut -d\: -f2|sed 's/C//'`"
PRES="`sudo python ${HOME}/bin/bmp180.py|grep Pressure|cut -d\: -f2|sed 's/mbar//'`"
VAL="`echo "${LOGMSG}"|awk -F\; '{print $2}'`"

EPOCH="`date +%s`"
LOGMSG="`date +%Y-%m-%d' '%H:%M:%S`;${TEMP};${PRES};"
echo "${LOGMSG}"

if [ ${FILE} ]; then
# Filename: system-<group>|nl-<hostname>-load_<date>.csv
#  echo "domotica.${GROUPNAME}.${HOSTNAME}.${PARTNAME}.pressure ${VAL} ${EPOCH}"|nc ${GRAPHITEHOST}
  DATAFILE="${DATADIR}/domotica-${GROUPNAME}-${HOSTNAME}-${PARTNAME}-data_`date +%Y-%m-%d`.csv"
  echo "  DATAFILE=${DATAFILE}"

# If DATADIR does not exist, create this dir
  if [ ! -d ${DATADIR} ]; then
    mkdir -p ${DATADIR}
  fi  # DATADIR

# If file does not exist, create by adding header
  if [ ! -f ${DATAFILE} ]; then
    echo "# Date time;hostname;bmp180-temp;bmp180-pres;" > ${DATAFILE}
  fi  # DATAFILE

  echo "${LOGMSG}"|tee -a ${DATAFILE}

#  if [ "${DATANASIP}" != "" ]; then
#    ping -c 1 ${DATANASIP} 
#    EC=${?}
#    if [ ${EC} -eq 0 ]; then
#      echo "NAS (${DATANASIP}) available"
#      sudo mount //${DATANASIP}/${NASDIR} ${MNTDIR}
#      if [ -d ${MNTDIR} ]; then
#        echo "${MNTDIR} available"
#      fi  # MNTDIR
#    fi  # EC
#  fi  # DATANASIP

fi  #  FILE

if [ ${GRAPHITE} ]; then
  type nc
  EC=${?}
  if [ ${EC} -gt 0 ]; then
    echo "  NO nc found. Exiting ..."
    exit 2
  fi  # EC
  echo -n " (${EPOCH}) ${VAL} "
  VAL="`echo "${LOGMSG}"|awk -F\; '{print $2}'`"
  echo "domotica.${GROUPNAME}.${HOSTNAME}.${PARTNAME}.temp ${VAL} ${EPOCH}"|nc ${GRAPHITEHOST}
  VAL="`echo "${LOGMSG}"|awk -F\; '{print $3}'`"
  echo -n " (${EPOCH}) ${VAL} "
  echo "domotica.${GROUPNAME}.${HOSTNAME}.${PARTNAME}.pressure ${VAL} ${EPOCH}"|nc ${GRAPHITEHOST}
fi  # GRAPHITE

if [ ${MAIL} ] && [ "${MAILTO}" != "" ]; then
  VAL="`echo "${LOGMSG}"|awk -F\; '{print $2}'`"
  MAILSUBJ="templog:${HOSTNAME}=${VAL}"
# If DATAFILE, then Attach (-A) to mail
  if [ "${DATAFILE}" != "" ] && [ -f ${DATAFILE} ]; then
    echo "domotica.${GROUPNAME}.${HOSTNAME}.${PARTNAME}.temp ${VAL} ${EPOCH}"| mailx -s "${MAILSUBJ}" -A ${DATAFILE} ${MAILTO} 
    echo "  Mailed ($MAILSUBJ) with (-A) ${DATAFILE} to ${MAILTO}"
  else
    echo "domotica.${GROUPNAME}.${HOSTNAME}.${PARTNAME}.temp ${VAL} ${EPOCH}"| mailx -s "${MAILSUBJ}" ${MAILTO} 
    echo "  Mailed ($MAILSUBJ) to ${MAILTO}"
  fi  # -f DATAFILE
fi  # MAIL

exit 0

