×
Benvenuti sul nostro forum su Sint Wind PI!
Postate qui domande o segnalate problemi / bug che riscontrate,
Postate qui domande o segnalate problemi / bug che riscontrate,
Sensore pioggia in negativo
5 Anni 8 Mesi fa #8394
da pierpis
Sensori PCE-FWS20, DVB-T 820T2 SDR, BMP085, Raspberry Pi mod. B www.meteoportocervo.it (Abbiadori Porto Cervo - Arzachena - OT) 108 m s.l.m.)
Sensore pioggia in negativo è stato creato da pierpis
Buongiorno a tutti,
Ho sostituito il sensore pioggia comprandolo originale per la mia stazione PCE FWS 20, ho subito fatto le prove versando un tantino di acqua e mi accorgo che funziona vedendo i dato marcati con 3,00 di acqua.
Siccome oggi piove vado a vedere e vedo il dato 1,8 e tutto sommato giusto (credo) ora andando a rivederlo mi accordo che a pioggia battente mi segna -1227,6 mm mi chiedo che cosa è accaduto, perchè in valore negativo?
Ho sostituito il sensore pioggia comprandolo originale per la mia stazione PCE FWS 20, ho subito fatto le prove versando un tantino di acqua e mi accorgo che funziona vedendo i dato marcati con 3,00 di acqua.
Siccome oggi piove vado a vedere e vedo il dato 1,8 e tutto sommato giusto (credo) ora andando a rivederlo mi accordo che a pioggia battente mi segna -1227,6 mm mi chiedo che cosa è accaduto, perchè in valore negativo?
Sensori PCE-FWS20, DVB-T 820T2 SDR, BMP085, Raspberry Pi mod. B www.meteoportocervo.it (Abbiadori Porto Cervo - Arzachena - OT) 108 m s.l.m.)
Si prega Accedi a partecipare alla conversazione.
5 Anni 8 Mesi fa #8395
da Ciaschini
Risposta da Ciaschini al topic Sensore pioggia in negativo
Ciao, quando si resetta il pluviometro sulla stazione, i dati vanno in negativo, ma a mezzanotte dovrebbero tornare a zero, prova a vedere domani
Si prega Accedi a partecipare alla conversazione.
5 Anni 8 Mesi fa #8396
da pierpis
Sensori PCE-FWS20, DVB-T 820T2 SDR, BMP085, Raspberry Pi mod. B www.meteoportocervo.it (Abbiadori Porto Cervo - Arzachena - OT) 108 m s.l.m.)
Risposta da pierpis al topic Sensore pioggia in negativo
Grazie, hai ragione ora ho visto che è rientrato nella normalità
Sensori PCE-FWS20, DVB-T 820T2 SDR, BMP085, Raspberry Pi mod. B www.meteoportocervo.it (Abbiadori Porto Cervo - Arzachena - OT) 108 m s.l.m.)
Si prega Accedi a partecipare alla conversazione.
5 Anni 8 Mesi fa #8398
da S1m0n3
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Risposta da S1m0n3 al topic Sensore pioggia in negativo
Anche io ho lo stesso problema, non c'è modo di ovviare al problema? Perché il reset va a sballare il valore dell'accumulo giornaliero e delle ultime 24h per tutta la giornata
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Si prega Accedi a partecipare alla conversazione.
5 Anni 7 Mesi fa #8403
da sn3ik
Risposta da sn3ik al topic Sensore pioggia in negativo
Salve,
i valori negativi della pioggia mi hanno tormentato per un bel pò, inizialmente pensavo fosse la mia stazione, ma dopo aver studiato un pò l'intero e meraviglioso lavoro fatto da Tony e da altri su questo forum ho deciso di mettere mano al codice.
Il problema di questo bug è che la stazione meteo trasmette il dato pioggia cumulato (è l'unico dato che cumula) finche la memoria non è piena e riparte da 0, quindi la swpi avrà un record nel db che sottrae al valore passato dalla stazione quando questa si resetta ecco che capita il problema, per ovviare a ciò ho aggiunto una colonna nel db chiamato RAIN_OLD ed ho modificato il file meteodata.py così facendo:
innanzitutto inizializziamo la variabile:
...
self.the_real_rain = None
...
poi ho modificato questo blocco
...
if (self.rain != None ):
conn = sqlite3.connect('db/swpi.s3db',200)
dbCursor = conn.cursor()
dbCursor.execute("SELECT * FROM METEO order by rowid asc limit 1")
data = dbCursor.fetchall()
if ( len(data) == 1 ):
the_old_rain = (data[0][33])
real_rain = (data[0][9])
#self.the_real_rain = (data[0][9])
if (the_old_rain != None):
if ( the_old_rain > self.rain):
self.the_real_rain = real_rain + self.rain
else:
self.the_real_rain = real_rain + (self.rain - the_old_rain)
# Rain 24h - rain 1h - pressure_trend
if ( self.rain != None or self.rel_pressure != None):
if (self.rain != None ):
dbCursor.execute("SELECT * FROM METEO where datetime(TIMESTAMP_LOCAL) > datetime('now','-1 day','localtime') order by rowid asc limit 1")
data = dbCursor.fetchall()
if ( len(data) == 1):
therain = (data[0][9])
if (therain != None) :
self.rain_rate_24h = self.the_real_rain - therain
dbCursor.execute("SELECT * FROM METEO where datetime(TIMESTAMP_LOCAL) > datetime('now','-1 hour','localtime') order by rowid asc limit 1")
data = dbCursor.fetchall()
if ( len(data) == 1):
therain = (data[0][9])
if (therain != None and self.rain != None ) :
self.rain_rate_1h = self.the_real_rain - therain
thepress= (data[0][7])
if ( thepress != None and self.rel_pressure != None):
self.pressure_trend = self.rel_pressure - thepress
if conn:
conn.close()
...
ho aggiunto delle variabili di appoggio *rain, c'è una condizione dove l'algoritmo capisce se la memoria si è resettata oppure no, così facendo la pioggia viene sempre cumulata
nella classe che inserisce i dati nel db va aggiunta la modifica:
...
dbCursor.execute("insert into METEO(TIMESTAMP_LOCAL,TIMESTAMP_IDX,WINDIR_CODE,WIND_DIR,WIND_AVE,WIND_GUST,TEMP,PRESSURE,HUM,RAIN,RAIN_RATE,TEMPINT,HUMINT,WIND_CHILL,TEMP_APPARENT,DEW_POINT,UV_INDEX,SOLAR_RAD,WIND_DAY_MIN,WIND_DAY_MAX,WIND_DAY_GUST_MIN ,WIND_DAY_GUST_MAX ,TEMP_OUT_DAY_MIN ,TEMP_OUT_DAY_MAX,TEMP_IN_DAY_MIN ,TEMP_IN_DAY_MAX ,HUM_OUT_DAY_MIN ,HUM_OUT_DAY_MAX ,HUM_IN_DAY_MIN ,HUM_IN_DAY_MAX ,PRESSURE_DAY_MIN ,PRESSURE_DAY_MAX,WIND_DIR_AVE,RAIN_OLD ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", (self.last_measure_time,self.last_measure_time,self.wind_dir_code,self.wind_dir,self.wind_ave,self.wind_gust,self.temp_out,self.rel_pressure,self.hum_out,self.the_real_rain,self.rain_rate,self.temp_in,self.hum_in,self.wind_chill,self.temp_apparent,self.dew_point,self.uv,self.illuminance,self.winDayMin,self.winDayMax,self.winDayGustMin,self.winDayGustMax,self.TempOutMin,self.TempOutMax,self.TempInMin,self.TempInMax,self.UmOutMin,self.UmOutMax,self.UmInMin,self.UmInMax,self.PressureMin,self.PressureMax,self.wind_dir_ave,self.rain))
...
purtroppo viaggio con la versione 3 di swpi e la modifico ogni volta che che ho bisogno di sistemare qualcosa, quindi può darsi che il codice differisca con la versione ufficiale su github
Saluti
Francesco
i valori negativi della pioggia mi hanno tormentato per un bel pò, inizialmente pensavo fosse la mia stazione, ma dopo aver studiato un pò l'intero e meraviglioso lavoro fatto da Tony e da altri su questo forum ho deciso di mettere mano al codice.
Il problema di questo bug è che la stazione meteo trasmette il dato pioggia cumulato (è l'unico dato che cumula) finche la memoria non è piena e riparte da 0, quindi la swpi avrà un record nel db che sottrae al valore passato dalla stazione quando questa si resetta ecco che capita il problema, per ovviare a ciò ho aggiunto una colonna nel db chiamato RAIN_OLD ed ho modificato il file meteodata.py così facendo:
innanzitutto inizializziamo la variabile:
...
self.the_real_rain = None
...
poi ho modificato questo blocco
...
if (self.rain != None ):
conn = sqlite3.connect('db/swpi.s3db',200)
dbCursor = conn.cursor()
dbCursor.execute("SELECT * FROM METEO order by rowid asc limit 1")
data = dbCursor.fetchall()
if ( len(data) == 1 ):
the_old_rain = (data[0][33])
real_rain = (data[0][9])
#self.the_real_rain = (data[0][9])
if (the_old_rain != None):
if ( the_old_rain > self.rain):
self.the_real_rain = real_rain + self.rain
else:
self.the_real_rain = real_rain + (self.rain - the_old_rain)
# Rain 24h - rain 1h - pressure_trend
if ( self.rain != None or self.rel_pressure != None):
if (self.rain != None ):
dbCursor.execute("SELECT * FROM METEO where datetime(TIMESTAMP_LOCAL) > datetime('now','-1 day','localtime') order by rowid asc limit 1")
data = dbCursor.fetchall()
if ( len(data) == 1):
therain = (data[0][9])
if (therain != None) :
self.rain_rate_24h = self.the_real_rain - therain
dbCursor.execute("SELECT * FROM METEO where datetime(TIMESTAMP_LOCAL) > datetime('now','-1 hour','localtime') order by rowid asc limit 1")
data = dbCursor.fetchall()
if ( len(data) == 1):
therain = (data[0][9])
if (therain != None and self.rain != None ) :
self.rain_rate_1h = self.the_real_rain - therain
thepress= (data[0][7])
if ( thepress != None and self.rel_pressure != None):
self.pressure_trend = self.rel_pressure - thepress
if conn:
conn.close()
...
ho aggiunto delle variabili di appoggio *rain, c'è una condizione dove l'algoritmo capisce se la memoria si è resettata oppure no, così facendo la pioggia viene sempre cumulata
nella classe che inserisce i dati nel db va aggiunta la modifica:
...
dbCursor.execute("insert into METEO(TIMESTAMP_LOCAL,TIMESTAMP_IDX,WINDIR_CODE,WIND_DIR,WIND_AVE,WIND_GUST,TEMP,PRESSURE,HUM,RAIN,RAIN_RATE,TEMPINT,HUMINT,WIND_CHILL,TEMP_APPARENT,DEW_POINT,UV_INDEX,SOLAR_RAD,WIND_DAY_MIN,WIND_DAY_MAX,WIND_DAY_GUST_MIN ,WIND_DAY_GUST_MAX ,TEMP_OUT_DAY_MIN ,TEMP_OUT_DAY_MAX,TEMP_IN_DAY_MIN ,TEMP_IN_DAY_MAX ,HUM_OUT_DAY_MIN ,HUM_OUT_DAY_MAX ,HUM_IN_DAY_MIN ,HUM_IN_DAY_MAX ,PRESSURE_DAY_MIN ,PRESSURE_DAY_MAX,WIND_DIR_AVE,RAIN_OLD ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", (self.last_measure_time,self.last_measure_time,self.wind_dir_code,self.wind_dir,self.wind_ave,self.wind_gust,self.temp_out,self.rel_pressure,self.hum_out,self.the_real_rain,self.rain_rate,self.temp_in,self.hum_in,self.wind_chill,self.temp_apparent,self.dew_point,self.uv,self.illuminance,self.winDayMin,self.winDayMax,self.winDayGustMin,self.winDayGustMax,self.TempOutMin,self.TempOutMax,self.TempInMin,self.TempInMax,self.UmOutMin,self.UmOutMax,self.UmInMin,self.UmInMax,self.PressureMin,self.PressureMax,self.wind_dir_ave,self.rain))
...
purtroppo viaggio con la versione 3 di swpi e la modifico ogni volta che che ho bisogno di sistemare qualcosa, quindi può darsi che il codice differisca con la versione ufficiale su github
Saluti
Francesco
Si prega Accedi a partecipare alla conversazione.
4 Anni 10 Mesi fa #8507
da S1m0n3
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Risposta da S1m0n3 al topic Sensore pioggia in negativo
ho provato a fare la modifica che dici ma ho qualche problema con il cumulo giornaliero, potresti trascrivere tutto il meteodata.py per vedere in dettaglio le modifiche che hai apportato? Sarebbe davvero fantastico! Grazie!
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Si prega Accedi a partecipare alla conversazione.
4 Anni 10 Mesi fa #8508
da sn3ik
Risposta da sn3ik al topic Sensore pioggia in negativo
Ciao,
ecco a te! ricordarsi che va aggiunto un record (di appoggio) nel database. Inoltre siccome io salvo tutto su un database mysql in remoto, ho preferito tenere il db della swpi leggero, quindi dopo ogni insert fa una delete dei record più vecchi di due giorni, per eliminare questo passaggio basta cancellare o commentare:
TTLib.log("[SWPI] - Delete old data to Database")
conn_del = sqlite3.connect('db/swpi.s3db',200)
dbCursor_del = conn_del.cursor()
dbCursor_del.execute("DELETE FROM METEO where datetime(TIMESTAMP_LOCAL) < datetime('now','-2 day','localtime')")
conn_del.commit()
conn_del.close()
Cambia anche un pò la fase di log...
ecco a te! ricordarsi che va aggiunto un record (di appoggio) nel database. Inoltre siccome io salvo tutto su un database mysql in remoto, ho preferito tenere il db della swpi leggero, quindi dopo ogni insert fa una delete dei record più vecchi di due giorni, per eliminare questo passaggio basta cancellare o commentare:
TTLib.log("[SWPI] - Delete old data to Database")
conn_del = sqlite3.connect('db/swpi.s3db',200)
dbCursor_del = conn_del.cursor()
dbCursor_del.execute("DELETE FROM METEO where datetime(TIMESTAMP_LOCAL) < datetime('now','-2 day','localtime')")
conn_del.commit()
conn_del.close()
Cambia anche un pò la fase di log...
Allegati:
Si prega Accedi a partecipare alla conversazione.
4 Anni 10 Mesi fa #8509
da S1m0n3
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Risposta da S1m0n3 al topic Sensore pioggia in negativo
Grazie! Sei stato gentilissimo!
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Si prega Accedi a partecipare alla conversazione.
4 Anni 10 Mesi fa #8510
da sn3ik
Risposta da sn3ik al topic Sensore pioggia in negativo
Prego!
Si prega Accedi a partecipare alla conversazione.
4 Anni 10 Mesi fa #8511
da S1m0n3
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Risposta da S1m0n3 al topic Sensore pioggia in negativo
Ciao sn3ik, sei sicuro sia l'unico file che hai modificato? Una volta che la stazione meteo resetta l'accumulo i dati mi vanno comunque in negativo purtroppo!
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Si prega Accedi a partecipare alla conversazione.
Tempo creazione pagina: 0.966 secondi