Pages: [1] 2   Go Down
Author Topic: Consiglio su dove memorizzare i dati  (Read 853 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti,
ho realizzato un progetto (monitoraggio energia casalinga) con l’aiuto di molti di voi.
Ormai è in funzione da quasi 4 mesi.

I dati generati dall’Arduino vengono memorizzati su una SD da 4 Gb.
Ho cosi la possibilità di esportarli in Excel oppure, di rileggere gli ultimi valori in caso di Reset.

Problema : Dopo 4 mesi il file generato sulla SD si aggira a circa 15Mb , l’arduino ci mette un bel po ad aggiungere i dati ! (rallentandomi il ciclo di misura)
Per non parlare di un reset, i tempi di attesa si allungano a quasi 4 minuti !!

Ultimamente pero l’arduino non riusciva piu a inizializzare la SD, cancellando tutti i dati l’Arduino rifunziona correttamente.

Questa variante di scrittura/lettura dati mi sembrava la piu facile ma purtroppo non si è rivelata la piu efficiente.

Mi chiedevo se esiste la possibilita di inviare tutto su un WebServer(pubblico) che abbia la possibilita di memorizzarmi anche tutti i dati (in modo da rileggere gli ultimi valori).

Ho provato con Xively (www.xively.com) funzionerebbe se non fosse che i tempi di risposta del server funziona a singhiozzi (certe volte anche un minuto!!), rallentandomi i tempi di calcolo di tutto il sistema !

In allegato la visualizzazione del mio progetto su un TFT 7"

Grazie e buona giornata
Remo


* tft.JPG (75.19 KB, 800x600 - viewed 50 times.)
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Io ti consiglio di creare un file per ogni log, con una parte fissa nel nome ed una variabile (es. data).
log20130903.txt
log20130902.txt
ecc..

In questo modo l'accesso al file è veloce
Logged


MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

log20130903.txt
log20130902.txt

Ho paura che come nome file quello sia troppo lungo

20130903.TXT
20130902.TXT

così potrebbe andare

Però potrebbe diventare macchinoso se non hai rtc a bordo, e c'è da gestire il passaggio tra le 23.59 e le 00.00 del giorno seguente.

Potresti generare un file che si chiama LAST.TXT che contiene solo l'ultima lettura, e ad ogni passaggio lo sovrascrivi (non append), mentre nello stesso momento appendi i dati nel log di pertinenza.
Per fare lo stesso mestiere attraverso un webserver devi avere ovviamente l'harware per accedere alla rete, e poi avere abbastanza risorse nella MCU per gestire il codice di send/retrieve dei dati .

« Last Edit: September 03, 2013, 03:21:09 am by niki77 » Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Leo,
grazie del consiglio, leggendolo mi hai fatto venire un’altra idea.

Al momento scrivo su SD ad ogni impulso ricevuto che tradotto in numeri di righe :

1 Min : circa 3 righe
1 Ora : circa 180 righe
24 h   : circa 4300 righe !!
1 mese: circa 129000 righe !! Arghhhh
1 anno : circa 1.500.000 righe !! Aiutooooo

Soluzione : in fondo mi basta il valore ad ogni ora che ridurrebbe di mooooltooo i dati contenuti sulla SD….circa 8500 righe annuali contro il milione e mezzo !!

Grazie del consiglio, provero a modificare lo sketch, salvera ogni ora inclusi i picchi di massimo consumo.

Anche se la cosa del WebServer mi stuzzica :--))

Grazie ancora e buona giornata

Remo
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

log20130903.txt
log20130902.txt

Ho paura che come nome file quello sia troppo lungo

20130903.TXT
20130902.TXT

così potrebbe andare

Però potrebbe diventare macchinoso se non hai rtc a bordo, e c'è da gestire il passaggio tra le 23.59 e le 00.00 del giorno seguente.

Potresti generare un file che si chiama LAST.TXT che contiene solo l'ultima lettura, e ad ogni passaggio lo sovrascrivi (non append), mentre nello stesso momento appendi i dati nel log di pertinenza.
Per fare lo stesso mestiere attraverso un webserver devi avere ovviamente l'harware per accedere alla rete, e poi avere abbastanza risorse nella MCU per gestire il codice di send/retrieve dei dati .



Si ho RTC a bordo e riesco a gestire il cambio delle 23.59
LAvoro con um Arduino Mega R3 che gestisce un TFT 7" (external supply),un RTC,un sensore di P/T/H,un Xbee.
 pensi sia sufficiente per la gestione delle risorse ?

Saluti
Logged

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non è il 'quanto ce l'hai grosso' ma quanto lo usi  smiley-mr-green

Quando compili vedi quanta flash utilizzi e ti regoli in base a quanta è la flash totale di quella MCU per vedere quanta memoria programma hai disponibile.
Non penso che tu abbia problemi di quel tipo, mentre invece non hai specificato se tra tutti i tuoi dispositivi hai l'adattatore di rete , sia essa cablata o wifi.
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa, nel post mio precedente ho dimenticato di menzionarlo.
Sono anche connesso alla rete tramite modulo ethernet.
allo stesso tempo mando i dati qui --> http://open.sen.se/sensemeters/tab/2649/?preview=on
Pero non mi piace tanto poiche non posso fare un log nel passato.

Saluti
Remo
Logged

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pero non mi piace tanto poiche non posso fare un log nel passato.

Quella è una limitazione imposta dal servizio che stai usando.

Le alternative sono che ti vai a scrivere i dati letti su un db remoto mySql, poi derivi da quest'ultimo i dati per fare tutte le interrogazioni che ti servono.
Per fare questo però ti serve di avere un database, che sia in rete locale o remota poco importa, purchè sia raggiungibile.
Una volta che ti sei salvato tutti i dati su un server remoto hai infinite possibilità di visualizzazione e statistica, e sempre attraverso una semplice query recuperare l'ultima serie di dati letti.
Ovviamente tutto questo discorso sta in piedi fino a quando hai raggiungibilità tra il tuo dispositivo ed il database remoto.
Qualora questo non sia possibile meglio la soluzione SD , perlomeno per il recupero dati a seguito di reset.
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie Niki,
vedro di informarmi su quesi Database's, non sono molto ferrato in tema Mysql ecc...

Comunque mi piacerebbe poterli mandare su un DB remoto raggiungibile da ovunque, pero dovro farmene una cultura prima poiche io e mysql non ci conosciamo (ancora) :-)

Grazie delle info
Saluti
Remo
Logged

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Guarda , il tema database è ampio ma anche molto interessante.

Una buona occasione per accrescere le tue conoscenze in materia.
Poi, per come fruire di tali servizi tramite arduino, chiedi pure , una mano non la si nega a nessuno!
 
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti/vi ringrazio,
sto leggendomi qualcosa su Google Drive, vediamo un po cosa succede.

Saluti
Remo
Logged

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non è per scoraggiarti, ma google drive a parte non essere un database, è un cloud nemmeno troppo semplice da usare.
Io nei miei sistemi linux sono dovuto passare a dropbox (che ti sconsiglio ugualmente da utilizzare con Arduino perchè richiede una procedura di autenticazione e gestione mooolto complessa)
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Switzerland
Online Online
Faraday Member
**
Karma: 83
Posts: 4285
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non è per scoraggiarti, ma google drive a parte non essere un database, è un cloud nemmeno troppo semplice da usare.
Io nei miei sistemi linux sono dovuto passare a dropbox ........

... esattamente la mia stessa esperienza !  +1

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sto studiandomi la possibilita di mandare i dati su "pushingBox" che risolve i problemi dell'https.
Da li poi su Google docs....

Se avro news o domande a proposito mi rifaró vivo.

Intanto grazie per le dritte.

Saluti
R.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Seguendo questo Tutorial riesco a inviare i dati dall Arduino su Google Docs, passando da PushingBox.

http://www.jola.ro/proiecte/index.php/ethernet/arduino-si-google-docs   (è in Rumeno ma con il Translator e un po di fantasia si capisce)

Ora sto studiando come rileggerli in caso di Reset.

Saluti
Remo

Logged

Pages: [1] 2   Go Up
Jump to: