Script PHP per l’invio di dati meteo in APRS

Dopo aver visto in questo articolo come inviare dati meteo sulla rete APRS, vi propongo l’eccezionale lavoro di Antonio IS0HHA che in php estrae questi dati da un database SQL (ad esempio creato da meteotemplate), crea un file CSV e poi lo invia al mio script per l’elaborazione ed il caricamento sulle mappe APRS

<?php
//
// Author Tony IS0HHA
$dbf="DATABASE_NAME"; // Database name ***
$table="TABLE"; // Table name ***
$myserver="SERVER_NAME";// Server with MySQL ***
$myuser="USER_NAME"; // MySQL access user ***
$mypassword="USER_PASSWD"; // MySQL user password ***
$myTown="YOUR_Town"; // Town used for query
//
// Connect to the database server
$linkID = @mysql_connect($myserver,$myuser,$mypassword);
if (!$linkID) {
 echo("<P>Unable to connect to the " .$myserver.
 " database server at this time.</P>" );
 die();
}

// Select the database
if (! @mysql_select_db($dbf,$linkID) ) {
 echo( "<P>Unable to open the " .$dbf .
 " database at this time.</P>" );
 die();
}
//
// Read from DB
 // Connect to the database server
 $linkID = @mysql_connect($myserver,$myuser,$mypassword);
 if (!$linkID) {
 echo("<P>Unable to connect to the " .$myserver.
 " database server at this time.</P>" );
 die();
 }

 // Select the database
 if (! @mysql_select_db($dbf,$linkID) ) {
 echo( "<P>Unable to open the " .$dbf .
 " database at this time.</P>" );
 die();
 }

 #
 $query_$myTown = "SELECT * FROM alldata";
 $result_$myTown = mysql_query($query_$myTown,$linkID);

 while ($row = mysql_fetch_array($result_$myTown))
 {

$WindDirDB=$row['B'];
$WindSpeedDB=$row['W'];
$WindGustDB=$row['G'];
$TempDB=$row['T'];
$RainTodayDB=$row['R'];
$RainRateDB=$row['RR'];
$HumDB=$row['H'];
$BaroDB=$row['P'];

 }
//
// Variables Definitions
$WindDir = ceil($WindDirDB);
if (strlen($WindDir) == 1) { ($WindDir = "00".$WindDir); }
if (strlen($WindDir) == 2) { ($WindDir = "0".$WindDir); }
//
$WindSpeed = substr($WindSpeedDB*5/18,0,3);
$WindSpeed = ceil($WindSpeed);
if (strlen($WindSpeed) == 1) { ($WindSpeed = "00".$WindSpeed); }
if (strlen($WindSpeed) == 2) { ($WindSpeed = "0".$WindSpeed); }
//
//
// $WindGust = substr($WindGust*5/18,0,3);
$WindGust = ceil($WindGustDB*5/18);
if (strlen($WindGust) == 1) { ($WindGust = "00".$WindGust); }
if (strlen($WindGust) == 2) { ($WindGust = "0".$WindGust); }
//
$TempF = substr($TempDB*9/5+32,0,2);
//
if ($RainTodayDB == "0.000") { ($RainToday = "000"); }
else {
$RainToday = ceil($RainToday);
if (strlen($RainToday) == 1) { ($RainToday = "00".$RainToday); }
if (strlen($RainToday) == 2) { ($RainToday = "0".$RainToday); }
}
//
if ($RainRateDB == "0.000") { ($RainRate = "000"); }
else {
$RainRate = ceil($RainRate);
if (strlen($RainRate) == 1) { ($RainRate = "00".$RainRate); }
if (strlen($RainRate) == 2) { ($RainRate = "0".$RainRate); }
}
//
$Rain24 = $RainToday;
//
$Hum = ceil($HumDB);
//
$Baro = substr($BaroDB*100,0,5);
//
$list = array (
array( $WindDir,$WindSpeed,$WindGust,$TempF,$RainToday,$RainRate,$Rain24,$Hum,$Baro)
);

$fp = fopen("/home/pi/scripts/weather/datimeteo.txt", "w") or die("Unable to open file!");
foreach ($list as $fields)
{
fputcsv($fp, $fields);
}
fclose($fp);
// Call IU2FRL Perl Script
echo exec('/usr/bin/perl /home/pi/scripts/weather/aprs-wx.pl');
?>

Questo script PHP è stato scritto per poter inviare in rete APRS i dati ricevuti dalla nostra Stazione Meteo. Lo script preleva i dati dal Database MySQL della Raspberry che sono stati inseriti dal Software meteotemplate (http://meteotemplate.com) e li invia in rete usando lo script aprs-wx.pl creato da IU2FRL. Se si desidera inviare i dati ogni 5 minuti, bisogna inserire in CRON (crontab -e) la seguente riga:

*/5 * * * * /usr/bin/php /home/pi/scripts/weather/aprs_wx.php > /dev/null

Per una maggior precisione dello script si consiglia di commentare la riga di lancio del beacon nel seguente modo:

// echo exec(‘/usr/bin/perl /home/pi/scripts/weather/aprs-wx.pl’);

ed inserire in CRON i seguenti 2 processi:

* * * * * /usr/bin/perl /home/pi/scripts/weather/aprs-wx.pl > /dev/null
*/5 * * * * /usr/bin/php /home/pi/scripts/weather/aprs_wx.php > /dev/null

In questo modo i dati della stazione meteo verranno salvati ogni minuto sul file datimeteo.txt ed inviati ogni 5 minuti sui server APRS.

Tutti i file (aprs_wx.php, datimeteo.txt e aprs-wx.pl) devono risiedere nella stessa directory oppure modificarli a piacere.
Lo script può essere utilizzato, modificato e pubblicato liberamente da tutti i RadioAmatori , purché ne vengano citati gli autori ( IS0HHA & IU2FRL )

Qui trovate il calcolatore per il PASSCODE APRS

È possibile visualizzare i dati della stazione meteo all’indirizzo: http://tonyp62.ddns.net/meteo/

ilhsdflgjk

Link al download dei files: aprs_wx – aprs_wx_V2 – aprs_wx_V3 – aprs_wx_V4

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *