Bob's Hurricane Wind Speed Logger

<php> include “/web/baggerman/wind/libchart/libchart/classes/libchart.php”;

Some constants ————–

$PLOT_POINTS = 3601;

Get a little data to display —————————- $sLog = “”; exec(“tail -60 logwind.txt”, $sLog);

$AveSpeedAve = 0; $AveSpeedMax = 0; #print “<pre>\n”; foreach ($sLog as $sLine)

{
$asLineParts = explode(" ", $sLine, 3);
$asSpeeds    = explode(",", $asLineParts[2]);

# printf(“%s %s %s %s\n”, $asLineParts[1], $asSpeeds[0], $asSpeeds[1], $asSpeeds[2]);

$AveSpeedAve += floatval($asSpeeds[2]);
$AveSpeedMax = max($AveSpeedMax, floatval($asSpeeds[1]));
}

#print “</pre>\n”; $AveSpeedAve /= 60.0;

printf(“<h2>%s %s - Current Average Speed %4.1f, gusting to %4.1f MPH</h2>”,

  $asLineParts[0], substr($asLineParts[1],0,8), $AveSpeedAve, $AveSpeedMax);

print(“<hr>\n”);

Get one hour of data to plot —————————-

$AVE_POINTS = 60; $sLog = “”; exec(“tail -3601 logwind.txt”, $sLog);

$SpeedXYAve = new XYDataSet(); $SpeedXYMax = new XYDataSet(); $iLabelIdx = 0; $iAveIdx = $AVE_POINTS; $AveSpeedAve = 0; $AveSpeedMax = 0; foreach ($sLog as $sLine)

{
$asLineParts = explode(" ", $sLine, 3);
$asSpeeds    = explode(",", $asLineParts[2]);
$aSpeedTime[] = $asLineParts[0];
if ($iAveIdx == 0)
  {
  if ($iLabelIdx == 0)
    {
    $sLabel = substr($asLineParts[1], 0, 8);
    $iLabelIdx = 5;
    }
  else
    {
    $sLabel = "";
    $iLabelIdx--;
    }
  $AveSpeedAve /= $AVE_POINTS;
  $SpeedXYAve->addPoint(new Point($sLabel, $AveSpeedAve));
  $SpeedXYMax->addPoint(new Point($sLabel, $AveSpeedMax));
  $AveSpeedAve = 0;
  $AveSpeedMax = 0;
  $iAveIdx     = $AVE_POINTS;
  }
  
else
  {
  $AveSpeedAve += floatval($asSpeeds[2]);
  $AveSpeedMax = max($AveSpeedMax, floatval($asSpeeds[1]));
  $iAveIdx--;
  }

}

$SpeedXY = new XYSeriesDataSet(); $SpeedXY→addSerie(“Average”, $SpeedXYAve); $SpeedXY→addSerie(“Max”, $SpeedXYMax);

$SpeedChart = new LineChart(1200,400); #$SpeedChart→getPlot()→getPalette()→seti $SpeedChart→setDataSet($SpeedXY); $SpeedChart→setTitle(“Wind Speed for the past 1 hour (MPH)”); $SpeedChart→render(“windplot.png”);

print “<img src='windplot.png'><br>\n”;

Get 12 hours of data to plot —————————-

$AVE_POINTS = 300; $sLog = “”; exec(“tail -43201 logwind.txt”, $sLog);

$SpeedXYAve = new XYDataSet(); $SpeedXYMax = new XYDataSet(); $iLabelIdx = 0; $iAveIdx = $AVE_POINTS; $AveSpeedAve = 0; $AveSpeedMax = 0; foreach ($sLog as $sLine)

{
$asLineParts = explode(" ", $sLine, 3);
$asSpeeds    = explode(",", $asLineParts[2]);
$aSpeedTime[] = $asLineParts[0];
if ($iAveIdx == 0)
  {
  if ($iLabelIdx == 0)
    {
    $sLabel = substr($asLineParts[1], 0, 8);
    $iLabelIdx = 5;
    }
  else
    {
    $sLabel = "";
    $iLabelIdx--;
    }
  $AveSpeedAve /= $AVE_POINTS;
  $SpeedXYAve->addPoint(new Point($sLabel, $AveSpeedAve));
  $SpeedXYMax->addPoint(new Point($sLabel, $AveSpeedMax));
  $AveSpeedAve = 0;
  $AveSpeedMax = 0;
  $iAveIdx     = $AVE_POINTS;
  }
else
  {
  $AveSpeedAve += floatval($asSpeeds[2]);
  $AveSpeedMax = max($AveSpeedMax, floatval($asSpeeds[1]));
  $iAveIdx--;
  }

}

$SpeedXY = new XYSeriesDataSet(); $SpeedXY→addSerie(“Average”, $SpeedXYAve); $SpeedXY→addSerie(“Max”, $SpeedXYMax);

$SpeedChart = new LineChart(1200,400); #$SpeedChart→getPlot()→getPalette()→seti $SpeedChart→setDataSet($SpeedXY); $SpeedChart→setTitle(“Wind Speed for the past 12 hours (MPH)”); $SpeedChart→render(“windplot_12hr.png”);

print “<img src='windplot_12hr.png'><br>\n”; </php>

Here are a few pictures of the setup. Click on the picture for a larger version. My only caveats are that my anamometer is not in an ideal spot and the one attempt at calibrating it showed it was reading about 20% low.