dati RPS3 su sistema Raspberry + emoncms.

Sistemi elettronici di controllo e monitoraggio, Arduino, Rasberry ecc.

Moderatori: gasala50, FabioR

Avatar utente
fcattaneo
Site Admin
Messaggi: 1579
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

dati RPS3 su sistema Raspberry + emoncms.

Messaggioda fcattaneo » mer ott 23, 2013 12:08 pm

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.

Avatar utente
gasala50
Messaggi: 107
Iscritto il: mar dic 02, 2008 2:53 pm
Località: Grosio (SO)

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda gasala50 » dom ott 27, 2013 12:45 am

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 ...
Cordiali Saluti
Giulio

adalessa
Messaggi: 21
Iscritto il: ven ott 29, 2010 9:38 am

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda adalessa » lun nov 11, 2013 8:28 pm

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

FabioR
Messaggi: 125
Iscritto il: ven set 30, 2011 8:11 am

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda FabioR » mar nov 12, 2013 8:03 am

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

adalessa
Messaggi: 21
Iscritto il: ven ott 29, 2010 9:38 am

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda adalessa » mer nov 13, 2013 3:35 pm

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?

Avatar utente
sergio&teresa
Messaggi: 1681
Iscritto il: mer giu 24, 2009 10:29 pm

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda sergio&teresa » mer nov 13, 2013 11:49 pm

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.
Segui il mio impianto su Portalsole:
Liveplant3

spercali
Messaggi: 15
Iscritto il: dom gen 19, 2014 11:22 am

aiuto: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda spercali » mar gen 21, 2014 6:16 pm

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.

Avatar utente
fcattaneo
Site Admin
Messaggi: 1579
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

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

Messaggioda fcattaneo » mar gen 21, 2014 9:28 pm

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 ?

spercali
Messaggi: 15
Iscritto il: dom gen 19, 2014 11:22 am

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda spercali » mer gen 22, 2014 6:33 pm

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.

Avatar utente
fcattaneo
Site Admin
Messaggi: 1579
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda fcattaneo » dom gen 26, 2014 12:06 pm

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.

spercali
Messaggi: 15
Iscritto il: dom gen 19, 2014 11:22 am

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda spercali » dom gen 26, 2014 3:01 pm

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
Allegati
Cattura.PNG
(13.08 KiB) Scaricato 16 volte

Avatar utente
fcattaneo
Site Admin
Messaggi: 1579
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda fcattaneo » dom gen 26, 2014 5:11 pm

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.

spercali
Messaggi: 15
Iscritto il: dom gen 19, 2014 11:22 am

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda spercali » dom gen 26, 2014 5:51 pm

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

Avatar utente
fcattaneo
Site Admin
Messaggi: 1579
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda fcattaneo » dom gen 26, 2014 6:04 pm

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..

spercali
Messaggi: 15
Iscritto il: dom gen 19, 2014 11:22 am

Re: dati RPS3 su sistema Raspberry + emoncms.

Messaggioda spercali » dom gen 26, 2014 7:12 pm

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.....


Torna a “Domotica, monitoraggio e controllo.”



Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti