Visto che ho un impianto da 5,88 kWp e 123solar che fa da sistema di monitoraggio, che ho una PDC per riscaldamento/raffrescamento/ACS, e che la PDC ha un contatto pulito per accenderla e spegnerla, ho pensato di realizzare un sistema di accensione/spegnimento in base alla produzione solare, per avere, in estate e nelle mezze stagioni, ACS e raffrescamento gratis (o quasi, visto ridurrei lo scambio sul posto) massimizzando l'autoconsumo. 2° conto energia.
Avendo in casa anche un Raspberry collegato alla centralina dell'allarme, posizionato favorevolmente per essere collegato alla PDC, ho deciso di realizzare il sistema con Pogoplug (vicino all'inverter che contiene 123solar) e Raspberry che comunicano tra di loro.
Occorrente:
In alternativa a PogoPlug + Raspberry si potrebbe fare tutto con il Raspberry, ma bisogna poter raggiungere la PDC e l'inverter (per es. usando EZL70) e installare 123solar (Raspberry come datalogger)
Sul Rapsberry è installato Raspbian.
Ho collegato il Relé alla GPIO del Raspberry, secondo questo schema
Ecco una foto del collegamento
Dopo ho collegato il relé alla PDC. Ecco lo schema del connettore
Ho collegato il tutto e messo in una scatola di derivazione
Al Raspberry è collegato anche un dispositivo USB per rivelare lo stato della centralina antifurto, proveniente dal cavo che si vede entrare sulla sinistra.
Dal basso entrano: cavo alimentazione Raspberry, Cavo Ethernet, Cavo bipolare proveniente dalla PDC.
Veniamo, ora, alla parte software.
Sul Raspberry, inviando i valori “1”/“0” al GPIO17 si apre/chiude il relé.
Per esempio, via shell:
Per poter decidere se accendere o spegnere la PDC ho bisogno di leggere la produzione istantanea dell'impianto FV.
IP del Raspberry: 192.168.2.10
IP del PogoPlug: 192.168.2.12
Potrei leggere la produzione tramite invocazione HTTP, da Raspberry a Pogoplug:
e, tramite JSON, leggere il valore di ritorno GPTOT. Tramite questo valore decidere se accendere/spegnere.
In alternativa, sul Pogo, in base alla produzione invocare qualche comando remoto sul Raspberry.
Ho optato per questa seconda opzione: il motivo principale è che avevo in mente di mettere anche una pagina web per comandare manualmente l'accensione, sfruttando parte di 123solar.
Per tale motivo ho installato, su Raspberry, WebIOPi, applicazione per comandare da remoto la GPIO.
Modificato il file di configurazione /etc/webiopi/config
Ho abilitato l'avvio automatico di WebIOPi
Avviato il tutto
In questo modo la parte Raspberry è completata. Passiamo alla parte PogoPlug.
Sul Pogo ho realizzato uno script PHP e fatto alcune modifiche a 123solar.
Allego il diff con la versione 1.5.3.2 e un pacchetto con i file nuovi e modificati.
Ho aggiunto nel file config_main.php le seguenti righe
La prima indica l'url delle API da invocare per accendere/spegnere la PDC: basta fare una POST accodando /1 o /0.
La seconda la soglia per l'accensione. Per lo spegnimento ho impostato un'isteresi di 500 W: se la produzione supera 2500 W, la PDC si accende, se scende sotto 2000 si spegne.
Lo script gira, tramite cron, ogni 5 minuti.
Contemporaneamente ho aggiunto, sulla pagina principale di 123solar, dei pulsanti:
Inoltre c'è una etichetta che visualizza lo stato del relé e lo stato di aceensione/spegnimento (uno dei 3 punti precedenti).
In questo modo posso decidere se accendere/spegnere manualmente o se far decidere allo script.
Per mantenere memorizzato questa decisione, ho utilizzato Redis, un database noSQL, con il bind per PHP phpredis.
Questa è la pagina 123solar
Volevo condividere questo progetto, sperando che possa essere utile anche ad altri.
Non è perfetto e non è stato scritto in modo migliore... ma funziona.
Il prossimo passo sarà gestire l'accensione/spegnimento non in base alla produzione, ma alla reale potenza disponibile: se qualcuno accendesse un carico e la differenza tra produzione e consumo fosse inferiore a 0, si spegnerebbe la PDC, se fosse superiore al limite imposto si accenderebbe.
Ma questa è un'altra storia.
Avendo in casa anche un Raspberry collegato alla centralina dell'allarme, posizionato favorevolmente per essere collegato alla PDC, ho deciso di realizzare il sistema con Pogoplug (vicino all'inverter che contiene 123solar) e Raspberry che comunicano tra di loro.
Occorrente:
- Pogoplug E02 con 123solar (come discusso qui PogoPlug E02 come datalogger)
- Raspberry Pi
- Relé 5V, io ho preso questo 5V One 1 Channel Relay Module Board Shield For PIC AVR DSP ARM MCU Arduino
In alternativa a PogoPlug + Raspberry si potrebbe fare tutto con il Raspberry, ma bisogna poter raggiungere la PDC e l'inverter (per es. usando EZL70) e installare 123solar (Raspberry come datalogger)
Sul Rapsberry è installato Raspbian.
Ho collegato il Relé alla GPIO del Raspberry, secondo questo schema
Raspberry | PIN | Relay | |
3.3V | 1 | -> | VCC |
GND | 6 | -> | GND |
GPIO17 | 11 | -> | IN1 |
Ecco una foto del collegamento
Dopo ho collegato il relé alla PDC. Ecco lo schema del connettore
Ho collegato il tutto e messo in una scatola di derivazione
Al Raspberry è collegato anche un dispositivo USB per rivelare lo stato della centralina antifurto, proveniente dal cavo che si vede entrare sulla sinistra.
Dal basso entrano: cavo alimentazione Raspberry, Cavo Ethernet, Cavo bipolare proveniente dalla PDC.
Veniamo, ora, alla parte software.
Sul Raspberry, inviando i valori “1”/“0” al GPIO17 si apre/chiude il relé.
Per esempio, via shell:
codice:
root@raspberrypi:/home/pi# echo "17" > /sys/class/gpio/export root@raspberrypi:/home/pi# echo "out" > /sys/class/gpio/gpio17/direction root@raspberrypi:/home/pi# echo "1" > /sys/class/gpio/gpio17/value root@raspberrypi:/home/pi# echo "0" > /sys/class/gpio/gpio17/value
IP del Raspberry: 192.168.2.10
IP del PogoPlug: 192.168.2.12
Potrei leggere la produzione tramite invocazione HTTP, da Raspberry a Pogoplug:
codice:
http://192.168.2.12/programs/programmultilive.php
In alternativa, sul Pogo, in base alla produzione invocare qualche comando remoto sul Raspberry.
Ho optato per questa seconda opzione: il motivo principale è che avevo in mente di mettere anche una pagina web per comandare manualmente l'accensione, sfruttando parte di 123solar.
Per tale motivo ho installato, su Raspberry, WebIOPi, applicazione per comandare da remoto la GPIO.
codice:
pi@raspberrypi:/home/pi $ wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz pi@raspberrypi:/home/pi $ tar xvzf WebIOPi-0.6.0.tar.gz pi@raspberrypi:/home/pi $ cd WebIOPi-0.6.0 pi@raspberrypi:/home/pi $ sudo ./setup.sh
codice:
[GPIO] 17 = OUT [~GPIO] [SCRIPTS] [HTTP] enabled = true port = 8000 doc-root = /home/pi/WebIOPi-0.6.0/examples/scripts/macros [COAP] [DEVICES] [REST] # By default, REST API allows to GET/POST on all GPIOs # Use gpio-export to limit GPIO available through REST API gpio-export = 17 [ROUTES] # In the next example with have the bedroom light connected to GPIO 25 # and a temperature sensor named temp2, defined in [DEVICES] section # - GET /bedroom/light => GET /GPIO/25/value, returns the light state # - POST /bedroom/light/0 => POST /GPIO/25/value/0, turn off the light # - POST /bedroom/light/1 => POST /GPIO/25/value/1, turn on the light /pdc = /GPIO/17/value
codice:
pi@raspberrypi:/home/pi $ sudo update-rc.d webiopi defaults
codice:
pi@raspberrypi:/home/pi $ sudo /etc/init.d/webiopi start
Sul Pogo ho realizzato uno script PHP e fatto alcune modifiche a 123solar.
Allego il diff con la versione 1.5.3.2 e un pacchetto con i file nuovi e modificati.
Ho aggiunto nel file config_main.php le seguenti righe
codice:
$PDC_URL='http://192.168.2.10:8000/pdc'; $PDC_LIM=2500;
La seconda la soglia per l'accensione. Per lo spegnimento ho impostato un'isteresi di 500 W: se la produzione supera 2500 W, la PDC si accende, se scende sotto 2000 si spegne.
Lo script gira, tramite cron, ogni 5 minuti.
codice:
root@Pogoplug:/var/www# cat /etc/cron.d/aurora #!/bin/sh SHELL=/bin/bash PATH=/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin # Minute Hour Day of Month Month Day of Week User Command # (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) */5 5-22 * * * root php /var/www/123solar/scripts/fv_pdc.php >> /var/log/pdc.log 2>&1
- PDC sempre accesa
- PDC sempre spenta
- La PDC segue la produzione FV
Inoltre c'è una etichetta che visualizza lo stato del relé e lo stato di aceensione/spegnimento (uno dei 3 punti precedenti).
In questo modo posso decidere se accendere/spegnere manualmente o se far decidere allo script.
Per mantenere memorizzato questa decisione, ho utilizzato Redis, un database noSQL, con il bind per PHP phpredis.
Questa è la pagina 123solar
Volevo condividere questo progetto, sperando che possa essere utile anche ad altri.
Non è perfetto e non è stato scritto in modo migliore... ma funziona.
Il prossimo passo sarà gestire l'accensione/spegnimento non in base alla produzione, ma alla reale potenza disponibile: se qualcuno accendesse un carico e la differenza tra produzione e consumo fosse inferiore a 0, si spegnerebbe la PDC, se fosse superiore al limite imposto si accenderebbe.
Ma questa è un'altra storia.
Commenta