Guest User

La Crosse WS2300 2307

a guest
May 2nd, 2016
77
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

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×