#!/bin/bash
#                           sudo systemctl start ruuvicollector
cd "${0%/*}"; pwd
logger -p daemon.notice " ++ /lib/systemd/system/ruuvicollector.service:ExecStart=/home/pi/RuuviCollector/RuuviCollector pwd=$PWD"
#                               Restart=always;RestartSec=300. <- This causes systemd to restart this script incase it fails so ...
# To disable RuuviCollector:  edit this script:  change  echo and logger to say NOT start and uncomment out the exit 0
#                             then  sudo systemctl stop ruuvicollector
echo                      ++ Did start /home/pi/RuuviCollector/RuuviCollector
logger -p daemon.notice " ++ Did start /home/pi/RuuviCollector/RuuviCollector"
#exit 0

########### wait until influxdb is ready by issuing a simple select  #####################
for(( i=1; i<30; i++ )) # wait  19+5 * 30  = 12 minutes  before giving up
do
# It may take 27 seconds if influxdb is running #  1/14/19 on Raspberry Pi Zero took 11 minutes before influx was ready accept a connection
# It takes 19 seconds to timeout if influxdb is not even running  $? = 1 ALL CPU BOUND!!
# If influxdb is not ready influx select outputs:
#       Failed to connect to http://localhost:8086: Get http://localhost:8086/ping: dial tcp [::1]:8086: connect: connection refused
#       Please check your connection settings and ensure 'influxd' is running.
#### startupQuery.sh contains:
#### curl --silent --show-error --connect-timeout 6 --get 'http://pi93graf:8086/query?' --data-urlencode "db=ruuvi" --data-urlencode "q=SELECT mac,32+last(temperature)*9/5 FROM ruuvi_measurements group by mac tz('America/New_York') "  |\
#### sed "s/name.:.ruuvi_measurements.,.tags./  \\n/g; s/.columns.:..time.,.mac.,.//g;   s/.......-..:..//g"
######

/home/pi/RuuviCollector/startupQuery.sh
rc=$?

if [ $rc -eq 0 ] ; then logger --priority daemon.info "++ ruuvicollector: influxdb now accepting transactions"; break; # loop and go
     else               logger --priority daemon.info "++ ruuvicollector waited for influxdb $i times, rc=$rc and still waiting"
                        sleep 5
fi

done
if [ $rc -ne 0 ] ; then  logger --priority daemon.emerg "++ ruuvicollector gave up waiting for influxdb"; exit $rc; fi
#############################################################################################
#  Since  sudo systemctl stop ruuvicollector issues  TERM ; trap that here to generate log entry
trap 'logger --priority daemon.alert " ++ /home/pi/RuuviCollector got sig TERM" ;exit 15' TERM # will exit with x'80' + 15 i.e.143
trap 'logger --priority daemon.emerg " ++ /home/pi/RuuviCollector got sig QUIT" ;exit  3' QUIT

java -jar target/ruuvi-collector-0.2.5.jar

logger -p daemon.notice " ++ /home/pi/RuuviCollector/RuuviCollector exited with rc=$?"

# if influxdb stops (you stop/restart it) this script will get a TERM since
# /etc/systemd/system/ruuvicollector.service.requires/influxdb.service
# That's OK since       /etc/systemd/system/multi-user.target.wants/ruuvicollector.service contains:
# Restart=always
# RestartSec=300


#/*
