1
ITT Blaise PASCAL – CESENA
Lab. Informatica
CLASSE 5G
TITOLO: Creazione dati di prova significativi per DATABASE “Garden”
PANORAMICA
1. Descrizione e contesto del progetto
Contesto del progetto: Il prodotto si inserisce all’interno del progetto Pascal che a sua volta fa parte del progetto
Garden.
Scopo: realizzazione programma che produca valori di prova significativi di temperatura atmosferica per il DATABASE
“Garden”.
Persone coinvolte: la classe 5G divisa in coppie.
2. Ambito del progetto
Il programma sarà eseguito su un PC e potrà produrre, oltre ai valori di temperatura, anche valori di umidità o
pressione. Questi dati si potranno aggiungere successivamente alla creazione del programma, in base alle richieste
del cliente (classe 5E). Il cliente successivamente potrà consultare i dati significativi creati dall’applicazione.
ANALISI DEL PROBLEMA
3. Definizione dei requisiti
I requisiti attesi per la realizzazione del sistema sono:

Postazioni di lavoro;

Rete LAN e WAN per lo sviluppo;

Visual Studio come framework di sviluppo;

Creazione DATABASE per il salvataggio dei valori (Garden).

DATABASE da cui prelevare i valori di temperatura giornalieri (Meteo).
4. Specifica dei requisiti
Il sistema dovrà svolgere 2 operazioni di base:
1.
Connessione alla base di dati che contiene i valori significativi di temperatura, umidità, pressione, previsioni
atmosferiche giornalieri dell’anno 2014. E successivamente consultazione dei dati di temperatura.
2.
Elaborazione e modifica dei valori prelevati. Caricamento dei valori sul database Garden che userà la classe
5E per la consultazione. Sul DATABASE dovranno essere salvati:

Valori di temperatura relativi ad ogni 10 minuti delle 24 ore presenti in un giorno, più l’ora
corrispondente al valore di temperatura. (Es. alle ore 00:10 gradi 1°; alle ore 00:20 gradi 2°; alle ore
00:30 gradi 2,2°; fino alle 23:50).
2

Punto misura che indica il tipo di sensore e scheda programmabile (es. Arduino, Rasberry, PLC)
che invia i dati.
Ogni coppia della classe 5G provvederà ad elaborare e salvare i dati di ogni mese. (es. gruppo1 salvataggio dati dei
giorni di Gennaio; gruppo2 salvataggio dati dei giorni di Febbraio; ecc…).
Il progetto deve simulare quindi dati di prova significativi di valori di temperatura atmosferici che serviranno alla classe
5E per la consultazione da pagine Web appositamente create.
PROGETTO
5. Architettura di progetto
Il nostro programma sarà sviluppato utilizzando la libreria specifica ADO.NET che offre il framework .NET di Microsoft
per garantire la convivenza dei linguaggi SQL e C#. L’applicazione dovrà procurarsi dei dati significativi che
successivamente saranno elaborati per essere salvati sul database garden. I valori significativi saranno scaricati dal
sito http://www.ilmeteo.it/portale/archivio-meteo/Cesena e salvati sul database Meteo.
Il programma sarà costituito da 2 metodi:
1.
PrelevaDati: il quale non farà altro che prelevare la data, temperatura minima e massima di un determinato
giorno e mese tramite il comando di SQL Query: ”SELECT DATA,[TMIN ーC],[TMAX ーC] FROM Foglio1$ where
datepart( year, data) = 2014 and datepart ( month, data) = 10 and datepart (day, data) =1". (Preleva data, Tmin e
max del giorno 1 ottobre). Questi 3 valori verranno salvati negli attributi dell’oggetto Rilevamento, tramite le
proprietà GET; SET.
2.
InviaTemperatura: il quale invierà al DATABASE Garden l’ora, il valore ed il punto misura tramite il comando
SQL Query:"insert into Rilevazione values (@tempo, @valore,@puntoMisura)". Il valore sarà opportunatamente
modificato, adattato, tramite un algoritmo, prima di essere inviato. @tempo, @valore, @puntoMisura sono
aggiunti alla Query come parametro. I parametri saranno eguagliati agli attributi dell’oggetto rilevamento (es.
parTempo.Value = ril.Tempo;). Solo il punto di misura è fisso, e gli verrà assegnato il n°21.
ALGORITMO DEI DATI
Calcolare l’escursione termica ogni ora:
double delta = (ril.Tmax - ril.Tmin) / 12.0;//escursione ogni ora
dove:
ril.Tmax è la temperatura massima e ril.Tmin è la temperatura minima di un determinato giorno. Dividiamo il risultato
della differenza tra max e min per 12 che sono il numero di ore. Dal risultato chiamato double delta otterremo quindi il
valore di quanto sale la temperatura ogni ora.
Dividiamo il delta per 6 ottenendo il valore di quanto aumenta la temperatura ogni 10 minuti
(10minuti*6=60minuti=1ora).
double minuti = delta / 6;//temperatura ogni 10 minuti
N.B. La temperatura dalle 00:01 alle 12:00 aumenta; la temperatura dalle 12:01 alle 00:00 diminuisce. Quindi alle
00:00 è associata la temperatura minima, mentre alle 12:00 la temperatura massima.
3
Schema della rappresentazione delle temperature in relazione all’ora di un giorno.
Successivamente riempiamo un vettore di dimensione 24, contenente come primo valore la Tmin e 11 valori con
incremento graduale del delta calcolato in precedenza. Gli altri 12 valori verranno aggiunti al vettore con decremento
graduale del delta.
I primi 12 valori conterranno le temperature dalle ore 00:01 alle 12:00, mentre gli ultimi 12 conterranno le temperature
dalle 12:01 alle 00:00.
Tramite un ciclo for scorriamo il vettore di dimensione 24 riempito in precedenza e andiamo a inserire sul database
Garden come primo elemento la Tmin, con l’ora corrispondente ed il punto misura. Subito dopo aver aggiunto il valore
aumentiamo di 10 minuti l’ora tramite il metodo “AddMinutes(10)”:
ril.tempo=ril.tempo.AddMinutes(10)
Successivamente andiamo ad assegnare gli altri 5 valori rimanenti nell’arco di 1 ora. Il 1° lo abbiamo aggiunto prima,
ne mancano 5. Lo facciamo facendo un ciclo for. Inseriremo quindi nel DB il punto misura, l’ora, ed il valore. Il valore
(memorizzato nel vettore) viene aggiunto o diminuito (tramite un random) un numero che va da -1 a 1 per rendere più
realistico il valore di temperatura. Dopo l’incremento non scordiamoci di incrementare anche di 10 minuti l’ora.
double temp=tOre[i]+r.Next(-1,2); //aggiunge al valore dei 10 minuti uno scostamento tra -1 e 1
Dopo il completamento dei 2 cicli saranno aggiunti al database i valori di temperatura relativi ad 1 giorno specifico. 6
valori di temperatura per 1 ora di giornata, per 24 è uguale a 144 temperature presenti nella raccolta di dati Garden per
1 giorno.
4
Struttura ciclo
for (int i = 0; i < 24;i++ )//scorriamo le 24 ore
{
//aggiungiamo primo valore al DB e aumentiamo di 10 minuti l’ora
for (int f = 0; f < 5;f++ )//scorriamo i 10 minuti in 1 ora
{
//scostamento valore temperatura da -1 a 1
//inserimento valore nel DB
//incremento 10 minuti ora
}
}
6. Disegno di dettaglio: Casi d’uso