Tesina sperimentale di informatica
Indirizzo informatica
Solartest
“Gestione informatica di impianti fotovoltaici”
Candidati:
Faye Salif Omar
Bini Mattia
Esame di Stato anno scolastico 2011/2012
Istituto statale di istruzione superiore “ISIS Leonardo da Vinci”
Sommario
Informatica/Sistemi
Solartest
- 1. Cosa è
- 2. Database (MySQL)
- 3. Applicazione Android (Java)
- 4. Sito Web (PHP/CSS/HTML)
Italiano
Luce e metafisica del paesaggio: Eugenio Montale
- 1. Vita
- 2. Opere
- Meriggiare
- Limoni
- Piccolo Testamento
Storia
Guerra Fredda
- Il mondo dal 1945 al 1956
- L’ONU.
- Il piano Marshall.
- Le strategie militari: la NATO e il patto di Varsavia.
- La guerra di Corea (1950/1953)
- Il 1956: l’avvio della “distensione”
- Sintesi del dopo ‘56
Gestione impianti fotovoltaici
Solartest
Il progetto proposto prevede la gestione dei dati ricavati da impianti fotovoltaici, tramite l’utilizzo della tecnologia web e l’ormai diffusissima tecnologia Android, per facilitare e rendere possibile agli utilizzatori l’accesso ovunque essi siano (se naturalmente dotati di connessione internet).
In tale progetto sono stati utilizzati i seguenti linguaggi di programmazione:
- Java (Android)
- PHP
- HTML
- JavaScript
- XML
Data la scarsa “elasticità” del sito di hosting web Altervista, non è stata possibile la realizzazione di un software simulante un impianto fotovoltaico. Il problema principale è stato purtroppo la connessione al database, impossibile da effettuare attraverso applicativi o comunque generici comandi esterni allo spazio web fornitoci. Per aggirare questo problema è stata quindi creata una semplice pagina di amministrazione per poter inserire, modificare ed eliminare i dati di tutti gli utenti, impianti presenti all’interno del database. Purtroppo l’utilizzo di un database online è risultato necessario al fine del completamento dell’applicazione Android.
In questo progetto è stata definita genericamente una durata di funzionamento dell’impianto di 10 ore (7.00-17.00) senza quindi contare particolari condizioni atmosferiche, posizioni del sole e tenendo conto del funzionamento dell’impianto a pieno regime.
Il funzionamento di un impianto fotovoltaico si basa sul concetto di scatti, mentre la potenza di un impianto viene calcolata e stimata in KWatt (Kilowatt).
Ad ogni KWatt un impianto può mediamente produrre 1300 scatti, quindi per calcolare la potenza effettiva annuale dell’impianto occorre applicare la formula [Potenza]*1300 scatti. Nel caso particolare dell’impianto “Castri 1” (impianto realmente attivo che trova luogo nel punto di latitudine e longitudine inserite nel database) si ha una potenza complessiva di 500 KWatt, per quindi una potenza annuale di 1300*500 = 650000 KWatt, ovvero i kilowatt che è in grado di generare annualmente.
Solartest prevede che allo scadere di ogni ora il database si aggiorni inserendo all’interno dell’apposita tabella i dati acquisiti dall’impianto.
La registrazione di un utente si vedrà svolgere in 3 fasi. Inizialmente, l’operatore che avrà installato l’impianto o visionato uno già esistente che prenderà parte del database, inserirà attraverso un apposito dispositivo (anche in questo caso si è pensato mediante tecnologia Android) i principali dati anagrafici del nuovo utente. Conclusa tale operazione verrà generato un codice di 10 cifre univoco e indispensabile all’utente per poter completare la sua registrazione.
La seconda fase prevede quindi la registrazione autonoma da parte dell’utente attraverso l’utilizzo dell’apposita area del sito. Una volta completata tale fase, avrà inizio la terza che prevede l’intervento dell’amministratore o di chi avrà i permessi a compiere l’operazione di accettazione dell’account e il collegamento al relativo impianto/i a lui riferiti.
Database
Per poter realizzare il database necessario alla creazione e alla memorizzazione dei dati forniti dall’impianto fotovoltaico è stato utilizzato MySQL.
L’impianto è un’entità che prevede l’identificazione secondo una chiave primaria, univoca e irripetibile. Tale tabella contiene tutti i principali dati dell’impianto. Onde evitare l’inutile spreco di spazio è inutile memorizzare all’interno di tale tabella i dati acquisiti ogni ora dagli impianti. Per ovviare tale problema è stata necessaria la creazione di una tabella a parte che riesca a contenere tutti i dati aggiornati di ora in ora. Tali dati sono poi elaborati in maniera da ottenere le tabelle e i grafici visualizzati all’utente.
L’utente è rappresentato da due tabelle, la prima contenente tutti i suoi dati anagrafici, la seconda i suoi dati di login. È stato utilizzato tale metodo in maniera da rendere più sicuro l’accesso e sfavorire il facile recupero dei dati ai malintenzionati. Per aumentare il livello di sicurezza le password sono codificate secondo l’algoritmo MD5. Anche l’utente è rappresentato da un codice univoco e irripetibile che identifica ogni record.
L’accesso di ogni utente viene memorizzato all’interno del database in maniera da poter ricondurre qualsiasi modifica al responsabile. Assieme alla sua “username” e codice identificativo, viene memorizzato anche da quale dispositivo è stato effettuato l’accesso, ovvero se da web o da applicativo smartphone Android.
Il collegamento tra impianti ed utenti avviene attraverso l’utilizzo dei gruppi di lavoro. Nel progetto è stato preso in considerazione che una volta completato sarebbe stato potuto utilizzare da più persone facenti parte di gruppi di lavoro diverso. Per tale motivo è stata necessaria l’introduzione di gruppi di lavoro dove ogni utente può essere inserito. Ogni utente può appartenere a più gruppi di lavoro. All’accesso di ogni utente, egli potrà visualizzare gli impianti solo relazionati al proprio gruppo.
Il database “my_solartest” è composto dalle seguenti tabelle:
- Impianto
- Utente
- Login
- AccessiUtente
- Azienda
- Datiimpianto
- Listino
- Gruppi
- GruppiUtenti
- GruppiImpianto
MySQL non accetta i domain quindi è necessario gestire gli input da applicativi.
1) Impianto
In tale tabella sono contenuti i principali e fondamentali dati dell’impianto fotovoltaico preso in esame.
Id: (chiave primaria della tabella di tipo int) identifica univocamente ogni impianto e ne permette e facilita la ricerca all’interno del database.
Potenza: (tipo double) indica la potenza espressa in KiloWattOra (KWp) dell’impianto fotovoltaico.
Co2: (tipo double) indica la quantità teorica di emissioni annue di CO2 evitate, tale valore è espresso in tonnellate annue (t/anno).
Euro_annui: (double) quantità teorica di euro annui risparmiati grazie all’impianto.
Posa: (tipo char (100)) indica la posizione dell’impianto, ovvero dichiara se i pannelli fotovoltaici sono posti su tetti di abitazioni (e che tipo: piano, a v ecc.), parchi fotovoltaici ecc.
Area_installazione: (double) indica in m2 a quanto ammonta l’area occupata dall’impianto.
Posizione_sole_mezzogiorno: (char(5)) indica la posizione del sole a mezzogiorno.
Proprietario: (char 7) indica se appartiene ad aziende o a privati.
Data_attivazione: (date) dichiara la data di attivazione.
Note: (char(500)) eventuali note a riguardo l’impianto.
Attivazione
2)
Tabella nella quale sono contenuti i codici di attivazione dell’account di ogni utente con il relativo id. È inoltre presente un attributo che descrive se l’account è stato attivato o meno.
Codice: (chiave primaria della tabella di tipo char) identifica univocamente ogni attivazione dell’account.
Id_utente: (chiave esterna di tipo int) è collegata alla chiave primaria della tabella Utente.
Stato: (char) descrive se l’account è attivo oppure no.
3) Dati impianto
Qui sono conservati tutti i dati “più particolari” riferiti all’impianto preso in questione. Tale tabella è collegata a “impianto” tramite una chiave secondaria riferita all’id della seconda.
Id: (chiave secondaria riferita all’attributo (ID) della tabella “impianto”) identifica l’impianto.
Kwatt: (int) indica quanti kwatt sono stati prodotti durante l’ora passata.
Co2: (double) indica la quantità di emissione CO2 risparmiata nell’ora passata.
Euro: (double) indica quanti euro sono stati risparmiati nell’ora passata.
4) Utente
Tabella utilizzata per memorizzare tutti i dati anagrafici dell’utente.
Id: (chiave secondaria riferita all’attributo (ID) della tabella “impianto”) identifica l’impianto.
Nome: (char(20)) nome dell’intestatario o dell’azienda a cui appartiene l’impianto.
Cognome: (char(20)) cognome dell’intestatario.
Titolo: titolo dell’utente, solo per privati.
C. fiscale: codice fiscale dell’utente.
P. IVA: partita IVA di privati o aziende.
Cellulare: cellulare dell’utente.
Telefono: telefono dell’utente o dell’azienda.
Indirizzo: indirizzo dell’utente o dell’azienda.
5) Gruppi_utenti (associazione)
Collega i vari account con i tipi di utente.
Id_tipo: chiave esterna.
Id_utente: chiave esterna.
6) Gruppi_impianti (associazione)
Collega i vari impianti con i gruppi presenti all’interno.
Id_tipo: chiave esterna.
Id_impianto: chiave esterna.
7) Gruppi
Definisce l’insieme dei gruppi di lavoro all’interno del progetto.
Id: codice che identifica ogni gruppo.
Nome: descrizione del gruppo registrato.
8) Accessi_utenti
È una tabella che memorizza gli accessi effettuati da ogni utente, tenendo conto del dispositivo, della data e dell’indirizzo IP con il quale questo ha effettuato l’accesso.
Id_utente: identifica l’utente loggatosi, chiave esterna che si relaziona con utente.
Data: formato datetime, memorizza la data di login.
IP: individua da dove è stata effettuata la connessione.
Dispositivo: definisce se il login è effettuato da Android o web.
9) Login
Tabella utilizzata per incrementare la sicurezza degli utenti registrati.
All’interno sono memorizzati username, password (con codifica MD5) e indirizzo email.
Id_utente: identifica l’utente loggatosi, chiave esterna che si relaziona con utente.
User: definisce l’username dell’utente.
Pass: definisce la password utente (codificata in MD5).
Diagramma E/R (Entity/Relationship)
Un gruppo può accedere ad un solo impianto, mentre un impianto può essere visualizzato da più gruppi (1-n).
Un utente può appartenere ad un solo gruppo mentre un gruppo può contenere più utenti.
Un impianto può avere più record di “DatiImpianti” relazionati, mentre ogni record corrisponderà ad un solo impianto.
Tra login e utente e tra attivazione e utente si ha un’associazione 1 a 1 in quanto ogni utente ha correlato un solo record di login ed un solo record di attivazione.
Tra utente e accessi utenti si ha una relazione 1 a n in quanto ogni utente può essere relazionato a più accessi, ma un accesso può corrispondere solo ad un utente.
Android
L’applicazione rende possibile all’utilizzatore il controllo dei dati degli impianti a lui collegati, in tempo reale. Inoltre avrà a disposizione la possibilità di modificare i propri dati entrando nell’apposito menù. Il collegamento al database online è effettuato tramite l’utilizzo di appositi file PHP memorizzati all’interno dello spazio web. Tali file restituiscono e ottengono i dati relazionandosi unicamente con l’applicazione Android.
Per utilizzare l’app è necessario abilitare la connessione internet e anche il rilevatore di posizione geografica (GPS).
Schermata iniziale: Login
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.