Come descritto in precedenza, per poter visualizzare le informazioni memorizzate su db grazie al codice python, utilizziamo degli script php visualizzati su browser grazie al web server “Apache” installato sul nostro Raspberry Pi.
Viene quindi realizzato un vero e proprio local-site attraverso la seguente struttura memorizzata su sd di Raspberry Pi nella directory “/var/www/med“.
Struttura local-site
Come si evince dallo schema, il file “med.db”, evidenziato in rosso, contiene le informazioni aggiornate dal python come visto in precedenza.
Nella struttura è possibile vedere le quattro cartelle fondamentali:
– /db: contiene la basedati “med.db”, come appena accennato;
– /include: contiene dei file in “php” utilizzati come classi, metodi e funzioni di supporto all’acquisizione dati;
– /utility: contiene il file JQuerymin.js il quale viene utilizzato per la visualizzazione delle informazioni;
– /img: contenente tutte le immagini
L’entry-point del sito sarà ovviamente “index.html”, il quale che effettua un redirect al file “visual_e.php”, il quale non fa altro che richiamare il file “out_dati.php” ogni 10 secondi, oltre che importare il file “/utility/JQueryMin.js”, un utility fondamentale per la chiamata “AJAX” che serve ad aggiornare solo i dati che variano all’interno della pagina visualizzata su browser.
Analizziamo (abbastanza sommariamente) i seguenti file:
Il file “definedb.php”
define.php: codice
Il file “definedb.php” non fa altro che creare la classe “myDb” che, attraverso il costruttore, si connette ed apre la basedati “med.db”.
Il file “out_dati.php”
In modalità descrittiva il file “out_dati.php” effetua le seguenti operazioni (per avere il codice sorgente php potete contattarmi attraverso il presente blog).
Il file “out_dati.php” è il cuore dell’applicazione e svolge nel dettaglio i seguenti passi:
- effettua un istanza della classe “monitor()” assegnandola a “$myMonitor”, la quale non fa altro che dichiarare una struttura dati nella quale assegnare le informazioni prelevate da “med.db”;
- effettua un istanza, all’interno della variabile “$obj”, della classe “checkenergy()”, la quale è composta da dichiarazioni di variabili e metodi che sono all’interno del file “/include/functions.php”;
- l’istruzione “$resource=$obj->visual_info_hwd()” va a richiamare una funzione della classe checkenergy attraverso la quale preleva le informazioni del dispositivo memorizzate nella tabella “hwd” vista in precedenza;
- l’istruzione “$nowminus10=$obj->slideM(’10’)” permette di memorizzare nella variabile “$nowminus10” l’ora attuale slittata nei 10 minuti precedenti. La funzione “slideM(time)” serve a effettuare il controllo se il dispositivo è in funzione da almeno 10 minuti;
- l’istruzione “$myMonitor->get_last_power()”, chiama una funzione fondamentale del monitoring (immagine XX). Quest’ultima effettua tre diverse operazioni:
a) interroga la tabella “power” nella basedati “med.db” per prelevare l’ultima informazione energetica memorizzata;
b) effettua delle operazioni sulla tabella di rilevazione per determinare la mediana giornaliera;
c) effettua delle operazioni sulla tabella di rilevazione (total) per determinare la produzione ed il consumo totale giornaliero;
Inoltre la funzione si avvale di una serie di sottofunzioni che effettuano interrogazioni varie per impostare il formato data e ora nella modalità più idonea e per stabilire a che ora c’è stato il picco giornaliero di produzione e di consumo.
- l’istruzione “if(strtotime($myMonitor->a)<=strtotime($nowminus10))” permette di controllare se la rilevazione è in tempo reale o se da almeno 10 minuti è ferma;
- le seguenti istruzioni vanno a delineare l’aspetto grafico del box visualizzato: se la prima condizione è esatta, cioè la rilevazione è “off-line”, viene assegnata alla variabile “$bkg” un contorno grigio ed un immagine di “off-line”;
altrimenti, se la produzione è maggiore del consumo, viene assegnata alla variabile “$bkg” il bordo verde e l’immagine di “produzione”; tale controllo viene effettuato attraverso l’istruzione ” if (($myMonitor->b)>($myMonitor->c))”;
- le linee che seguono, non fanno altro che costruire la tabella di uscita e disegnare il box rilevazione. Nell’immagine di MED su mobile vista in precedenza, è evidentemente soddisfatta la relazione “energia prodotta” > “energia consumata”.