Ben ritrovati nel settimo e penultimo capitolo di questa guida, se siete giunti fino a qui potete considerarvi quasi dei supereroi!
Oggi ci dedicheremo all’invio delle previsioni che abbiamo calcolato con i nostri modelli di machine learning al database mysql creato come visto assieme nella sezione Previsioni meteo con machine learning – parte 6/8: il database mysql di questa guida. In particolare, quando abbiamo affrontato come elaborare i modelli, al termine del capitolo Previsioni meteo con machine learning – parte 4/8: elaborazione dei modelli, avevamo richiamato una pagina web dal nome aggiungi_previsione.php come vi ricordo di seguito:
#esegue la pagina web per caricare i dati nel database
url = "https://www.nome_sito.it/aggiungi_previsione.php?temperatura_max_prevista=" + str(temperatura_max_prevista) + "&temperatura_min_prevista=" + str(temperatura_min_prevista) + "&precipitazioni_cumulate_previste=" + str(precipitazioni_cumulate_previste)
print (url)
webUrl = urllib.request.urlopen(url)
È finalmente arrivato il momento di scoprire come funziona questa pagina che ci consente di salvare le nostre previsioni nel database!
Innanzitutto dobbiamo recuperare i dati che il file python machine_learning_stazione_meteo_previsioni.py ci invia ogni giorno tramite il metodo GET (come appena riportato sopra):
//verifica che le variabili esistano e non siano nulle (isset in questo caso restituisce true, altrimenti false)
if(isset($_GET['temperatura_max_prevista']) && isset($_GET['temperatura_min_prevista']) && isset($_GET['precipitazioni_cumulate_previste']))
{
//recupero dei valori tramite il metodo GET
$temperatura_max_prevista = $_GET['temperatura_max_prevista'];
$temperatura_min_prevista = $_GET['temperatura_min_prevista'];
$precipitazioni_cumulate_previste = $_GET['precipitazioni_cumulate_previste'];
}
Prima di salvare i dati bisogna ovviamente connettersi al database: per farlo impostiamo le variabili con le credenziali corrette ed eseguiamo la connessione.
//dati del database a cui connettersi
$username="nome_utente";
$password="password";
$database="nome_database";
$host="nome_host";
//connessione al database
$con = mysqli_connect($host, $username, $password);
mysqli_select_db($con, $database) or die ("Impossibile selezionare database.");
A questo punto per evitare di inserire più previsioni relative allo stesso giorno (anche se non dovrebbe mai accadere visto che il file python viene eseguito solo una volta al giorno) recuperiamo la data dell’ultima previsione caricata nel database:
//data ultimo record inserito nella tabella previsione
$query = mysqli_query($con, "SELECT time_stamp FROM previsione ORDER BY time_stamp DESC LIMIT 1");
$momentoultimaprevisionearray = mysqli_fetch_array($query);
$momentoultimaprevisione=$momentoultimaprevisionearray['0'];
$dataultimaprevisione = substr($momentoultimaprevisione,0, 10);
$dataattuale = date("Y-m-d");
Non rimane altro che, previa verifica che non esista già una previsione per la giornata attuale, inviare i valori predetti al database mysql come mostrato di seguito:
if ($dataultimaprevisione <> $dataattuale) {
//esecuzione della query per salvare la previsione
$query="INSERT INTO previsione(temperatura_max, temperatura_min, precipitazioni_cumulate) VALUES ($temperatura_max_prevista, $temperatura_min_prevista, $precipitazioni_cumulate_previste)";
$result = mysqli_query($con, $query);
}
mysqli_close($con);
?>
Il file contenente il codice completo della pagina aggiungi_previsione.php è disponibile cliccando qui. Ricordate ovviamente di modificare le credenziali di accesso per accedere al vostro database!
