Sistema di rilevamento produzione pannelli fotovoltaici
Tratto da un delirio di marco focanti https://www.facebook.com/marco.focanti
Tecnologie e materiali necessari:
Smartphone con fotocamera e connessione wi-fi. Nel caso specifico ho utilizzato un vecchio IDEOS con android 2.3
Connessione adsl con IP pubblico (non necessariamente fisso)
Router wi-fi con possibilità di accesso root per impostare il port mapping e servizio di dynamic dns, per connessione adsl senza ip fisso. Nel caso specifico ho usato www.dlinkddns.com servizio riservato a router dlink.
Server remoto dove lanciare
script per la cattura delle immagini e memorizzare tutti i dati.
Consigliato server linux con php e mysql. Nel caso specifico ho
utilizzato http://www.cloudatcost.com/
con 35$ si hanno 10 gb di spazio. Per sempre. Ladri dal 2021 hanno modificato il modello di business, cancellando il per semrpe gratis.
Sono passato con OVH, che ha dei piani interessanti.
Programma ipwebcam per android (webserver) versione free
Programma phatch (0.2.7) per modificare le immagini. Io uso la versione per ubuntu
Accesso a google drive per creare un documento condiviso dove raggruppare i dati
Programma php per creare pagine dinamiche per la visualizzazione delle immagini. Nel caso specifico ho utilizzato questo http://www.minigal.dk/
Impianto fotovoltaico con inverter ;)
Fase 1
Installare ipwebcam sullo smartphone. Confermare tutti parametri di default, vanno bene.
Importante tener basso il valore della risoluzione del video, così l'immagine sarà più piccola. I valori a disposizione dipendono dallo smartphone usato.
Ora dobbiamo conoscere l'ip del telefono ed il programma ci aiuta. Dobbiamo cliccare la finestra in altro a sx (come si collega > sto utilizzando la wi-fi del router) e verrà fuori un valore tipo 192.168.0.10:8080 o altri simili, 10.10.X.X ma sempre con ip privato.
ATTENZIONE se sei qui arrivato fin qui e non hai capito bene dei termini sopra, interrompi pure, andando avanti, sarà sempre peggio ;)
Bene l'ip del telefono l'abbiamo trovato e possiamo chiamare da un browser della rete interna l'indirizzo con la porta 8080 (è di default). La pagina dell'ultima vesrione di ipwebcam è fatta molto bene e ben tradotta in italiano. Divertitevi con i parametri con il flash e con l'audio, se volete, ma a noi queste cose non interessano.
Se la versione di ipwebcam è per una vecchia versione di android dovreste vedere qualcosa di simile:
altrimenti questo:
A noi interessa catturare il singolo scatto della telecamera e la sintassi corretta è questa:
http://iptelefono:porta/shot.jpg
A questo punto dobbiamo modificare il router per rendere raggiungibile il nostro webcam server da ogni parte del mondo.
Fase 2
Configurare il router per rendere visibile il telefono dall'esterno. Come già detto dovremmo avere un account per configurare il dynamic dns.
Questo è la finestra di un router telecom per configurare il servizio di dns dinamico
A questo punto chiamando da fuori, non dovremmo mettere l'ip della nostra connessione, ma l'alias che ci da il dns dinamico, nella finestra sopra, indicato come dominio registrato.
Il passo successivo è mappare la porta del router, in modo tale che ad una chiamata sulla porta dominio.registrato:XX risponda il nostro webcamserver (192.168.0.10:8080)
Ecco come fare, sempre sul router telecom
Il nome del servizio webcam_server lo scegliamo noi, così come la porta esterna 62808 mentre la porta interna, se non modifichiamo le impostazioni del web server, rimane quella di default 8080
A questo punto se chiamo dal mondo internet http://dominioregistrato:62808 mi risponderà il server che gira nel mio ideos. Aggiungendo /shot.jpg, ecco che ottengo l'immagine del telefono in quel momento, cioè la lettura del display del mio inverter, con la produzione in quel momento,
Fase 3
Configurare un server esterno per chiamare con una certa cadenza (io lo faccio ogni 15 minuti) la url dell'immagine del telefono. Nel mio ubuntu server è bastato aggiungere al file crontab il comando “ */15 08-16 * * * /root/webcam ” dove dentro il file reso eseguibile /root/webcam mettiamo questo:
#!/bin/bash
cd /root
wget -q http://dominioregistrato:62808/shot.jpg -P /var/www/immagini/
A questo punto ogni 15 minuti di ogni giorno, dalle ore 8:00 alle 16:45, verrà memorizzata un serie di immagini che si chiameranno shot.jpg shot.jpg,1 shot.jpg,2 etc etc.
Bene il più è fatto. Ora manca solo rinominare le immagini (magari configurando il nuovo webcam server si potrebbe evitare ma nella vecchia versione dell'ideos non funziona)
Per questo utilizzo un potente script superconfigurabile, per trattare le immagini. Phatch
Con questi parametri in un immagine shot.jpg.X verrà incollato un testo con data e ora della cattura e verrà salvata con un nuovo nome contenente data e ora.
Praticamente il file shot.jpg diventa il file 2014-04-29_16-30-02.jpg
A questo punto è molto più facile ordinare le immagini con delle pagine web dinamiche le leggono ed ordinano le immagini.
Ora vanno organizzati i dati su un foglio elettronico e la mia scelta è andata su drive di google. Ora l'unico passaggio NON automatico è il caricamento delle letture nel foglio elettronico, perché non ho trovato un ocr in grado di leggere i valori dell'inverter.
Impostando la formattazione condizionale possiamo modificare la cella in base del valore per un immediata lettura dell'andamento della produzione. E' possibile anche integrare il foglio elettronico su una pagina web.
Se siete arrivati fin qui, complimenti, abbiamo finito.
Per commenti insulti, migliorie (daje fatemi l'ocr)