Anche per il software ho voluto utilizzare il sistema Open di monitoraggio dei dati chiamato Emoncms... devo dire che sono rimasto sbalordito dalle possibilità che offre questo programma.
Per precisione sottolineo che tale software è utilizzato anche nell'ambito del progetto openenergymonitor.org e l'implementazione che ho fatto dei dati della centralina RPS di Rotex, è uno standard nell'ambito di emoncms e quindi puo essere utilizzata in aggiunta ad altri sistemi di acquisizione di segnali.
La connessione della centralina RPS/2-3 a Raspberry è molto semplice ed è illustrata in questa immagine :
![Immagine](http://www.portalsole.it/archivio/rotex-raspberry-pi-serial-connect-schematics.png)
Come si puo vedere basta connettere al pin 6 e 10 della GPIO di Raspberry lo spinotto di connessione alla RPS/3, attraverso 2 resistenze che servono ad "aggiustare" i livelli di segnale utilizzati dalla seriale di RPS di Rotex(5V) e quella di Raspberry ( 3.3V).
Sulla schedina SD di Raspberry occorre installare il sistema operativo ( io ho utilizzato l'immagine "Raspian" ) e il sistema di gestione e memorizzazione dei dati Emoncms.... tutto qua.
La procedura di installazione di tutto quanto serve, è ben documentata sul sito di emoncms.
Oltre a questi software standard occorre installare uno script che ho realizzato in php, che permette l'acquisizione dei dati della RSP/3 e l'invio degli stessi secondo il formato JSON utilizzato da Emoncms.
Sotto lo script in php che va installato nella directory /var/www di raspberry con il nome rps3.php, avendo l'accortezza di renderlo eseguibile tramite il comando :
chmod 777 /var/www/rps3.php
Preciso che per questo script mi sono ispirato al software studiato da FabioR e presentato in questo tread : viewtopic.php?f=12&t=716&start=0&hilit=Apply+polynomial+data+correction, al quale ho aggiunto l'interfaccia seriale di connessione ai dati e l'invio degli stessi nel formato richiesto da Emoncms ( JSON ).
Lo script utilizza anche la classe snoopy che è essenzialmente un file da aggiungere sempre in /var/www e che si puo scaricare qui .
<?php
include "php_serial.class.php";
include "Snoopy.class.php";
error_reporting(E_ALL);
ini_set("display_errors", 1);
define("PORT","/dev/ttyAMA0");
$serial = new phpSerial;
$serial->deviceSet(PORT);
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
sleep(5);
$read = $serial->readPort();
$serial->deviceClose();
//Parse the data string
$data = str_replace(",",".",$read);
$data = explode(";", $data);
//Temperature correction factors
$a = -0.0002;
$b = -0.0472;
$c = +1.0434;
//Assign data
$HA = $data[0];
$BK = $data[1];
$P1 = $data[2];
$P2 = $data[3];
$TK = $data[4];
$y = ($a*($data[5])^2)+($b*($data[5]))+$c;
//Apply polynomial data correction
$TR = ($data[5]+$y);
$y = ($a*($data[6])^2)+($b*($data[6]))+$c;
//Apply polynomial data correction
$TS = ($data[6]+$y);
$TV = $data[7];
$P = $data[8];
$snoopy = new Snoopy;
$snoopy->fetch("http://192.168.1.240/emoncms/input/post.json?json={HA:$HA,BK:$BK,Pompa1:$P1,Pompa2:$P2,TCollettore:$TK,TRitorno:$TR,TBollitore:$TS,TMandata:$TV,Flow:$P}&apikey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
?>
Per rendere funzionale questo script occorre inserire la propria APIKEY in scrittura rilevabile nel backoffice di emoncms , e l'indirizzo corretto del proprio sistema Raspberry sulla rete; nel mio caso 192.168.1.240.
Oltre a questo occorre schedulare questo script ogni minuto; per fare questo occorre .
lanciare il comando
crontab -e
ed inserire nel file che si apre sull'ultima riga :
* * * * * wget -x http://192.168.1.240/rps3.php > /dev/null
Salvare con CRT + X poi y, enter.
Ultima operazione quella di dare i permessi a php di utilizzare la seriale...
sudo usermod -a -G dialout www-data
sudo usermod -a -G dialout pi
Rebuttare infine il sistema :
reboot
( tutti i comandi dati dal raspberry assumo che siano stati dati dall'utente root e non PI ).
Saluti,
Fabrizio.