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

lunedì 24 dicembre 2018

Home Automation System - L'inscatolamento continua...




Eccomi tornato a scrivere dopo un po' di tempo...
...tempo che, ultimamente, per motivi lavorativi, scarseggia (da un certo punto di vista direi "fortunatamente"...) e non mi permette di dedicarmi costantemente al mio hobby preferito (oddio...di hobby preferiti ne ho tanti...troppi, ma è umanamente impossibile coltivarli tutti come si deve).

Comunque, testa alta e avanti un passettino alla volta; prima o poi raggiungerò i traguardi prefissati; traguardi che al momento non conosco neanche io dettagliatamente...😂 navigo a vista.

Torniamo a noi: obiettivo di oggi è l'inscatolamento del dispositivo di monitoraggio della produzione dei pannelli fotovoltaici e del consumo del piano interrato...con la piccola aggiunta di un semplice sensore di temperatura ed umidità.

Qui di seguito il link ad un post precedente, per capire di cosa sto parlando...

https://domoticaduino.blogspot.com/2018/10/home-automation-system-due-pzem-004t.html

Come vedete dalla foto della situazione attuale, il tutto è molto disordinato...e soprattutto i fili dell'alta tensione (per alta tensione intendo la banale 220v) ed il PZEM-004T (il misuratore di consumi) sono poco protetti...non il massimo!


Appurato che il tutto funziona abbastanza bene ed è relativamente stabile, è arrivato il momento di confezionare il prodotto finito, chiaramente nei limiti di quello che sono in grado di fare 😉
Ricapitolando, devo sistemare due schede PZEM-004T e un ESP 8266, lasciar passare i cavi di collegamento dei segnali a bassa tensione e collegare l'alimentazione a tutte le schede.

Userò due scatoline:



Quella grande dovrebbe contenere entrambi i PZEM-004T, mentre quella piccola l'ESP 8266.
Con l'abilità che mi contraddistingue 😇 pratico dei fori nella plastica per il passaggio dei cavi



e sistemo le schede sulle relative basi. Ecco il dettaglio dei due PZEM-004T sulla base della scatola grande...ci stiamo giusti giusti


Chiudo il tutto e ricollego i cavi, ricordandomi anche di lasciare i collegamenti esterni per il sensore di temperatura ed umidità.
Ecco il risultato finale, un pò più in ordine di prima.


Quello che dovrò fare è solo tassellare le scatole nel muro (adesso sono solo appoggiate) e far passare i cavi della corrente in maniera più pulita.

Per adesso sono soddisfatto del risultato e del fatto che è tutto più in sicurezza.

-----------------------------------------------------
Oggetti simili usati in questo progetto
-----------------------------------------------------


3Pcs Geekcreit® NodeMcu Lua WIFI Internet Things Development Board Based ESP8266 CP2102 Wireless Module

12,66€
Geekcreit® NodeMcu Lua WIFI Internet Things Development Board Based ESP8266 CP2102 Wireless Module

4,11€
3Pcs Geekcreit® NodeMcu Lua ESP8266 ESP-12E WIFI Development Board

13,58€
AC Digital Multifunction Meter Ammeter TTL Current Tester Module PZEM-004T With Coil 100A 80-260V

5,25€
10pcs 100 x 80 x 32mm DIY Electronic Plastic Housing Junction Box Power Supply Box Instrument Case Jig Box XL-39

11,60€
2pcs 75 x 54 x 27mm DIY Plastic Project Housing Electronic Junction Case Power Supply Box

1,73€
5Pcs KY-015 DHT11 Temperature Humidity Sensor Module For Arduino

7,67€
10Pcs DHT11 Digital Temperature Humidity Sensor Module For Arduino

9,31€


venerdì 5 ottobre 2018

Home Automation System - Due PZEM-004T con unico ESP8266




Dopo il successo degli esperimenti fatti con il PZEM-004T connesso ad un Nodemcu ESP8266 per la misurazione dei consumi tramite pinza amperometrica (metodo poco invasivo...), sistema attualmente funzionante nel mio impianto per il monitoraggio dei consumi del piano terra (vedere https://domoticaduino.blogspot.com/2018/05/home-automation-system-misurazione-dei.html), ho deciso di aggiornare l'attuale sistema di monitoraggio della produzione dei pannelli fotovoltaici, basato su un ricevitore Wifi 433Mhz (vedere https://domoticaduino.blogspot.com/2017/08/home-automation-system-mqtt-e-rf433-per.html).

L'attuale sistema ha un problema dovuto al fatto che quando l'inverter è spento viene rilevato un passaggio di corrente anomalo che porta ad un'indicazione di circa 250W di consumo / produzione.

L'idea è quella di utilizzare lo stesso circuito usato per il monitoraggio dei consumi del piano terra...quindi un PZEM-004T, la sua pinza amperometrica e un Nodemcu ESP8266 per l'acquisizione delle informazioni e il loro invio verso il server MQTT.

Per chi non sapesse di cosa sto parlando, questi sono i dispositivi:

NODEMCU ESP8266

PZEM-004T

Poichè l'inverter è vicino al quadro elettrico in garage, decido di complicare un po' la cosa, a scopo di ottimizzazione, cercando di gestire due PZEM-004T con la stessa scheda ESP8266, in modo tale da poter monitorare anche il consumo del piano seminterrato.

E, dulcis in fundo, perchè non inserire anche un sensore di temperatura e umidità nello stesso circuito?

Faccio al volo due prove per verificare che effettivamente due PZEM-004T siano gestibili dalla stessa scheda e, verificatone il corretto funzionamento, creo il circuito definitivo, per adesso su breadboard.

Ecco il primo PZEM-004T connesso, tramite la sonda, al cavo di fase all'uscita dell'inverter...sulla destra si può notare anche il sensore di temperatura e umidità DHT11 (sensore non precisissimo, ma non male per le misure che voglio fare io...)


Questo invece è il secondo PZEM-004T connesso al cavo di fase del piano seminterrato, all'interno del quadro elettrico


Vista d'insieme:


Adesso non rimane altro che scrivere il software e fare qualche prova. Operazione relativamente semplice in quanto il codice è molto simile a quanto già fatto in precedenza.

Battezzo i topic MQTT per la gestione del dato su OpenHAB e creo i soliti items e oggetti all'interno di una sitemap...

Ecco il risultato sulla BASIC UI di OpenHAB



Il valore di Energy Consumption è dato dalla somma dei consumi dei 3 piani...due dei quali sono già monitorati (i valori non coincidono tra i due screenshot perchè sono stati presi in momenti diversi...)


Essendo informazioni che possono avere anche una loro valenza storica, ho creato i rispettivi grafici temporali sulla dashboard di Grafana


L'obiettivo principale è stato raggiunto: ad inverter spento la produzione passa a circa 0 W...


lunedì 28 agosto 2017

Home Automation System - MQTT e RF433 per monitor fotovoltaico...




Adesso provo ad integrare il mio ricevitore wireless RF433Mhz (sviluppato con Arduino e Modulo Ethernet) con MQTT, in modo da poter acquisire sul sistema di Home Automation i dati di produzione dell'impianto fotovoltaico.

Non sto a dilungarmi sui dettagli di come funziona il sistema di acquisizione; questo è il mio vecchio post relativo all'argomento

http://domoticaduino.blogspot.it/2017/02/sniffando-le-onde-radio-rf-433mhz.html

Quello che voglio fare adesso è la trasmissione al broker MQTT dei dati acquisiti, per la futura integrazione con OpenHAB.

Bisogna quindi mettere mano allo sketch di Arduino che gestisce il ricevitore RF 433Mhz e fare in modo di pubblicare su un particolare topic i dati acquisiti. Attualmente il sistema invia i dati ad un'interfaccia WEB tramite la chiamata ad un semplice servizio HTTP REST.

Bene, utilizzando l'IDE di Arduino (la stessa utilizzata per l'upload del firmware dei SONOFF), apro lo sketch ed effettuo la modifica al codice per gestire il collegamento con il broker MQTT.

Tralascio i dettagli tecnici perchè non sono lo scopo di questo post e se ne trovano tantissimi in giro per la rete, ma se qualcuno fosse interessato al sorgente dello sketch mi scriva una mail, sarò ben felice di condividerlo.

Il topic che ho scelto per la pubblicazione dei valori è il seguente:

arduino/groundfloor/rf433/solarenergy/state

Ho cercato di seguire la naming convention che stavo usando per i SONOFF e quindi

[device]/[zona]/[tipologia]/[id del dato]/state

Il contenuto del messaggio è semplicemente il valore della potenza rilevata in Watt.

Ecco i messaggi pubblicati, visti sempre tramite mqtt-spy:



Ed ecco il ricevitore:




Attualmente è "muto", ma il prossimo step sarà quello di aggiungere un led per verificarne il funzionamento ed eventualmente anche qualche sensore ambientale...

Vedremo...


venerdì 24 febbraio 2017

"Sniffando" le onde radio - RF 433Mhz




E' passato un pò di tempo dal mio ultimo post...vari impegni lavorativi e familiari mi hanno tenuto un pò lontano dai miei esperimenti...in fondo in fondo è un hobby...e in quanto tale ha "bassa priorità" soprattutto quando il tempo libero è poco...

Come forse vi ricorderete (vedi post http://domoticaduino.blogspot.it/2016/03/acquisizione-dati-produzione-impianto.html), la produzione del mio impianto fotovoltaico veniva acquisita tramite il ricevitore wireless OWL CM160 connesso via USB al Raspberry, che era in grado di ricevere i dati inviati via radio dalla pinza amperometrica collegata all'impianto fotovoltaico, a valle dell'inverter.


Purtroppo con il passare del tempo questo sistema si è rivelato instabile, in quanto spesso il driver di connessione USB del dispositivo al raspberry non funzionava correttamente e necessitava di un riavvio del sistema...non molto comodo...

Facendo diverse ricerche su internet ho capito che è possibile intercettare i segnali trasmessi dalla pinza amperometrica tramite un semplice ricevitore Wireless a 433Mhz, come quello attualmente utilizzato per ricevere i dati del sensore del gas, costruito con Arduino (vedi http://domoticaduino.blogspot.it/2015/08/acquisizione-dati-il-ricevitore.html)

Un articolo in particolare mi ha aperto la strada verso questa soluzione...eccolo

https://github.com/onlinux/OWL-CM180

E' basato su un diverso ricevitore, ma la logica è identica.

Questi sistemi utilizzano il protocollo di comunicazione della Oregon Scientific...in particolare il CM160 utilizza la versione 3...

Qui un documento che descrive il protocollo

DOWNLOAD

La trasmissione avviene tramite codifica Manchester OOK (on off keying) alla frequenza di 433 Mhz.

Collegato il ricevitore ad un Arduino UNO e scaricato il codice che permette la codifica del protocollo di comunicazione (scriverlo da zero sarebbe stato un pò lunghetto...), i pacchetti iniziano ad essere visualizzati sulla seriale. Tramite alcune "operazioni" sui bit si riesce in maniera abbastanza semplice a recuperare i dati "nascosti" nei pacchetti trasmessi...et voilà, il gioco è fatto: ecco il dato di potenza trasmesso dalla pinza amperometrica.

Esempi di pacchetti "grezzi" ricevuti in esadecimale

2a8081bf01501a011900 ==> valore di potenza rilevato = 434 W
2a81817f02d0fdf71800 ==> valore di potenza rilevato = 627 W
2a81813f0980f3b71300 ==> valore di potenza rilevato = 2366 W

Output sulla seriale


Adesso non mi resta altro che trasmettere il dato al server centrale per la memorizzazione su db e relativa visualizzazione su web.

Sniffando tutti i pacchetti trasmetti in OOK su 433 Mhz, noto che non sono tutti relativi alla pinza amperometrica; tra i pacchetti ricevuti e non riconosciuti come protocollo Oregon Scientific 3 ci saranno sicuramente quelli trasmessi da un sensore di temperatura esterno alla casa che comunica con un orologio che ho sul comodino...il protocollo è di tipo diverso e attualmente non sono in grado di leggerlo...ma non si sa mai...in un futuro più o meno lontano potrei riuscire a intercettare ed acquisire anche questa informazione...

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.