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 raspberry pi. Mostra tutti i post
Visualizzazione post con etichetta raspberry pi. Mostra tutti i post

giovedì 25 gennaio 2018

Home Automation System - Antifurto ed OpenHAB - Fase operativa




Come promesso, ecco la seconda parte del post relativo all'integrazione dell'antifurto con OpenHAB, solo per quanto riguarda lo stato degli ingressi...per poter monitorare anche in remoto il loro stato...cosa che la mia attuale centralina non mi permette di fare...


Passiamo quindi alla fase operativa (o distruttiva, dipenderà dall'obiettivo raggiunto 😱). Ricapitoliamo quanto c'è da fare:


  • portare tutti gli ingressi dell'antifurto al Raspberry PI3
  • costruire una piccola scheda di interfaccia per abbassare il segnale dei sensori / contatti da 4.5v a max 3.3v attraverso partitori di tensione (questo per non bruciare gli ingressi del raspberry)
  • connettere gli ingressi dell'antifurto agli ingressi di questa schedina e le sue uscite ai GPIO del raspberry
  • installare e configurare su OpenHAB il GPIO binding (vedere https://github.com/openhab/openhab1-addons/wiki/GPIO-Binding)
  • infine, inserire in una sitemap su OpenHAB gli oggetti per la visualizzazione dello stato degli ingressi dell'antifurto

Iniziamo...

Cablaggi vari

Il raspberry è vicino alla centralina dell'antifurto dove arrivano diretti 3 degli 11 ingressi che devo gestire...gli altri 8 sono gestiti da una scheda di espansione distante dalla centrale, alla quale è collegata solo tramite bus seriale...

Fortunatamente ci sono un paio di tubi vuoti che collegano le due scatole di derivazione...quindi mi basta passare un cavo di rete dalla scheda di espansione alla scatola vicino alla centrale (e quindi vicino al raspberry).

Ho scelto il cavo di rete perchè ha proprio 8 fili (quanti ne servono a me...), è schermato ed è comodo da passare...

E allora passiamo questo cavo...e dopo averlo passato colleghiamo i sui 8 terminali agli 8 ingressi della scheda di espansione dell'antifurto...


Questa sopra è la scatola di derivazione che contiene l'espansione dell'antifurto (scatola bianca in basso...) e tutti i segnali dei singoli sensori / contatti...
Il cavetto di rete è quello blu che si vede uscire dal secondo tubo a partire dall'alto...i suoi fili sono collegati ai morsetti neri che a loro volta sono collegati alla scheda di espansione.

Bene qui è tutto fatto...possiamo chiudere.

Andiamo al piano di sopra, dove c'è la scatola di derivazione che porta tutto alla centrale.

Ecco la scatola di derivazione, vicino alla centrale, dove arrivano tutti i cablaggi necessari...compreso il nostro cavetto di rete blu


Recupero anche i 3 ingressi non gestiti dalla scheda di espansione, ma collegati direttamente alla centrale, cercando di capire quali connessioni fossero quelle giuste in tutto questo groviglio...


Quindi, gli 8 fili del cavo di rete più i tre recuperati qui direttamente li porto alla schedina d'interfaccia autocostruita (e si vede...) con i partitori di tensione. Eccola, lato destro ingressi, lato sinistro uscite...al centro le resistenze per il partitore, una coppia per ogni ingresso...


Ultimo step, connessione tra uscite e GPIO del raspberry...


Se contate bene i fili, non sono 11 come detto prima ma 12...perchè oltre a tutte le connessioni dei segnali bisogna mettere anche la massa in comune tra impianto antifurto e Raspberry...il 12° filo è proprio questo...ed è connesso ad un terminale GND del raspberry (nel suo pin header ci sono più terminali GND...basta sceglierne uno comodo...)

Tutto collegato...il Raspberry si accende ancora e anche l'antifurto sembra ancora funzionante...bene, per adesso nulla di distruttivo!!!

Prima di passare al software faccio qualche prova: apro e chiudo le finestre e le persiane e verifico con il tester che il relativo ingresso passi da 0v a 3v (il partitore mi da 3v in corrispondenza del 4.5v originario) e viceversa.

Configuriamo OpenHAB

Adesso che la parte hardware è a posto (parola grossa!!!!), tocca al software...intervento sicuramente con potenzialità meno distruttive 😎

Installiamo su OpenHAB il GPIO Binding, che ci permette di interfacciare OpenHAB direttamente con i GPIO del raspberry su cui gira...

Come al solito passiamo dalla PAPERUI (l'interfaccia web di configurazione di OpenHAB) e seguiamo il percorso Add-ons -> Bindings


Per info dettagliate si può consultare la documentazione ufficiale

Fatto questo, occorre creare gli items OpenHab relativi ai singoli 11 ingressi che vogliamo gestire in modo che poi possano essere inseriti in una sitemap. Creiamo quindi il file gpio.items nella cartella /etc/openhab2/items ed inseriamo gli 11 oggetti legati ognuno ad un ingresso GPIO

Ecco come appare il mio file (editor Visual Studio Code con estensione Platformio, consigliatissimo!!!!)



Come vedete, oltre ad altri parametri, ogni riga è legata ad un pin diverso, che corrisponde ad un ingresso GPIO del raspberry. Il parametro activelow indica se bisogna considerare un contatto aperto se il segnale è a 0v ... nel nostro caso è a "no" perchè, come abbiamo visto, quando il contatto è APERTO, abbiamo tensione...

Aggiungiamo ancora gli items appena creati in una sitemap, editando il relativo file ed otteniamo a video qualcosa di simile a questo (visto da app OpenHAB su smartphone)


Adesso parte un periodo di verifica che tutto funzioni e stia in piedi ... non ne sono ancora certo al 100%, ma ci sono buoni presupposti...🍀🍀🍀



Disclaimer:

le operazioni indicate nel presente post sono eseguite a mio rischio e pericolo e non sono da utilizzare come guida tecnica. Chi effettua le stesse operazioni su proprio o altrui impianti ne è direttamente responsabile

venerdì 19 gennaio 2018

Home Automation System - Antifurto ed OpenHAB - L'idea iniziale




Incredibile ma vero!!! Sono riuscito a raggiungere un piccolo traguardo, inseguito da un pò di tempo...Riuscire ad integrare in OpenHAB lo stato dell'antifurto...più precisamente dei suoi ingressi!!!

Molti di voi diranno...beh, semplice...ormai tutti gli antifurti hanno questa caratteristica...tramite centraline moderne e app mobile è possibile farlo...certo!!! Ma il mio antifurto ha 10 anni e cambiare centralina ha un costo non di poco conto...e all'epoca non era così scontato avere un sistema "online" come oggi...

Il mio obiettivo era solo quello di intercettare lo stato dei sensori e non di permettere la gestione totale dell'antifurto, anche per un discorso di sicurezza...in sostanza, nel momento in cui per qualche motivo mi arriva la telefonata dall'antifurto a fronte di allarme, al volo riesco a capire quale sensore è stato aperto (chiaramente mentre mi catapulto a casa...)...ad oggi questa cosa non la posso fare perchè il combinatore telefonico non è in grado di interfacciarsi in maniera dettagliata alla centrale per capire quale ingresso ha fatto scattare l'allarme!!!

E allora basta intercettare tutti i cablaggi provenienti dai diversi sensori radar volumetrici e contatti magnetici, in qualche modo interfacciarli con una schedina tipo Arduino o simili in modo da ottenere lo stato di "APERTO" o "CHIUSO"...alla fine i diversi sensori dell'antifurto non fanno nient'altro che questo...

Inizio allora con i miei esperimenti per capire che tipo di segnale viaggia, documentazione alla mano...e scopro che, oltre al doppino che porta corrente a tutti i sensori / magneti (a 13.5v), ci sono tutti singoli fili, per ogni contatto / sensore che interessano a me...cioè, la massa di riferimento e la tensione...quando tra i due capi non c'è tensione, il contatto è CHIUSO, quando c'è una tensione positiva il contatto è APERTO...in sostanza sono gli 0 e gli 1 logici che interessano a me...

Prima di interfacciare il tutto con OpenHAB faccio delle prove con il tester...anche perchè devo capire che valore di tensione arriva sul contatto che mi identificherà il mio 1 logico...in base anche alla schedina che andrò ad usare come interfaccia, avrò delle soglie di tensione da rispettare per non bruciare gli ingressi...

Quindi, metto i terminali del TESTER tra massa e cavetto del segnale di un contatto (ad esempio porta d'ingresso, che è vicina alla scatola di derivazione...)...tensione pari a 0...perfetto, la porta è chiusa...Apro la porta, per sicurezza verifico la tastiera dell'antifurto che mi segnala contatto aperto e quindi controllo la tensione...4.5v...chiudo la porta...torna a 0...direi che funziona...ho intercettato il segnale che mi interessa...E' così per ogni sensore / contatto...

Direi che la mia idea può funzionare...poichè ho 11 ingressi da gestire (vari sensori e contatti singoli oppure messi in serie come unico ingresso...) devo trovare una schedina che mi permetta di gestire almeno 11 ingressi digitali, che abbia una tensione compatibile con i 4.5v forniti dai contatti e che possa essere connessa in rete per trasmettere l'informazione a OpenHAB tramite MQTT...

La scelta è tra

- una schedina NodeMCU ESP8266, con wifi integrato che però da specifica accetta solo 3.3v negli ingressi digitali;


- un Arduino UNO con shield ethernet che dovrebbe accettare fino a 5v negli ingressi digitali;


La prima scelta sarebbe più comoda perchè ha il wifi integrato ed è molto più piccola...bisognerà però fare un piccolo circuito per abbassare la tensione da 4.5v a sotto i 3.3v.
Con Arduino UNO invece la tensione è già a posto ma la scheda è molto più grande e necessita anche di uno shield (una scheda) in più...

Pensa che ti ripensa mi viene un lampo di genio...


il Raspberry PI3 dove attualmente stanno girando OpenHAB e il broker MQTT ha anche una serie di GPIO digitali...se riesco a far arrivare tutti i segnali, posso usarla direttamente, così evito di sprecare un'ulteriore scheda...ed essendo lo stesso sistema su cui gira OpenHAB non ho neanche la necessità di trasmettere il dato in rete...sarà tutto in locale... Purtroppo i suoi GPIO lavorano a 3.3v quindi il nostro 4.5v sicuramente non le farà bene...Niente paura...costruirò una piccola schedina di interfaccia con una serie di partitori di tensione per abbassare proporzionalmente la tensione sotto i 3.3v...tanto resistenze ne ho in abbondanza 😎


Se riesco a fare questo, posso usare direttamente un Binding di OpenHAB (vedi https://github.com/openhab/openhab1-addons/wiki/GPIO-Binding) che permette di integrare facilmente i segnali ottenuti tramite lettura di GPIO (in sostanza permette di agganciare un item di tipo logico 1/0 di OpenHAB allo stato di un ingresso del raspberry), senza dover fare un programma esterno, ed inviarli tramite MQTT...direi ottimo...(se funziona)

Ricapitoliamo:

 - far convergere tutti i segnali degli ingressi dell'antifurto verso il Raspberry PI3
 - creare una schedina per abbassare il segnale dei sensori / contatti da 4.5v a max 3.3v
 - collegare gli ingressi di questa schedina con i cavetti degli ingressi dell'antifurto e le uscite con il Raspberry
 - installare e configurare il binding GPIO di OpenHAB (vedi https://github.com/openhab/openhab1-addons/wiki/GPIO-Binding)
 - creare una sitemap su OpenHAB per visualizzare lo stato degli ingressi

Non dovrei aver dimenticato nulla...spero...

Nel prossimo post, a breve online, descriverò la fase operativa e il risultato ottenuto!

sabato 30 settembre 2017

Home Automation System - MQTT, SONOFF e OpenHAB v. 2




E' arrivato finalmente il momento di integrare MQTT in OpenHAB v.2.

Come descritto in un post precedente (http://domoticaduino.blogspot.com/2017/08/home-automation-system-sonoff-e-mqtt_19.html), attualmente ho un SONOFF Basic già installato e che comanda un lampione in giardino. Come abbiamo visto è già configurato per lavorare con MQTT e quindi lo integriamo in OpenHAB.

Seguo step by step il wiki di Tasmota, dove si parla di integrazione con OpenHAB (https://github.com/arendst/Sonoff-Tasmota/wiki/openHAB) e come prima cosa installo diversi ADDONS in OpenHAB:









A questo punto bisogna configurare la connessione di OpenHAB verso il broker MQTT, che ricordo essere installato sul Raspberry PI 3 dove c'è anche lo stesso OpenHAB. Per fare questo bisogna modificare il file di configurazione /etc/openhab2/config/mqtt.cfg o direttamente dalla shell linux (con nano o vi) oppure utilizzando Eclipse SmartHome Designer, un editor di testo evoluto che semplifica la modifica dei file di configurazione di OpenHAB v.2. Io lo utilizzo per comodità. La sua installazione è molto semplice e quello di cui necessita è semplicemente il path in cui trovare i file di configurazione di OpenHAB. Nel mio caso ho mappato una unità disco di rete chiamata Z che punta alla share samba definita automaticamente durante l'installazione di openHABianPI.

In particolare i parametri di configurazione che ho configurato sono i seguenti:

openhabianpi-mqtt.url=tcp://localhost:1883
server e porta del broker MQTT

openhabianpi-mqtt.clientId=openhabianpi
Client Id con cui openHAB si presenta al broker MQTT

openhabianpi-mqtt.user=openhabian
Username per l'accesso al broker MQTT

openhabianpi-mqtt.pwd=XXXXXXX
Password per l'accesso al broker MQTT

openhabianpi-mqtt.retain=true
Indica se al broker se mantenere i messaggi inviati

openhabianpi-mqtt è il nome logico che ho dato alla connessione ed è ripetuto in ogni parametro, questo perchè potremmo avere diverse connessione mqtt ognuna con il proprio nome. Questo nome verrà poi utilizzato nella configurazione degli items.

Se tutto è andato a buon fine, all'avvio di OpenHAB si dovrebbero trovare due righe di log simili a queste:


Bene, adesso si devono configurare gli items e la sitemap di OpenHAB.

Creo quindi un file nella cartella /etc/openhab2/items chiamato sonoffbasic01.items ed in cui vado ad inserire le definizioni degli items legati al comando del lampione da gestire.

Vado quindi a definire un oggetto di tipo "Switch" (di categoria light) che verrà agganciato al full topic mqtt del SONOFF Basic 01, che ricordo essere tasmota/garden/light/%topic%/%prefix%/. Ecco la sintassi:

Switch Garden_Light_1Lamp "Garden 1-Lamp"      <light>
            (gLightSwitchGarden)
            {mqtt="
                     <[openhabianpi-mqtt:tasmota/garden/light/sonoffbasic01/stat/POWER:state:default],
                     <[openhabianpi- mqtt:tasmota/garden/light/sonoffbasic01/tele/STATE:state:JSONPATH($.POWER)],
                     >[openhabianpi-mqtt:tasmota/garden/light/sonoffbasic01/cmnd/power:command:*:default]"
             }

Per informazioni sulla sintassi dei file .items, consultare la documentazione ufficiale http://docs.openhab.org/configuration/items.html

In questo modo ho definito un item chiamato Garden_Light_1Lamp agganciato ai messaggi MQTT appartenenti a determinati topics definiti dal blocco racchiuso tra {...}

Adesso vado ad inserire l'item in una sitemap per poterlo utilizzare. Modifico quindi il file di definizione della sitemap, andando ad aggiungere le seguenti righe:

Frame label="Lights" {

Switch     item=Garden_Light_1Lamp        label="Garden Light 1 Lamp"       icon="switch"


}

Non appena salvato, OpenHAB aggiorna la sitemap e se quindi andiamo a vederla, troviamo il nuovo blocco "Lights"



Ecco un video che riassume l'esito dell'integrazione:






sabato 5 agosto 2017

Home Automation System - OpenHAB 2 su Raspberry PI 3




E' arrivato il momento di preparare l'ambiente software per creare il vero e proprio sistema di Home Automation. La scelta è ricaduta sul software OpenHAB v.2 e ne ho parlato in un post precedente (vedi http://domoticaduino.blogspot.it/2017/07/home-automation-system-la-scoperta-dei.html)


Il mio scopo è di installare OpenHAB v.2 e tutti i servizi di contorno sul nuovo Raspberry PI 3; leggendo la documentazione vengo indirizzato su un sistema operativo configurato ad hoc...il suo nome è OpenHABian e seguendo la documentazione a questo link http://docs.openhab.org/installation/openhabian.html. scarico un'immagine preconfezionata, da installare sulla SD del Raspberry PI 3 per aver pronto, in pochi click e qualche minuto di attesa, un sistema operativo basato su Raspbian Lite contenente, già configurato, il software OpenHab v.2 più tutta una serie di servizi aggiuntivi e configurazioni a supporto.

Scarico allora l'ultima versione di OpenHABian da questo link https://github.com/openhab/openhabian/releases e, tramite il software Etcher, la scrivo sulla SD Card del Raspberry PI 3. Dopo aver inserito l'SD nell'apposito slot, avvio il Raspberry PI 3, non prima di averlo collegato alla LAN (per chi non avesse a disposizione la LAN, esiste anche una procedura per fare in modo che al primo boot venga agganciata la rete WiFi di casa...http://docs.openhab.org/installation/openhabian.html#wifi-setup). La procedura di installazione di OpenHABian è automatica e la si può seguire tramite SSH...Dopo una decina di minuti l'installazione si conclude ed il sistema è pronto.

La prima cosa da fare è eseguire il tool openhabian-config, che permette, tramite un'interfaccia interattiva testuale, di aggiornare e configurare l'ambiente e installare ulteriori servizi.

sudo openhabian-config


Oltre le voci 01 - Update e 02 - Upgrade System, da eseguire con frequenza per tenere aggiornato il sistema, il mio consiglio è quello di seguire i menù:

- 10 - Apply Improvements ==> tutte le voci

- 20 - Optional Components ==> 21 - Log Viewer, 22 - Mosquitto (il broker MQTT) e 23 - Grafana (non necessario ma è un ottimo strumento per creare dashboard)

- 30 - System config ==> a scelta, ma "obbligatorio" il cambio delle password di default (34 - Change Passwords); un'opzione molto utile è la voce 37 - Move root to USB; potrebbe aiutare in caso di problemi con le SD Card, facilmente "corruttibili"...in questo modo si può utilizzare un hard disk USB esterno al posto della SD Card, dove rimane solo la partizione di Boot. Entrambi i miei raspberry sono configurati in questo modo, ma ho preferito seguire una procedura manuale (vedi https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=44177&hilit=usb+stick+operating+system)

- 40 - openHAB related ==> 43 - Reverse Proxy opzione molto utile per esporre openhab su internet in tutta sicurezza in modo da poterlo utilizzare anche da fuori casa, utilizzando il servizio NGINX attenzione a configurare bene le sicurezze; altrimenti chiunque su internet potrebbe prendere il controllo dei nostri dispositivi.

A questo punto OpenHAB configurato e pronto all'uso. Per conoscere come funziona, configurarlo ed sfruttarlo al massimo delle sue potenzialità vi lascio ai tutorial e alla guida ufficiale che trovate direttamente sul sito http://docs.openhab.org/ e soprattutto al ricco forum https://community.openhab.org

Anche su youtube esistono tantissime guide e tutorial. Il canale ufficiale di OpenHAB è https://www.youtube.com/channel/UC7OK88DW0La_BJlcXZg8ydQ/feed

Un'ultima informazione che potrebbe tornare utile: come scoprirete leggendo la documentazione, OpenHAB può usare dei servizi di persistenza su DB per memorizzare le informazioni ricevute (ad esempio dati di temperatura, umidità, etc etc...); uno di questi è la persistenza su InfluxDB, un motore database di tipo NOSQL per la memorizzazioni di serie temporali. Questo permette di memorizzare e storicizzare tutti o alcuni dati gestiti da OpenHAB in modo tale da poter creare grafici e tabelle. Grafana, lo strumento opensource per la creazione di dashboard interattive, si integra perfettamente con questo tipo di database. Per chi volesse invece gestire, come servizio di persistenza, un database relazionale standard, esiste l'integrazione con il famosissimo MYSQL. Io ho deciso di utilizzare InfluxDB, ed ho quindi provveduto alla sua installazione e configurazione sul Raspberry, seguendo la documentazione ufficiale https://docs.influxdata.com/influxdb/v1.3/introduction/installation/

Per riassumere, il mio sistema è configurato nel seguente modo:

- OpenHAB v 2.1
- Broker MQTT mosquitto, con autenticazione abilitata
- Grafana
- InfluxDB, come motore di persistenza di OpenHAB
- Reverse proxy SSL con autenticazione, tramite NGINX , per esporre in sicurezza su internet OpenHAB e Grafana.

Riguardo l'ultimo punto, per chi non fosse troppo avvezzo alle problematiche di tipo "sistemistico" derivanti dall'utilizzo di un reverse proxy nella propria rete e la configurazione del NAT / Port Forwarding sul proprio router, OpenHAB offre un servizio di pubblicazione su internet di un'installazione OpenHAB locale, attraverso il suo portale My OpenHAB, previa registrazione.

Ok, siamo pronti ad utilizzare il nostro Home Automation System


martedì 1 agosto 2017

Home Automation System - Nuovi arrivi...




Tra una cosa e l'altra, il tempo passa e sono già arrivati altri due nuovi giocattolini, per il mio Home Automation System: un SONOFF Basic e il Raspberry PI 3.

Il SONOFF Basic è un semplice Switch WiFi, del tutto simile al già conosciuto POW, ma senza il misuratore di corrente integrato. E' praticamente un relay comandabile tramite WiFi. Sarà un ulteriore oggetto su cui fare esperimenti...



Il Raspberry PI 3 invece è il famoso mini computer con caratteristiche di tutto rispetto (vedi https://www.raspberrypi.org/products/raspberry-pi-3-model-b):

- Quad Core 1.2GHz Broadcom BCM2837 64bit CPU
- 1GB RAM
- BCM43438 wireless LAN and Bluetooth Low Energy (BLE) on board
- 40-pin extended GPIO
- 4 USB 2 ports
- 4 Pole stereo output and composite video port
- Full size HDMI


Lo userò per far girare il sistema di Home Automation System che ho scelto, dopo diverse prove: OPENHAB v.2, più vari software e servizi annessi (ad esempio il Broker MQTT)






Lo affiancherò al già presente Raspberry PI 2, sul quale, ormai da mesi, gira OSMC, l'ottimo sistema operativo Open Source, per trasformare il PC in Media Center.

Insieme al Raspberry PI 3 è arrivato anche un ottimo kit, con alimentatore da 3A (per stare tranquilli...), case trasparente e dissipatori (vedi https://www.amazon.it/dp/B01DDFFOYK/ref=cm_sw_r_cp_dp_T2_UUqGzb73MSE2T)

Nei prossimi articoli scriverò due righe sulla preparazione del Raspberry PI 3 con OpenHab v.2

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

sabato 14 marzo 2015

Music Server su Raspberry PI




Visto che ormai ho un computer con un consumo di corrente irrisorio che mi permette di tenerlo perennemente acceso e connesso alla rete locale, perchè non sfruttarlo anche per altre cose utili e meno utili???

Ho letto in giro su internet che esistono degli ottimi software per trasformare un pc/server linux in un media center...io ne cerco uno che possa funzionare in modalità "terminale" perchè per non occupare risorse inutilmente non voglio caricare in memoria l'ambiente grafico del sistema operativo...

Ho trovato un fantastico software che fa al caso mio...MPD - Music Player Daemon (http://www.musicpd.org/)


E' un software per linux che gira come Daemon (quindi come servizio) e permette di mandare in esecuzione musica di diversi formati, grazie al supporto di plugin e librerie. La cosa interessante è che può essere controllato via rete e può trasmettere anche la musica in streaming HTTP. Permette inoltre di gestire una libreria audio organizzata per cartelle con la possibilità di creare diverse playlist.

E' stato scritto e pensato per utilizzare pochissime risorse e quindi gira bene anche sul Raspberry PI senza appesantire il sistema.

Esistono numerose applicazioni client che ne permettono la completa gestione...applicazioni che girano anche su smartphone Android e iOS...

L'installazione è semplice in quanto per la distro Fedora Remix 21 (il sistema operativo che attualmente ho installato sul mio Raspberry PI) esiste direttamente il package da installare tramite YUM nel modo standard.

Una volta installato con il semplice comando yum install mpd è necessaria una piccola configurazione per poter essere utilizzato.

Il file di configurazione si trova in /etc/mpd.conf.

Le cose importanti da configurare sono l'impostazione del percorso dove si trovano i file audio che saranno aggiunti alla libreria, l'indirizzo di rete e la relativa porta su cui il servizio deve rimanere in ascolto per eventuali connessioni client ed infine le periferiche audio che si dovranno gestire...

Nel mio caso ho utilizzato un'unica periferica audio che attiva l'uscita jack del Raspberry PI; uscita che ho collegato con un cavetto RCA all'impianto Stereo.



Eventualmente si possono attivare altre periferiche di uscita e/o gli stream http.

Una volta effettuata la configurazione nel modo opportuno è sufficiente mandare in esecuzione il servizio. Da questo momento tutti i client connessi nella stessa rete del Raspberry saranno in grado di connettersi all'indirizzo ip e alla porta specificati nel file di configurazione.

Naturalmente è opportuno impostare l'esecuzione del servizio all'avvio del sistema, così nel caso raspberry si riavvii, il servizio parta in automatico senza nessuna necessità di intervento manuale. A tale scopo è possibile impostare un avvio silente che non manda in esecuzione direttamente il servizio MPD ma solo un demone che attiva il servizio all'arrivo della prima connessione...questo per non sprecare risorse inutili in caso di non utilizzo. Per fare ciò è sufficiente impostare all'avvio il servizio mpd.socket al posto di mpd.service.

Chiaramente, nel caso sia attivo il firewall sul Raspberry (ad esempio iptables), è necessario lasciare passare i pacchetti sulla porta di comunicazione del servizio.

Ad esempio, nel mio caso il raspberry ha indirizzo ip 192.168.1.3 e il servizio MPD è in ascolto sulla porta 6600 (quella di default). Quindi sul firewall iptables ho configurato la porta 6600 in modo tale che lasci passare i pacchetti in ingresso.

Ultima cosa che rimane da fare è quella di utilizzare un client da remoto...quindi installo sia sul mio smartphone che sul tablet (entrambi Android) il software MPDroid, che si trova facilmente su Google Play ed è totalmente gratuito.


Qualche screen...

Smartphone



Tablet


Alternativa per sistemi operativi iOS è MPoD, su Apple Store, anche'esso gratuito.


Non rimane nient'altro che accendere lo stereo e alzare il volume :)

venerdì 6 marzo 2015

Raspberry PI 2 - E' arrivato...




Dopo qualche giorno di attesa è finalmente arrivato il corriere con la sorpresa tanto aspettata...il nuovo Raspberry PI 2...

Eccolo in tutto il suo splendore...



Le caratteristiche tecniche sono di tutto rispetto e questo aggeggino è assimilabile del tutto ad un vero e proprio PC...con i vantaggi di avere un consumo bassissimo e un'occupazione di spazio del tutto ridotta...

Ecco le caratteristiche:

- Processore quad-core ARM Cortex-A7 900MHz
- 1GB RAM
- 4 porte USB
- 40 pin GPIO
- Porta HDMI
- Porta Ethernet
- jack 3.5mm per audio / video composito
- Lettore Micro SD

Non ha memoria interna ed è quindi necessario utilizzare una scheda micro SD come "Hard Disk"...io ho optato per una Sandisk da 16GB, che dovrebbe essere più che sufficiente per il sistema operativo + varie ed eventuali...

Come sistema operativo, andrò ad installare Fedora 21 Remix, versione ottimizzata per Raspberry della famosa distro linux Fedora...

Bando alle ciance, iniziamo a far lavorare il nuovo giocattolino...

domenica 11 gennaio 2015

Una nuova avventura...




Benvenuti a tutti in questa nuova avventura nel mondo dell'elettrotecnica e informatica...

Finalmente dopo diverse pensate e ricerche su internet, ho deciso anch'io, come tanti altri, di immergermi nel mondo di Arduino e dintorni...

Elettronica ed informatica insieme mi hanno sempre appassionato e, grazie alle dritte di Piero, sono riuscito a colmare le lacune lato elettrico ed elettronico e quindi avere le basi per poter fare qualcosa di utile e completo...

...chi mi conosce sa già che sto portando avanti, sempre insieme a Piero, un progetto tanto ambizioso quanto stimolante...la costruzione di un simulatore di volo (vedi www.mylearjet45.net)

In questo blog invece voglio raccontare i miei sforzi nella prototipazione di circuiti inerenti la domotica...utilizzando principalmente le schede Arduino e Raspberry PI...con relative espansioni

Per chi non le conoscesse:

Arduino



E' una piattaforma elettronica opensource basata su hardware e software facili da usare. Ne esistono diversi modelli che variano in funzione di caratteristiche tecniche e dimensioni; la scelta, quindi, viene effettuata in funzione degli obiettivi.

Molto utile per chi vuole iniziare è l'acquisto dello Starter Kit che contiene la scheda Arduino più tutta una serie di accessori utili a realizzare piccoli progetti.

Attraverso ingressi e uscite digitali e la programmazione software si possono realizzare dei veri e propri circuiti per interfacciarsi a sensori e pilotare attuatori.

Sono presenti numerose schede di espansione (chiamate shield) per aggiungere funzionalità, come ad esempio la connettività wifi / ethernet oppure la ricezione di segnali infrarossi o bluetooth oppure la gestione delle schede sd, etc etc

Il linguaggio di programmazione utilizzato si basa sul c, e anche chi non è molto competente sotto quest punto di vista, trova a disposizione tantissimi esempi da cui partire facilmente adattabili ai propri scopi.

Trovate tutte le info sul sito ufficiale www.arduino.cc

Raspberry PI



A differenza di Arduino, è un vero e proprio computer in miniatura in grado di far girare distribuzioni linux. È equipaggiato con diverse porte usb, uscita hdmi, jack per audio/video, processore e ram..insomma un vero e proprio pc ma con dimensioni pari ad una carta di credito..e consumi bassissimi...
...come Arduino ha diversi ingressi e uscite digitali e analogiche GPIO (General Purpouse Input Output)

È presente in diverse configurazioni tecniche...l'ultimo modello di Febbraio 2015, il Raspberry Pi 2 Model B, è equipaggiato con

  • Un processore ARM Cortex-A7 quad-core da 900MHz
  • 1 GB RAM
  • 4 porte USB
  • 40 pin GPIO
  • Porta HDMI A/V
  • Porta Ethernet
  • Jack da 3.5mm per audio e video composito
  • Interfaccia per modulo Camera (CSI)
  • Interfaccia per modulo Display (DSI)
  • Slot per Micro SD
  • VideoCore IV per grafica 3D

Per ulteriori info www.raspberrypi.org

Entrambe le schedine, combinate insieme, possono essere usate per infiniti progetti..il limite è solo la fantasia...

È arrivato il momento di iniziare...e lo facciamo con Arduino...attendiamo l'arrivo dello Starter Kit Arduno Uno Rev 3...