Difference between revisions of "Hive.sh"

From HiveTool
Jump to: navigation, search
Line 9: Line 9:
 
exec >>/home/hivetool/hivetool.log 2>&1
 
exec >>/home/hivetool/hivetool.log 2>&1
  
 +
# get the hostname
 
HOST=`hostname`
 
HOST=`hostname`
  
 +
# and the date
 
DATE=`date +"%Y/%m/%d %H:%M:%S"`
 
DATE=`date +"%Y/%m/%d %H:%M:%S"`
  
 
#
 
#
 
# Adam Equipment CPWplus scale
 
# Adam Equipment CPWplus scale
# send the Gross command
+
# send the Net command
 
# and read it with a 3 second timeout
 
# and read it with a 3 second timeout
#SCALE=0
 
#echo "G\r\n" > /dev/ttyS0
 
#read -t 3 SCALE < /dev/ttyS0
 
  
 
while [[ ! $SCALE ]]
 
while [[ ! $SCALE ]]
Line 30: Line 29:
 
echo "scale: $SCALE\n"
 
echo "scale: $SCALE\n"
  
                                                                                                                                                                                   
+
#
 +
# Read the TEMPerHUM sensor
 +
#                                                                                                                                                                                   
 +
 
 
DATA_GOOD=0
 
DATA_GOOD=0
 
COUNTER=1
 
COUNTER=1
Line 66: Line 68:
 
#  
 
#  
 
# get the local weather
 
# get the local weather
 
+
#
 
curl --retry 5 -s http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KGADILLA1 > /tmp/wx.xml
 
curl --retry 5 -s http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KGADILLA1 > /tmp/wx.xml
 
temp_f=`grep temp_f /tmp/wx.xml | grep  -o "[0-9]*\.[0-9]*"`
 
temp_f=`grep temp_f /tmp/wx.xml | grep  -o "[0-9]*\.[0-9]*"`
Line 94: Line 96:
 
AMBIENT=$temp_c
 
AMBIENT=$temp_c
  
 +
#
 +
# create hive.xml to send to the database
 +
#
 
echo "<hive_data>" > /tmp/hive.xml
 
echo "<hive_data>" > /tmp/hive.xml
 
source /home/hivetool/xml.sh >> /tmp/hive.xml
 
source /home/hivetool/xml.sh >> /tmp/hive.xml
 
cat /tmp/wx.xml|grep -v "xml" >> /tmp/hive.xml
 
cat /tmp/wx.xml|grep -v "xml" >> /tmp/hive.xml
 
echo "</hive_data>" >> /tmp/hive.xml
 
echo "</hive_data>" >> /tmp/hive.xml
+
 
 +
#
 
# Write everything to the log file
 
# Write everything to the log file
 +
#
 
echo -ne "\n"$DATE $SCALE $TEMP $AMBIENT $temp_f $wind_dir $wind_mph $wind_gust_mph $dewpoint_f $relative_humidity $pressure_mb $solar_radiation $WX_EVAPOTRANSPIRATION $WX_VAPOR_PRESSURE $precip_today_in>> /home/hivetool/hive.log
 
echo -ne "\n"$DATE $SCALE $TEMP $AMBIENT $temp_f $wind_dir $wind_mph $wind_gust_mph $dewpoint_f $relative_humidity $pressure_mb $solar_radiation $WX_EVAPOTRANSPIRATION $WX_VAPOR_PRESSURE $precip_today_in>> /home/hivetool/hive.log
  
 +
#
 
#run the graphing program to create index.html and hive_graph.gif
 
#run the graphing program to create index.html and hive_graph.gif
 +
#
 
/var/www/htdocs/graph_hive.pl
 
/var/www/htdocs/graph_hive.pl
  
 +
#
 
#send the data to hivetool
 
#send the data to hivetool
 +
#
 
curl --retry 5 -k -u user:password -X POST --data-binary @/tmp/hive.xml https://hivetool.org/private/test_xml4.pl  -H 'Accept: application/xml' -H 'Content-Type: application/xml'
 
curl --retry 5 -k -u user:password -X POST --data-binary @/tmp/hive.xml https://hivetool.org/private/test_xml4.pl  -H 'Accept: application/xml' -H 'Content-Type: application/xml'
 
</pre>
 
</pre>

Revision as of 19:33, 24 December 2013

hive.sh: bash script called by cron every 5 minutes. path: /home/hivetool/hive.sh

#!/bin/bash

# redirect stdout and stderr to logfile
rm /home/hivetool/hivetool.log
exec >>/home/hivetool/hivetool.log 2>&1

# get the hostname
HOST=`hostname`

# and the date
DATE=`date +"%Y/%m/%d %H:%M:%S"`

#
# Adam Equipment CPWplus scale
# send the Net command
# and read it with a 3 second timeout

while [[ ! $SCALE ]]
do
    echo -e -n "N\r\n" > /dev/ttyUSB0
    read -t 3 SCALE < /dev/ttyUSB0
    SCALE=`echo $SCALE | gawk --posix '/^\+ [0-9]{1,3}\.[0-9] lb$/'`
done

echo "scale: $SCALE\n"

#
# Read the TEMPerHUM sensor
#                                                                                                                                                                                    

DATA_GOOD=0
COUNTER=1
while [[  $COUNTER -lt 20 && $DATA_GOOD -eq 0 ]]; do
         DATE2=`date +"%Y/%m/%d %H:%M:%S"`
         TEMPerHUM=`/usr/local/bin/tempered /dev/hidraw1`
         echo -ne "$DATE2 $COUNTER $? $TEMPerHUM \n" >> /home/hivetool/tempered.log
         if [[ -n $TEMPerHUM ]]
         then
           HUMIDITY=`echo $TEMPerHUM | grep  -o "[0-9]*\.[0-9]\%" | grep -o "[0-9]*\.[0-9]"`
           TEMP=`echo $TEMPerHUM | grep  -o "temperature \-*[0-9]*\.[0-9]" | grep -o "\-*[0-9]*\.[0-9]"`
           if [[ $HUMIDITY ]]
           then
            DATA_GOOD=1
           fi
         fi
         let "COUNTER += 1"
         sleep 1
   done
echo $COUNTER $TEMP $HUMIDITY

if [[ $COUNTER -gt 19 ]]
then
  echo "$DATE2 ERROR reading /dev/hidraw1" >> /home/hivetool/error.log
fi

if test $COUNTER -gt 2
then
  echo "$DATE WARNING reading /dev/hidraw1: retried $COUNTER" >> /home/hivetool/error.log
fi

TEMP=`echo "scale=1; ($TEMP-1)" | bc`
TEMPF=`echo "scale=1; (($TEMP*9)/5)+32" | bc`

# 
# get the local weather
#
curl --retry 5 -s http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KGADILLA1 > /tmp/wx.xml
temp_f=`grep temp_f /tmp/wx.xml | grep  -o "[0-9]*\.[0-9]*"`
temp_c=`grep temp_c /tmp/wx.xml | grep  -o "[0-9]*\.[0-9]*"`
wind_dir=`grep wind_dir /tmp/wx.xml | grep -o "[A-Z]*"`
wind_mph=`grep wind_mph /tmp/wx.xml | grep  -o "[0-9]*\.[0-9]*"`
wind_gust_mph=`grep wind_gust_mph /tmp/wx.xml |  grep  -o "[0-9]*\.[0-9]*"`
pressure_mb=`grep pressure_mb /tmp/wx.xml |  grep  -o "[0-9]*\.[0-9]*"`
dewpoint_f=`grep dewpoint_f /tmp/wx.xml |  grep  -o "[0-9]*\.[0-9]*"`
#solar_radiation=`grep solar_radiation /tmp/wx.xml |  grep  -o "[0-9]*"`
precip_1hr_in=`grep precip_1hr_in /tmp/wx.xml |  grep  -o "[0-9]*\.[0-9]*"`
precip_today_in=`grep precip_today_in /tmp/wx.xml |  grep  -o "[0-9]*\.[0-9]*"`


xml_temp_f=`grep temp_f /tmp/wx.xml`
xml_temp_c=`grep temp_c /tmp/wx.xml`
xml_relative_humidity=`grep relative_humidity /tmp/wx.xml`
xml_wind_dir=`grep wind_dir /tmp/wx.xml`
xml_wind_mph=`grep wind_mph /tmp/wx.xml`
xml_wind_gust_mph=`grep wind_gust_mph /tmp/wx.xml`
xml_pressure_mb=`grep pressure_mb /tmp/wx.xml`
xml_dewpoint_f=`grep dewpoint_f /tmp/wx.xml`
#solar_radiation=`grep solar_radiation /tmp/wx.xml`
xml_precip_1hr_in=`grep precip_1hr_in /tmp/wx.xml`
xml_precip_today_in=`grep precip_today_in /tmp/wx.xml`

AMBIENT=$temp_c

#
# create hive.xml to send to the database
#
echo "<hive_data>" > /tmp/hive.xml
source /home/hivetool/xml.sh >> /tmp/hive.xml
cat /tmp/wx.xml|grep -v "xml" >> /tmp/hive.xml
echo "</hive_data>" >> /tmp/hive.xml

# 
# Write everything to the log file
#
echo -ne "\n"$DATE $SCALE $TEMP $AMBIENT $temp_f $wind_dir $wind_mph $wind_gust_mph $dewpoint_f $relative_humidity $pressure_mb $solar_radiation $WX_EVAPOTRANSPIRATION $WX_VAPOR_PRESSURE $precip_today_in>> /home/hivetool/hive.log

#
#run the graphing program to create index.html and hive_graph.gif
#
/var/www/htdocs/graph_hive.pl

#
#send the data to hivetool
#
curl --retry 5 -k -u user:password -X POST --data-binary @/tmp/hive.xml https://hivetool.org/private/test_xml4.pl  -H 'Accept: application/xml' -H 'Content-Type: application/xml'