Pagina 1 di 7

dati RPS3 su sistema Raspberry + emoncms.

Inviato: mer ott 23, 2013 12:08 pm
da STAFF
Volevo proporre un progetto davvero molto semplice, che permette il monitoraggio dei dati delle centraline Rotex RPS2 e RPS3 usando solo l'hardware standard Raspberry.
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

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.

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: dom ott 27, 2013 12:45 am
da gasala50
fcattaneo ha scritto:Volevo proporre un progetto davvero molto semplice, che permette il monitoraggio dei dati delle centraline Rotex RPS2 e RPS3 usando solo l'hardware standard Raspberry.
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.

Saluti,
Fabrizio.

:lol: Complimenti a Fabrizio .... appena ho un po' di tempo la voglio provare ...

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: lun nov 11, 2013 8:28 pm
da adalessa
Complimenti, grande.
Se posso, vorrei approfondire la parte di script che riguarda la correzione delle temperature di bollitore Ts e di ritorno Tr. In particolare vorrei una dritta per capire la procedura pratica che hai utilizzato per eseguire le misure di qualificazione delle sonde (per poi calcolare le tre costanti che chiami a, b e c da mettere nella curva di interpolazione).

Ti ringrazio

Andrea

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: mar nov 12, 2013 8:03 am
da FabioR
Rispondo velocemente richiamato all'ordine da fcattaneo :)
Purtroppo i due bimbi piccoli mi impediscono di dedicare la minima attenzione al forum e ai progetti, anche se i miei sistemi sono sempre in produzione e lavorano discretamente bene, anche se è il server che arranca.

Per la correzione, ho preso i dati pubblicati da Sergio&T su un altro thread, con i valori presunti veri ottenuti da uno strumento di riferimento, e ho dato tutto a mia moglie che per lavoro si occupa anche di analisi dei dati.

Lei ha messo questi quattro numeri se excel e ha reputato che la migliore approssimazione fosse polinomiale, usando semplicemente le regressioni messe a disposizione da excel.

I valori sono quelli calcolati da excel. Vedo se riesco a ritrovare il documento.

Ciao
Fabio

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: mer nov 13, 2013 3:35 pm
da adalessa
Ti ringrazio per la risposta.

Come mai avete deciso non correggere la TV? Avete fatto delle misure della PT1000 e avete visto che il valore che ritorna l'RPS3 è affidabile?


Meditavo poi sul'incertezza delle temperature TV e TR, in quanto valori espressi con un numero intero.
Prendiamo ad un primo esempio, un caso con seguenti i dati forniti dall'RPS3:
TR = 16° C
TV = 39° C
Flow = 4,1 litri/minuto

La TR corretta dal polinomio TRc = 16,24° C.
Ma bisogna anche considerare che TR = 16 in realtà può essere un'arrotondamento all'intero di 15,5 o 16,4. Che corretti col polinomio danno TRcmin = 15,76° C e TRcmax = 16,62° C.

Anche TV (se pur non corretto col polinomio come da scelta dell'autore dello script) ha un valore massimo e minimo da dover considerare: 39,4° C e 38,5° C, che portano entrambi a far arrotondare all'RPS3 al valore intero più prossimo e cioé 39° C.

Riassumendo abbiamo:

TRcmax = 16,62° C
TRcmin = 15,76° C
TRc = 16,24° C

TVmax = 39,4° C
TVmin = 38,5° C
TV = 39° C

Flow = 4,1 litri/minuto

Calcoliamo la potenza istantanea in tre casi:

Pmax = Flow*(TVmax-TRcmin)*0.0697 = 6,75 kW
Pmin = Flow*(TVmin-TRcmax)*0,0697 = 6,25 kW
P = Flow*(TV-TRc)*0,0697 = 6,50 kW (come calcolato nello script)

Lo scostamento assoluto di P con i due estremi è ±0.25 kW che è poco meno del ±4%.


Partiamo ora da un secondo esempio:

TR = 37° C
TV = 39° C
Flow = 4,1 litri/minuto

Calcoli alla mano:

TRcmax = 36,40° C
TRcmin = 35,55° C
TRc = 36,02° C

TVmax = 39,4° C
TVmin = 38,5° C
TV = 39° C

Flow = 4,1 litri/minuto

Pmax = Flow*(TVmax-TRcmin)*0.0697 = 1,10 kW
Pmin = Flow*(TVmin-TRcmax)*0,0697 = 0,60 kW
P = Flow*(TV-TRc)*0,0697 = 0,85 kW (come calcolato nello script)

Come vedete lo scostamento assoluto tra P e i suoi esteremi è pressoché costante (±0.25 kW) ma quello relativo è notevole (essendo la potenza in gioco minore), quasi il 30%.

Nel calcolo della produzione annua questo scostamento dovrebbe essere considerato in qualche modo, no? Che ne dite?

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: mer nov 13, 2013 11:49 pm
da sergio&teresa
Ciao, le prove di verifica della bontà del risultato delle sonde le avevo fatte io usando un termometro campione.

Dalle prove risultava che TR era starata si 1° sistematico rispetto a TS (correggibile direttamente mediante offset sulla rps/3), e che entrambe tendevano a sovrastimare la T in modo progressivo (cioè con errore via via maggiore al crescere della T reale).

Su portalsole correggiamo questa sovrastima mediante un fit lineare, mentre FabioR ha fatto un fit migliore polinomiale. E' evidente che essendo il dato di partenza un intero, non c'è possibilità di far altro che prendere come risultato del ricalcolo un intero. Sia esso l'arrotondamento o il troncamento non fa molta differenza... l'energia è un integrale sulla potenza, una piccola sovrastima al minuto X si può compensare con una sottostima al minuto X+1. Inoltre non è che dobbiamo calcolare l'orbita di un satellite intorno alla Terra... :wink: ci può bastare di migliorare il dato errato calcolato dalla rps/3.

Per quanto riguarda la TV, le prove non hanno evidenziato nessuno scostamento significativo rispetto al dato del termometro campione.

aiuto: dati RPS3 su sistema Raspberry + emoncms.

Inviato: mar gen 21, 2014 6:16 pm
da spercali
nuovo del forum....
sono in lotta per fare funzionare raspi in seriale con centralina rotex.

caricato iso (emoncmspiv5avr_2may) su sd e seguito pedestremente istruzioni di Fabrizio risultato: NIENTE.

Al raspi i dati in seriale arrivano sicuramente li ho letti a monitor....

non capisco dove sbaglio.

Qualcuno può aiutarmi ? Grazie mille.

Re: aiuto: dati RPS3 su sistema Raspberry + emoncms.

Inviato: mar gen 21, 2014 9:28 pm
da STAFF
spercali ha scritto:
caricato iso (emoncmspiv5avr_2may) su sd e seguito pedestremente istruzioni di Fabrizio risultato: NIENTE.

Al raspi i dati in seriale arrivano sicuramente li ho letti a monitor....



Se li hai letti a monitor con il raspi vuol dire che l'hardware va bene... ed è gia' una biona cosa.

Qualche domanda x capire...

Che comando lanci x vedere i dati a monitor ?
Emoncms funziona ? sei riuscito ad entrare x vedere la tua Apikey ?

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: mer gen 22, 2014 6:33 pm
da spercali
Beh intanto molte grazie della risposta.

Per vedere i dati a video ho dato il seguente comando: minicom -b 9600 -o -D /dev/ttyAMA0
ho settato la velocità come impostato sulla centralina e mi sono comparsi i valori.

Mentre per ciò che riguarda Emoncms: si funziona. Lo conosco, lo uso già per visualizzare i dati dell'imp. F.V.
Mi collego in remoto usando l'indirizzo che gli ho assegnato, accedo tramite user e pw, ho provato a mettere l' ApiKey che già uso per il F.V.
aspettandomi di veder comparire sulla lista degli input del mio account emon gli ingressi da te dichiarati sul software rasp....

Di prove ne ho fatte parecchie, prima di ' disturbare '. Mi sono perso ma non capisco dove....

Ti ringrazio ancora, spero di essere stato chiaro nella risposta.
ciao.

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: dom gen 26, 2014 12:06 pm
da STAFF
spercali ha scritto:

Per vedere i dati a video ho dato il seguente comando: minicom -b 9600 -o -D /dev/ttyAMA0
ho settato la velocità come impostato sulla centralina e mi sono comparsi i valori.

Mentre per ciò che riguarda Emoncms: si funziona. Lo conosco, lo uso già per visualizzare i dati dell'imp. F.V.


Molto strano allora..

prova a fare cosi...
Modifica il file rps3.php e scommenta questa riga :

//echo $address;

In pratica togli i due // e falla diventare cosi :
echo $address;

salva ed esci.

Poi richiama la pagina dal browser cosi :
http://192.168.1.240/arducon/rps3.php

sostituendio l'ndirizzo locale con il tuo....
Poi posta cosa ti appare a video...

Ciao,
F.

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: dom gen 26, 2014 3:01 pm
da spercali
ciao, ecco fatto. Penso che hai già colpito nel segno-----visto il messaggio che mi compare----

Not Found

L'URL richiesto / arducon/rps3.php non è stato trovato su questo server.

Apache/2.2.22 (Debian) Server at 192.168.1.5 Porta 80

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: dom gen 26, 2014 5:11 pm
da STAFF
hoops... mi sono accorto di un errore nella mia procedura..
L'indirizzo da richiamare in crontab o con il browser è il seguente :

http://192.168.1.240/rps3.php

..Ho corretto la procedura inserita nel primo post.

Prova con il browser e se funziona correggi anche il crontab :

sudo crontab -e

cambia l'indirizzo
salva e esci.

RImetti anche a posto ( dopo aver verificato che funziona ) anche il commento su echo $address.

Ciao,
F.

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: dom gen 26, 2014 5:51 pm
da spercali
beh almeno abbiamo scoperto un problema....
ma non è finita...

http://192.168.1.5/rps3.php

Attenzione : specificata la porta seriale non è valido in / var / www / php_serial.class.php on line 111

Warning : Impossibile impostare la velocità di trasmissione: la periferica non è impostata o aperto in / var / www / php_serial.class.php on line 204

Warning : Impossibile impostare la parità: il dispositivo non è impostata o aperto in / var / www / php_serial.class.php on line 254

Warning : Impossibile impostare la lunghezza di un personaggio: la periferica non è impostata o aperto in / var / www / php_serial.class.php on line 298

Warning : Impossibile impostare la lunghezza di un bit di stop: il dispositivo non è impostata o aperto in / var / www / php_serial.class.php on line 335

Warning : Impossibile impostare la modalità di controllo di flusso: il dispositivo non è impostata o aperto in / var / www / php_serial.class.php on line 376

Attenzione : L'apparecchio deve essere impostato prima di essere aperta in / var / www / php_serial.class. php on line 137

Attenzione : L'apparecchio deve essere aperto a leggerlo in / var / www / php_serial.class.php on line 474

Notice : Undefined offset: 1 / var/www/rps3.php on line 28

Notice : Undefined offset: 2 / var/www/rps3.php on line 29

Notice : Undefined offset: 3 / var/www/rps3.php on line 30

Notice : Undefined offset: 4 / var/www/rps3.php on line 31

Notice : Undefined offset: 5 in / var/www/rps3.php on line 32

Notice : Undefined offset: 5 in / var/www/rps3.php on line 32

Notice : Undefined offset: 5 in / var/www/rps3.php on line 34

Notice : Undefined offset: 6 / var/www/rps3.php on line 35

Notice : Undefined offset: 6 / var/www/rps3.php on line 35

Notice : Undefined offset: 6 in / var / www / rps3.php on line 37

Notice : Undefined offset: 7 / var/www/rps3.php on line 38

Notice : Undefined offset: 8 / var/www/rps3.php on line 39

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: dom gen 26, 2014 6:04 pm
da STAFF
spercali ha scritto:beh almeno abbiamo scoperto un problema....
ma non è finita...

http://192.168.1.5/rps3.php

Attenzione : specificata la porta seriale non è valido in / var / www / php_serial.class.php on line 111


OK.. e' solo un problema di permission ad usare la seriale da parte di php...

Prova a dare questi 2 comandi dalla console di Linux :

sudo usermod -a -G dialout www-data
sudo usermod -a -G dialout pi

Poi riprova...
Se non funziona ancora ci sara da darne un altro piu' ''forte'' :) ma vediamo, cosi dovrebbe bastare..

Fammi sapere..

Re: dati RPS3 su sistema Raspberry + emoncms.

Inviato: dom gen 26, 2014 7:12 pm
da spercali
penso che ci siamo (sei) quasi.

rimangono ancora questi 'allarmi'

Avviso : Undefined offset: 1 / var/www/rps3.php on line 28

Notice : Undefined offset: 2 / var/www/rps3.php on line 29

Notice : Undefined offset: 3 / var/www/rps3. php on line 30

Notice : Undefined offset: 4 / var/www/rps3.php on line 31

Notice : Undefined offset: 5 in / var/www/rps3.php on line 32

Notice : Undefined offset: 5 in / var / www/rps3.php on line 32

Notice : Undefined offset: 5 in / var/www/rps3.php on line 34

Notice : Undefined offset: 6 / var/www/rps3.php on line 35

Notice : Undefined offset: 6 in / var/www/rps3.php on line 35

Notice : Undefined offset: 6 / var/www/rps3.php on line 37

Notice : Undefined offset: 7 / var/www/rps3.php on line 38

Notice : Offset undefined: 8 / var/www/rps3.php on line 39

Grazie ancora di tutto.....