Blog migrato su nuova piattaforma

Disclaimer

Prestare sempre attenzione a seguire le indicazioni fornite in questo blog, soprattutto se si tratta di apparecchiature elettriche collegate alla tensione di 220V. Non mi ritengo responsabile di danni causati dall'aver seguito i consigli qui pubblicati.
Grazie
Visualizzazione post con etichetta php. Mostra tutti i post
Visualizzazione post con etichetta php. Mostra tutti i post

giovedì 10 marzo 2016

Acquisizione dati - Diamo uno sguardo ai dati...

Adesso che il mio sistema è imbastito ed abbiamo già un paio di sensori che permettono una raccolta di dati, è arrivato il momento di vedere qualcosa.

Ho quindi implementato una piccola applicazione web in PHP che permette la lettura e la visualizzazione tramite browser dei dati acquisiti.

Alcuni dettagli tecnici:

- linguaggio di programmazione PHP 5 e rendering in HTML5
- motore database MARIADB (la versione indipendente del famoso MYSQL, ormai acquistato dalla Oracle)
- interfaccia sviluppata con il framework Bootstrap v.3
- libreria Google Charts per l'implementazione dei grafici
- utilizzo delle librerie Javascript jQuery e jQuery-UI

Per adesso l'interfaccia è molto semplice; il suo primo obiettivo è quello di permettermi di verificare che i dati vengano acquisiti correttamente.

Quello che ho sviluppato è una semplice homepage che mostra due grafici che indicano:

- la curva di produzione giornaliera dell'IMPIANTO FOTOVOLTAICO (link)
- gli ultimi minuti di rilevazione del GAS METANO con link a pagina di dettaglio giornaliero (link)

Dal grafico della produzione fotovoltaica si può notare un dato anomale...nelle ore notturne la produzione sembra essere costante e maggiore di 0 (cosa naturalmente impossibile...). A detta dell'assistenza, questo problema sembra essere dovuto alla potenza reattiva dovuta alla scarica dei condensatori dell'inverter

(oggi è stata una buona giornata per i pannelli...si sono raggiunti i 2Kwp)




Sotto ogni grafico viene visualizzato il dato in tempo reale.

La pagina ha una funzione di autorefresh per permettere la visualizzazione realtime dei dati.

Ho iniziato anche ad impostare una pagina di login per implementare delle funzionalità accessibili solo con utente e password


L'applicazione gira sul Raspberry PI, dove è installato il web server Apache 2. E' raggiungibile da rete locale (ovviamente) ma anche da internet tramite un opportuno NAT sul router di casa e con la gestione di un dominio Dynamic DNS per la mappatura dell'indirizzo IP pubblico dinamico della mia rete di casa.

A questo scopo sto utilizzando il servizio offerto da NO-IP, che gratuitamente offre la gestione di 3 nomi dominio. Un punto a favore è dato anche da un client linux che permette in automatico di aggiornare i DNS ogni volta che cambia l'ip pubblico della mia rete.

martedì 8 marzo 2016

Acquisizione dati - Produzione impianto fotovoltaico




Il secondo tipo di dato che voglio acquisire con il sistema di monitoraggio che sto cercando di mettere in piedi con il poco tempo che ho a disposizione (la frequenza di aggiornamento del blog la dice lunga...) è la rilevazione della produzione dell'impianto di pannelli fotovoltaici che ho installato sul tetto di casa.

L'impianto è un 3 kWp composto da moduli svizzeri SUNAGE 250, con inverter AROS SIRIO

Insieme all'impianto mi è stato anche fornito un piccolo impianto di monitoring, composto da una pinza amperometrica e un ricevitore/display wireless. La pinza amperometrica trasmette al display, attraverso un opportuno trasmettitore, il dato di produzione istantanea rilevato dall'inverter; il display, oltre a farlo vedere in tempo reale, lo memorizza in un piccolo database sqlite interno e lo storicizza. Il bello di questo ricevitore è che, tramite connessione usb, può essere interfacciato ad un PC Windows per la visualizzazione e lo scarico dei dati in formato excel.

Il sistema in questione è un prodotto commercializzato e chiamato OWL

http://www.theowl.com/energy-monitors/standalone-monitors/owl-usb/


In particolare il mio è il modello OWL+USB CM160.

Purtroppo questo modello ha il problema di rilevare la potenza reattiva trasmessa dall'inverter quando è spento...quindi quando i pannelli sono "spenti" (di notte, ad esempio) il sistema rileva sempre 240W.

Per il mio scopo ho la necessità di connettere il ricevitore, tramite USB, al Raspberry. Nativamente questo non è supportato e i driver ufficiali non ci sono, ma girando su internet ho trovato questa ottima interfaccia per linux: EAGLE-OWL https://github.com/cornetp/eagle-owl

Compilando ed installando il software direttamente sul Raspberry si ha a disposizione un processo in background che permette di rilevare il CM160 connesso all'usb e rendere disponibile il database dei dati acquisiti.

Ecco la shell del Raspberry con i file di Eagle-Owl e i database connessi:


Il processo viene mandato in esecuzione in background all'avvio del Raspberry. Ho quindi creato un piccolo script in php che legge il database CM160 e scrive sul database mysql del mio sistema di monitoraggio. In questo modo posso storicizzare tutti i dati di produzione (il CM160 ha una memoria storica di un paio di mesi...) e renderli disponibili ad esempio ad un'interfaccia web che ne permette la visualizzazione.

Questo script viene mandato in esecuzione ogni minuto dal Raspberry (tramite task cron standard). In questo modo avrò a disposizione il dato di produzione aggiornato ogni minuto.

sabato 1 agosto 2015

Il primo progetto di acquisizione dati




Ho iniziato la progettazione del mio primo sistema di acquisizione dati con Raspberry PI e Arduino. L'idea è quella di avere una rete di sensori di acquisizione che trasmettono i dati ad una centrale che tramite rete ethernet comunica con un server per la memorizzazione.

I principali componenti sono:

- uno o più rilevatori
- un ricevitore
- un server DB per la memorizzazione
- un server WEB/APP per l'acquisizione e il monitoraggio in remoto

Ecco lo schema:



Un pò più in dettaglio...

RILEVATORI

Possono comunicare i dati con diverse modalità:

- wireless RF-433 verso il ricevitore
- ethernet verso il ricevitore
- USB verso il server

Possono essere delle schede Arduino, Raspberry o altro..
In funzione del tipo di comunicazione utilizzano ulteriori schedine di interfaccia e/o led di controllo.

RICEVITORE

Riceve i dati via wireless RF-433 o via ethernet.
Tramite ethernet trasmette i dati per la memorizzazione al server WEB/APP

E' costruito con una scheda Arduino, sulla quale è montato lo Shield Ethernet e il ricevitore wireless RF-433.
Sono presenti dei led di controllo.

SERVER WEB/APP

Riceve i dati dal ricevitore tramite ethernet o da eventuali sensori collegati direttamente all'USB.
Memorizza i dati sul server DB
Esegue il software WEB per monitoraggio remoto

Il server WEB/APP scelto è il famoso e comune Apache HTTPD, installato su Raspberry, sul quale gira la distribuzione linux Fedora.

Il software di monitoraggio è scritto in linguaggio PHP con interfaccia Bootstrap / HTML5, fruibile anche da dispositivi mobile.

SERVER DB

Memorizza fisicamente i dati ricevuti dal server WEB/APP.

Il software scelto come motore DB è Mysql Community Edition e verrà installato sullo stesso Raspberry dove risiede il server WEB/APP