Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

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

Moderatori: gasala50, FabioR

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

Re: Interfaccia Web per Rotex RPS/2 e RPS/3

Messaggioda gasala50 » ven ott 07, 2011 9:56 am

FabioR ha scritto://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]; //litri al minuto
$W = $P*($TV-$TR)*0.0697; //Potenza istantanea in KW
$E = $W*($T/3600); //considerato un campionamento ogni T secondi


Ciao Fabio,

Mi permetto una segnalazione sull'applicazione della correzione delle temperature, le sonde da correggere sono TR e TV che sono quelle richiamate per il calcolo della Potenza e della relativa Energia.

Io sto lavorando con Python su un hardware FoxG20 con modesti risultati (conosco poco di Python) , per ora con questa routine vedo i dati inviati da RPS3 a FoxG20; Codice.Py

Codice: Seleziona tutto

import serial
import thread
import threading
import time

Go=1

class ricevi(threading.Thread):
 def __init__ (self, ser):
  threading.Thread.__init__(self)
  self.ser=ser
 def run(self):
  while Go:
   s=self.ser.read(50)
   if s:
    print "ttyS1_Rx:",s
  print "fine",s

if __name__ == "__main__":
 ser=serial.Serial(port='/dev/ttyS1',timeout=0.1)
 ricevi(ser).start()
 while Go:
  send=raw_input("ttyS1: ")
  print "invio:",send,ser.write(send)
  ser.write(send)
  if not send:
   Go=0
 time.sleep(1)
 ser.close()

Quello che non so come fare è trasferire il contenuto della stringa "s" nelle variabili HA,BK,P1,P2, ecc. ..... qui mi sono bloccato; e sto studiando una soluzione.... :roll:
Cordiali Saluti
Giulio

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

Re: Interfaccia Web per Rotex RPS/2 e RPS/3

Messaggioda gasala50 » ven ott 14, 2011 12:20 pm

FabioR ha scritto:io l'ho fatto fare semplicemente a php con explode()
a php ho passato la stringa come la ottengo dalla seriale.


Ci siamo quasi... ho ancora qualche particolare da sistemare, ma sta cominciando a funzionare.

Codice: Seleziona tutto

# Rotex.py   versione: 2011_10_14 Modificato By:Gasala50
# Collezione di Python class per semplificare l'uso di una scheda FOXG20

import serial
import thread
import threading
import time
import fox
from pysqlite2 import dbapi2 as sqlite

# Temperature sensor ID available on /sys/bus/w1/devices 
asensor = fox.DS18S20("000801ea499c")
bsensor = fox.DS18S20("000801d598d0")
csensor = fox.DS18S20("000801d5a5e0")
#   dsensor = fox.DS18S20("000801537dd0")
# definizione I/O
ledverde = fox.Pin('J7.3','low')
ledgiallo = fox.Pin('J7.4','low')
ledrosso = fox.Pin('J7.6','low')

Go=1

class ricevi(threading.Thread):
 def __init__ (self, ser):
  threading.Thread.__init__(self)
  self.ser=ser
 def run(self):
  T = 0
  E = 0
  TE = 2   # Valore base per totalizzatore Energia Prodotta
  DTon = 5      # Differenziale di accensione pompa riciclo
  DToff = 2      # Differenziale di spegnimento pompa riciclo
  while Go:
   s=self.ser.read(50)
   if s:
    s=str.split(s,';',8)   # lettura dati proveniente da Rotex RPS/3
    HA=int(s[0])
    BK=int(s[1])
    P1=int(s[2])
    P2=int(s[3])
    TK=int(s[4])
    TR=int(s[5])
    TS=int(s[6])
    TV=int(s[7])
    QT=s[8]
    P=float(QT.replace(',', '.'))

# Calcolo Potenza istantanea ogni 5 secondi
    if P > 0:
       W=(TV-TR)*P*0.0697
    else:
     W = 0
# Calcolo Energia
    E5 = W*0.00139   #Ciclo di 5 secondi / 3600 secondi in un'ora
    E = E + E5   #Sommatoria Energia al minuto primo (5 sec x 12 cicli)

# Controllo del segnale di blocco integrazione con energia elettrica (rps/3)
    if BK == 1:
   ledverde.on()
    else:
   ledverde.off()

# Controllo tempo di ciclo ogni 5 secondi
#    ledgiallo.on()
#    time.sleep(0.5)
#    ledgiallo.off()
    T = T + 1

    print HA ,BK ,P1 ,P2 ,TK ,TR ,TS ,TV ,'%.1f' %P ,'%.2f' %W ,'%.3f' %E
 
# Lettura valori di temperatura delle sonde 1-wire DS18S20 Tsa, Ts1, Ts2
    if T == 2:
       Tsa = asensor.getTemp()
       Ts1 = bsensor.getTemp()
    if T == 5:
       Tsa = asensor.getTemp()
       Ts2 = csensor.getTemp()
    if T == 8:
       Ts1 = bsensor.getTemp()
       Ts2 = csensor.getTemp()
#    if T == 10:
#   Tes = dsensor.getTemp()
    if T == 12:
   TE = TE + E   #E sostituito con 0.001 per prova counter
   print time.strftime("%Y/%m/%d", time.localtime(time.time())),'Ora:',time.strftime("%H:%M:%S", time.localtime(time.time()))\
   ,'Tot.',"%.3f" %TE,'Temp.C',"%.1f" %Tsa,"%.1f" %Ts1,"%.1f" %Ts2 #,"%.1f" %Tes

# Insert a new record on tables 'tabrps_acs' on the SQLite database "rotex"

   connection = sqlite.connect('/var/www/rotex.sqlite')
   cursor = connection.cursor()

   cursor.execute('CREATE TABLE IF NOT EXISTS tabrps_acs (id INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT, time TEXT, BK TEXT, P1 INTEGER, P2 INTEGER,\
    TK INTEGER, TR INTEGER, TS INTEGER, TV INTEGER, P FLOAT , W FLOAT, E FLOAT, TE FLOAT, Tsa FLOAT , Ts1 FLOAT, Ts2 FLOAT)')

   cursor.execute('INSERT INTO tabrps_acs VALUES (null, date("now","localtime"),time("now","localtime"),' + "%s" %BK + ',' + "%3d" %P1 + ',' + "%d" %P2 + ',\
   ' + "%3d" %TK + ',' + "%3d" %TR + ',' + "%2d" %TS + ',' + "%2d" %TV + ',' +"%.1f" %P + ',' + "%.1f" %W + ',' +"%.3f" %E + ',' +"%.3f" %TE + ',\
   ' + "%.1f" % Tsa + ',' +"%.1f" % Ts1 + ',' +"%.1f" % Ts2 + ')')

   connection.commit()
   print "DB='rotex' insert into Tabella 'tabrps_acs' OK"
# Controllo tempo ogni 60 secondi
       ledrosso.on()
       time.sleep(1)
       ledrosso.off()
# Controllo temperature per attivazione Pompa di riciclo sanicube n.1
       T1 = Tsa - Ts1
       if T1 >= DTon:
       ledgiallo.on()
       time.sleep(0.4)
       ledgiallo.off()
       time.sleep(0.4)
       if T1 <= DToff:
       ledgiallo.off()
# Controllo temperature per attivazione Pompa di riciclo sanicube n.2
#   T2 = Tsa - Ts2
#   if T2 >= DTon:
#       ledrosso.on()
#   if T2 <= DToff:
#       ledrosso.off()
   E = 0
   T = 0

  print "fine",s

if __name__ == "__main__":
 ser=serial.Serial(port='/dev/ttyS1',timeout=0.1)
 ricevi(ser).start()
 while Go:
  send=raw_input()
  print "invio:",send,ser.write(send)
  ser.write(send)
  if not send:
   Go=0
 time.sleep(1)
 ser.close()


Finalmente tutto con FoxG20....
Cordiali Saluti
Giulio

STAFF
Site Admin
Messaggi: 1850
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda STAFF » sab ott 15, 2011 8:55 am

Questo tread è dedicato al progetto che verte alla realizzazione di una interfaccia Web che utilizzi un server Linux basato sulla schedina FOX G20 .

L'idea e' quella di realizzare un complesso HD e software in grado di raccogliere i dati via seriale ( con script Pyton ) dalla centralina Rotex originale RPS/3 e di memorizzarli in un DB mysql residente sulla FOX.
Sulla FOX un server web ( Apache ) provvederà alla gestione e visualizzazione dei dati utilizzando PHP e flash.

Suggerisco di definire ogni script con un numero di versione incrementale, allo scopo di non fare confusione con gli aggiornamenti.

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

Re: Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda gasala50 » sab ott 15, 2011 9:44 am

fcattaneo ha scritto:Questo tread è dedicato al progetto che verte alla realizzazione di una interfaccia Web che utilizzi un server Linux basato sulla schedina FOX G20 .

L'idea e' quella di realizzare un complesso HD e software in grado di raccogliere i dati via seriale ( con script Pyton ) dalla centralina Rotex originale RPS/3 e di memorizzarli in un DB mysql residente sulla FOX.
Sulla FOX un server web ( Apache ) provvederà alla gestione e visualizzazione dei dati utilizzando PHP e flash.


x Fabrizio, Ok al nuovo tread.
- Sulla Fox, io ho utilizzato un web server Lighttpd con un database SQlite3, consigliato da acmesystems per problemi di memoria.
- La gestione e visualizzazione dei dati utilizzerò PHP (da fare) e flash (che non conosco e quindi chiedo aiuto, dove cominciare?)
- Esiste una alternativa Python per la gestione e visualizzazione dati. :?
Cordiali Saluti
Giulio

STAFF
Site Admin
Messaggi: 1850
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

Re: Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda STAFF » dom ott 16, 2011 9:02 am

gasala50 ha scritto:
- La gestione e visualizzazione dei dati utilizzerò PHP (da fare) e flash (che non conosco e quindi chiedo aiuto, dove cominciare?)
- Esiste una alternativa Python per la gestione e visualizzazione dati. :?


La gestione e visualizzazione se vuoi la faro' io ;-))

Dammi le indicazioni sul tipo di FOX che hai acquistato che vedo di prenderne una anche io x fare gli esperimenti.
Ha anche l'orologio RealTime ?... nel DB e' fondamentale inserire il timestamp in ogni record in modo da riuscire a dare una relativita temporale ad ogni serie di dati.

Sai se e' possibile o ci sono in giro script Pyton x interfacciare la FOX con device M-Bus ?

Un salutone e complimenti vivissimi x il tuo lavoro.

F.

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

Re: Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda gasala50 » dom ott 16, 2011 10:02 am

fcattaneo ha scritto:La gestione e visualizzazione se vuoi la faro' io ;-))

Dammi le indicazioni sul tipo di FOX che hai acquistato che vedo di prenderne una anche io x fare gli esperimenti.
Ha anche l'orologio RealTime ?... nel DB e' fondamentale inserire il timestamp in ogni record in modo da riuscire a dare una relativita temporale ad ogni serie di dati.

Sai se e' possibile o ci sono in giro script Pyton x interfacciare la FOX con device M-Bus ?
F.


x Fabrizio, grazie per la tua offerta di sviluppare la gestione, magari la facciamo in collaborazione cosa ne pensi ? così apprendo i segreti della visualizzazione in flash ;-)).
La mia scheda Fox G20 è la versione datata Maggio 2011, attualmente dovrebbe essere ancora in vendita perché sta uscendo una nuova versione Fox G20 V2 ma sarà commercializzata da Novembre.
La Fox ha già a bordo il real time clock che viene aggiornato da uno specifico comando unitamente a settaggio della data; (Esempio To set it type: debarm:~# date -s "8 OCT 2010 18:45:00" e To read the Hardware CLock type: debarm:~# hwclock -r)
In relazione all'interfaccia device M-Bus... credo di che esistano, ma dovrei approfondire.
rotex.zip
Archivio File finora sviluppati, da migliorare
(44.25 KiB) Scaricato 307 volte
Cordiali Saluti
Giulio

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

Re: Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda gasala50 » sab ott 22, 2011 10:25 pm

fcattaneo ha scritto:La gestione e visualizzazione se vuoi la faro' io ;-))

Un salutone e complimenti vivissimi x il tuo lavoro.

F.


Ciao Fabrizio, grazie per i complimenti, ma come ti avevo anticipato, ho bisogno di aiuto sull'argomento Grafici;
Sono riuscito con FusionCharts a visualizzare con Php e Xml per la visualizzazione di un grafico simile a quello sul Portalsole, ma posso abilitare solo le showAnchors='1' di 2 traccie , diversamente mi va in errore di Script. Vedi il file "R_Graf_Tsol.php" e il relativo file "data-sol.xml".
Non so se la soluzione sia cambiare metodo .... cosa ne pensi ?
Ti allego i file compressi in Rotex.zip
rotex.zip
(55.05 KiB) Scaricato 269 volte
Cordiali Saluti
Giulio

STAFF
Site Admin
Messaggi: 1850
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

Re: Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda STAFF » lun ott 24, 2011 5:27 pm

gasala50 ha scritto:
Sono riuscito con FusionCharts a visualizzare con Php e Xml per la visualizzazione di un grafico simile a quello sul Portalsole, ma posso abilitare solo le showAnchors='1' di 2 traccie , diversamente mi va in errore di Script. Vedi il file "R_Graf_Tsol.php" e il relativo file "data-sol.xml".
Non so se la soluzione sia cambiare metodo .... cosa ne pensi ?
[/attachment]


Ho visto i file e non vedo errori... la proprieta che citi se setta facilmente e quindi dubito ci sia un errore nel richiamarla.
Forse e' un limite di Fusion Charts nella versione free ?

Io ho usato questo :
http://www.anychart.com/products/anychart/overview/

Ciao,
F.

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

Re: Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda gasala50 » lun ott 24, 2011 7:59 pm

fcattaneo ha scritto:Io ho usato questo :
http://www.anychart.com/products/anychart/overview/
F.


Ok. ;-)) ... Proverò con anychart. ....
Ciao ... Grazie.
Cordiali Saluti
Giulio

STAFF
Site Admin
Messaggi: 1850
Iscritto il: mar nov 27, 2007 7:44 pm
Contatta:

Re: Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda STAFF » mer nov 28, 2012 11:23 pm

Ho ripreso la questione.. :)
Vorrei imparare Pyton perche mi sono messo in testa di studiare l'app con Pyton, mysql e apache su piattaforma Rasberry ( un computer linux completo a 40 euro... )

Sei andato avanti con il Pyton Giuglio ?
Provero i tuoi script non appena mi arrina il device ;)

Ciao,
F.

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

Re: Progetto Interfaccia Web X RPS/3 con scheda Linux FOX G20

Messaggioda gasala50 » gio nov 29, 2012 6:47 am

fcattaneo ha scritto:Ho ripreso la questione.. :)
Vorrei imparare Pyton perche mi sono messo in testa di studiare l'app con Pyton, mysql e apache su piattaforma Rasberry ( un computer linux completo a 40 euro... )

Sei andato avanti con il Pyton Giuglio ?
Provero i tuoi script non appena mi arrina il device ;)

Ciao,
F.

Ciao Fabrizio,
Mi fa piacere di risentirci sull'argomento .... e devo confessarti che non sono andato avanti :roll: a causa di alcuni problemini.
1) In agosto fulminazione sulla parte di alimentazione della FoxG20, sostituzione con nuovo acquisto. :evil:
2) Guasto del Hard Disk non riparabile del mio portatile, ho perso quasi tutto e sto cercando di recuperare i dati persi nel mio salvataggio su disco esterno, disordinato per ripristinarli sul nuovo portatile.
I problemi dei miei script sono rimasti tali, il più importante è il blocco del database SQlite dopo 10 giorni di registrazione;
Ho pensato per provare una soluzione utilizzando un DB Mysql su Apache che sto cercando di installare sul mio PC desktop Linux 12.04 con una distribuzione BitNami (con tanta fatica da principiante).
Come avrai capito sto quasi perdendo le speranze di riuscirci e questo tuo messaggio mi ha riacceso la volontà e forse un aiuto nella risoluzione dei proplemi.
Cordiali Saluti
Giulio


Torna a “Domotica, monitoraggio e controllo.”



Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti