daily pastebin goal
84%
SHARE
TWEET

La Crosse WS2300 2307

a guest May 2nd, 2016 27 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2.  
  3. #This script reads weather data via fetch program which is part of Open2300 suite written by Kenneth Lavrsen (http://www.
  4. #lavrsen.dk/foswiki/bin/view/Open2300/WebHome).
  5. #It outputs the right data needed to feed Xastir for APRS weather reports. The scripts utilizes Ncat utility as server to
  6. #serve the fetched output to Xastir.
  7. #Fetched Data is pushed to Ncat server and then to Xastir. (Fetched data -> Ncat server -> Xastir)
  8. #Ncat is part of Nmap, get it by installing Nmap.
  9. #This script should work for LaCrosse weather stations, WS23xx series. Testing was done with WS2307.
  10. #Written by S55MA and S56IUL, May 2016
  11.  
  12. #DEFINE VARIABLES
  13. host="127.0.0.1"
  14. port="1234"
  15.  
  16. #Start the Ncat server
  17. chkncat=$(netstat -ant | grep $host:$port | grep -c LISTEN)
  18. if [ "$chkncat" -ge "1" ]
  19.     then
  20.         echo "ncat already running, nothing to do"
  21.     else
  22.         nohup ncat -k -l --broker $host $port &>/dev/null &
  23. fi
  24.  
  25. #Start while loop
  26. while true; do
  27.  
  28. echo "start `date`"
  29.  
  30. datetime=$(date '+%Y%m%d%H%M%S')
  31. ws2300config="/etc/open2300/open2300.conf"
  32. /usr/local/bin/fetch2300 $ws2300config > /tmp/wxdata-"$datetime".tmp
  33. fetch_path="/tmp/wxdata-$datetime.tmp"
  34. chkfile=$(ls -la $fetch_path | awk -F ' ' '{ print $5 }')
  35.  
  36. if [ "$chkfile" -le "43" ]
  37.     then
  38.     echo "No Data"
  39.     sleep 30
  40.     else
  41.     tempF=$(cat "$fetch_path" | grep To | grep -v 'min\|max\|DRtot\|TRtot' | awk '{print $2}')
  42.     temp1=$(echo "$tempF" | awk '{ printf ("%d\n",$1 + 0.5)}')
  43.     if [ "$temp1" -ge "99" ] || [ "$temp1" -le "-99" ]
  44.         then
  45.             temp="$temp1"
  46.         else
  47.             if [ "$temp1" -le "-1" ]
  48.                 then
  49.                     if [ "$temp1" -ge "-9" ]
  50.                         then
  51.                             temp2=$(echo "$temp1" | sed 's/[-]//g')
  52.                             temp=$(echo -0"$temp2")
  53.                         else
  54.                             temp2=$(echo "$temp1" | sed 's/[-]//g')
  55.                             temp=$(echo -"$temp1")
  56.                     fi
  57.                 else
  58.                     temp=$(echo 0"$temp1")
  59.             fi
  60.     fi
  61.    
  62.     windspeed2=$(cat "$fetch_path" | grep -m1 WS | grep -v 'min\|max\|DRtot\|TRtot'| awk '{print $2/1.609344}' | awk '{ printf ("%d\n",$1 + 0.5)}')
  63. if [ "$windspeed2" -le "9" ]
  64.         then
  65.             windspeed=$(echo 00"$windspeed2")
  66.         else
  67.             if [ "$windspeed2" -le "99" ]
  68.                 then
  69.                     windspeed=$(echo 0"$windspeed2")
  70.                 else
  71.                     windspeed=$(echo "$windspeed2")
  72.             fi
  73.     fi
  74.  
  75.     winddirection2=$(cat "$fetch_path" | grep DIR0 | awk '{print $2}' | sed 's/\..*$//')
  76.     if [ "$winddirection2" -le "9" ]
  77.         then
  78.             winddirection=$(echo 00"$winddirection2")
  79.         else
  80.             if [ "$winddirection2" -le "99" ]
  81.                 then
  82.                     winddirection=$(echo 0"$winddirection2")
  83.                 else
  84.                     winddirection=$(echo "$winddirection2")
  85.             fi
  86.     fi
  87.  
  88.     rain1h=$(cat "$fetch_path" | grep R1h | grep -v 'min\|max' | awk '{print $2}' | sed 's/[.]//g')
  89.     rain24h=$(cat "$fetch_path" | grep R24h | grep -v 'min\|max' | awk '{print $2}' | sed 's/[.]//g')
  90.  
  91.     airpressureR=$(cat "$fetch_path" | grep RP | grep -v 'min\|max' | awk '{print $2}')
  92.     airpressure2=$(echo "scale=1;$airpressureR / 1" | bc | sed 's/[.]//g')
  93.     if [ "$airpressure2" -le "9999" ]
  94.         then
  95.             airpressure=$(echo 0"$airpressure2")
  96.         else
  97.             airpressure=$(echo "$airpressure2")
  98.     fi
  99.  
  100.     relhumidity=$(cat "$fetch_path" | grep RHo | grep -v 'min\|max' | awk '{print $2}' | sed 's/\..*$//')
  101.  
  102.     #Combine variables to forge Xastir string
  103.     xastir="c${winddirection}s${windspeed}t${temp}r${rain1h}p${rain24h}b${airpressure}h${relhumidity}xDvs"
  104.     printf "%s\n" "$xastir" | ncat --send-only $host $port
  105.     echo "$xastir"
  106.         sleep 3
  107.  
  108.     rm -f /tmp/wxdata-*.tmp
  109.  
  110.     echo "stop `date`"
  111.     echo "-----------------------------------"
  112. fi
  113.  
  114. done
  115.  
  116. #EOS
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top