- Messaggi: 4
- Ringraziamenti ricevuti 0
Postate qui domande o segnalate problemi / bug che riscontrate,
filtro dati
Ho in mente di realizzare una sorta di filtro dati. In altre parole vorrei applicare un controllo ai dati letti dalla stazione, prima che vengano archiviati nel database e inviati nel server. Questo perchè talvolta ritrovo archiviati dati errati per esempio di raffiche di vento o di temperatura. Vorrei sapere se sia possibile agire attraverso un plug-in o se sia necessario mettere mano a qualche codice.
Grazie mille!
Si prega Accedi a partecipare alla conversazione.
puoi mettere il filtro anche in un plugin, mi pare sia già stata fatta una cosa del genere in passato...
Si prega Accedi a partecipare alla conversazione.
www.vololiberomontecucco.it/vlmc/index.p...=180&Itemid=210#2767
Una cosa volevo chiedere ad Ale, quando parli di disattivare la configurazione di invio intendi tramite php?
Si prega Accedi a partecipare alla conversazione.
In quella discussione intendevo che se si usa un plugin per il logging e l'invio dei dati, bisogna disabilitarli da pagina di configurazione web, altrimenti vengono inviati due volte!
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 4
- Ringraziamenti ricevuti 0
Si prega Accedi a partecipare alla conversazione.
alegrechi ha scritto: Ah ecco, mi ricordavo di aver scritto qualcosa, grazie per averlo ritrovato Ciaschini !
In quella discussione intendevo che se si usa un plugin per il logging e l'invio dei dati, bisogna disabilitarli da pagina di configurazione web, altrimenti vengono inviati due volte!
Ciao Alessandro
per la precisione potresti postare la sezione dove bisona disabilitare l'invio dei dati??
Grazie
Stazione Meteo: Raspberry PI B, Sensori Vento PCE, BME280, Camera PI, Web Cam HD, Huawei K3765, Pannello Fotovoltaico 50W - 1 Batteria 12V-40Ah
Si prega Accedi a partecipare alla conversazione.
dipende da cosa usi nel tuo plugin.
Se nel tuo plugin c'è la riga che invia i dati a wunderground -> devi disattivare nella configurazione web l'invio a wunderground.
Stessa cosa per gli altri servizi e per il logging di default su file (meteo.txt)
E così via....
Si prega Accedi a partecipare alla conversazione.
A chi ha avuto problemi, chiedo quali sono i parametri che secondo voi andrebbero filtrati.
A tony e gli altri più "tecnici" invece vorrei chiedere se un approccio del genere potrebbe essere sufficiente per ignorare la misura
def FilterData(self)
if (self.temp_out > 60 or self.temp_out < 50 or self.wind_ave > 100 or self.wind_ave < 0 or self.rain_rate > 60):
TTLib.log("Sensor data out of range, ignore current measure")
self.last_measure_time == None
return False
else
return True
Si prega Accedi a partecipare alla conversazione.
Ad esempio:
Se nell'arco dell'invio dati, la temperatura è aumentata o diminuita più di 10 gradi per fare un esempio, il valore che verrà inviato sarà nullo, oppure max 2° maggiore o minore del precedente inviato (dipende se l'errore dei 10 gradi e più, era in diminuzione o in aumento)
Se il dato di pioggia supera un valore che per i 5 minuti di attesa tra un invio e l'altro sarebbe spropositato
Idem si potrebbe fare per la pressione e il vento
....non so se sono riuscito a farmi capire....
Si prega Accedi a partecipare alla conversazione.
Io pensavo per adesso ad una cosa più basilare, ovvero: se almeno uno dei parametri eccede un range prefissato (es: temp > 50, wind_ave > 100...), tutta la misura viene scartata.
Si prega Accedi a partecipare alla conversazione.
Si prega Accedi a partecipare alla conversazione.
diciamo che come soluzione è sicuramente molto più grezza, però funziona bloccando l'analisi dei dati ricevuti
Si prega Accedi a partecipare alla conversazione.
Si prega Accedi a partecipare alla conversazione.
Nel weekend vedo di trovare un po' di tempo per completarlo e testarlo...
Si prega Accedi a partecipare alla conversazione.
Nel weekend vedo di trovare un po' di tempo per completarlo e testarlo...
Grande alegrechi......molti confidano in te!!!
P.S.: Di python e altri linguaggi non ne capisco quasi nulla, ma se ti serve una mano per testare o idee per migliorare ancora di più, puoi contare anche su di me
Si prega Accedi a partecipare alla conversazione.
Si prega Accedi a partecipare alla conversazione.
(premesso che con python non sono molto ferrato)
visto che la stazione viene usata in posti e per scopi differenti non potresti creare delle variabili da inserire nel swpi.cfg cosi che ognuno se le possa personalizzare a seconda dell'uso che gli serve?
Forse ho detto una.......
Stazione Meteo: Raspberry PI B, Sensori Vento PCE, BME280, Camera PI, Web Cam HD, Huawei K3765, Pannello Fotovoltaico 50W - 1 Batteria 12V-40Ah
Si prega Accedi a partecipare alla conversazione.
si ci avevo pensato, sarebbe sicuramente la soluzione migliore, anche se questo complicherebbe un po', dato che per ogni parametro da filtrare bisognerebbe inserire il valore limite minimo e quello massimo.
Comunque cerco di farmi venire un'idea.. (e di trovare un po' di tempo...)
Si prega Accedi a partecipare alla conversazione.
Vi faccio un esempio.....
Ho una pressione di 1011,9 hpa inviato, nel secondo invio mi scende a 1000,9 per "errore", nel terzo invio mi risale a 1011,1.
Ora io non posso filtrare la pressione al di sotto di 1001,0, perchè sopratutto in inverno quel valore lo potrei benissimo ritrovarmelo normalmente.
Questo era un esempio, ma lo si può fare anche per la pioggia, dove non posso andar a filtrare un valore di 6mm quando 6mm possono cadere benissimo in 5 min......
Ecco, da profano in merito, credo che il nocciolo del filtro si dovrebbe basare sull'ultimo dato inviato e poi da li decidere di quanto filtrare eventualmente il valore che verrà.
Se la pressione è di 1000 e mi sale di 0.015 in 5 minuti allora verrà filtrato perchè sarebbe impossibile un aumento così repentino in 5 min, ma non posso filtrare a prescindere il valore di 1010.
Non so se ho reso l'idea......
Si prega Accedi a partecipare alla conversazione.
Si prega Accedi a partecipare alla conversazione.
Però a quanto risulta adesso, quando c'è un valore sballato (es: vento), ce n'è sempre un altro nella stessa misura che è sballato in modo molto più evidente: es la pressione ,oppure temperature eccessive. Eliminando tutta la misura sarebbe già un buon passo avanti... no?
Si prega Accedi a partecipare alla conversazione.
Preferirei fosse la parte di analisi o visualizzazione a filtrare i dati e non SWPI che dovrebbe continuare ad essere uno stupido programmino di acquisizione dati dai sensori... anche se sbagliati.
A me non è mai successo di avere misure sbagliate ma se dovesse succedere mettei i filtri nella parte web.
@Ciaschini : Hai provato a cambiare sensore ??
TT
Si prega Accedi a partecipare alla conversazione.
Comunque colgo l'occasione per farvi i complimenti per tutto il programma, si vede che ci avete lavorato molto ed è venuto fuori un sistema da urlo ma soprattutto molto comodo e flessibile
Si prega Accedi a partecipare alla conversazione.
- roberto2011
- Offline
- Moderatore
io modificherei solo la def logDataToWunderground.
come dice ale, l'intera lettura risulta evidentemente sballata.
Allegato meteo.jpg non trovato
Sensori Davis +BME280 + Raspberry b+ webCam serrasanta.fleanet.it (Eremo di Serrasanta - Gualdo Tadino - 1.340 m s.l.m.)
Allegati:
Si prega Accedi a partecipare alla conversazione.
Non solo, anche le statistiche interne vengono sbagliate, per cui i valori estremi della giornata risultato errati anche nel meteo.txt.
Capisco il tuo punto di vista tony, infatti anche io sono d'accordo a non eliminare tutti i dati strani, ma solamente quelli più grossolani e indubbiamente sbagliati, che sono probabilmente dovuti non tanto ai sensori, quanto ad interferenze elettriche o elettromagnetiche. L'esempio che mostra Roberto nello screen è abbastanza evidente...
Si prega Accedi a partecipare alla conversazione.
Definiamo solo dei range di plausibilità (fissi) del vari parametri e li mettiamo nel codice.
TT
Si prega Accedi a partecipare alla conversazione.
if ( globalvars.meteo_data.status == 0 and globalvars.meteo_data.temp_out > 45 ):
if ( globalvars.meteo_data.status == 0 and globalvars.meteo_data.temp_out < -8 ):
if ( globalvars.meteo_data.status == 0 and globalvars.meteo_data.wind_ave > 100 ):
if ( globalvars.meteo_data.status == 0 and globalvars.meteo_data.abs_pressure > 1060.0 ):
if ( globalvars.meteo_data.status == 0 and globalvars.meteo_data.abs_pressure < 970.0 ):
if ( globalvars.meteo_data.status == 0 and globalvars.meteo_data.rain > 60 ):
P.S.: Non cercate di decifrare il codice.....ho copiato e incollato qua e la ma giusto per rendere l'idea
Si prega Accedi a partecipare alla conversazione.
il problema è che passando dal plugin i dati errati vengono comunque scritti nel db interno di swpi. Per come è fatto adesso, l'unico modo è mettere un filtro a monte...
Scusate ma negli ultimi giorni non ho avuto il tempo di riguardarci...
Si prega Accedi a partecipare alla conversazione.
Il punto più corretto ( da testare ) dovrebbe essere in meteodata.py nella funzione "CalcStatistics" che viene richiamata dopo ogni lettura ....
In questo momento sto lavorando ad altro e se fate delle modifiche usate un push su github.
TT
Si prega Accedi a partecipare alla conversazione.
Cambiando scheda memoria, reistallare il tutto, cambiando raspberry, cambiando cavo di rete, aggiungendo ferrodi ai vari cavetti, pulendo la console centrale (lacrosse 2350), pulendo i plug dei sensori esterni, cambiando il canvertitore COM-USB con 2 diversi tipi, allontanando la consolle centrale al raspberry e lo stesso da pc, tv, o altre fonti di campi elettromagnetici, aggiungendo la messa a terra sia al rasp che alla stazione meteo......insomma proprio tutto al punto di essermi quasi arreso nella speranza che qualcuno creasse un filtro per far si che i dati che andavano in rete, fossero esenti da valori sballati.
Sapevo bene che il problema era dalla consolle in poi, dato che sulla stessa i valori erano sempre validi e non sballati.
Sui valori che arrivavano a wunderground (temperatura, umidità, pioggia e vento), almeno 10-12 valori al giorno erano sballati e dovevo cancellarli.
Poi mi son ricordato che quando comprai la mia stazione meteo, vi era nella confezione un convertitore COM-USB senza cavetto, cioè le due porte erano sullo stesso blocco.
Nel frattempo ho fatto un trasloco e con un pò di pazienza mi son messo a cercare........e finalmente ieri sera l'ho trovato.
Ne avevo provati già altri due diversi, ma la speranza non l'avevo del tutto persa.
Ebbene......da ieri sera non sto avendo nessun tipo di dato sballato in nessun parametro!, cosa che da quando uso questo sistema non era mai capitato
Mi mantengo ancora "calmo".......ma credo di aver risolto il problema
Si prega Accedi a partecipare alla conversazione.