×
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 years 10 months ago #8394
by 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 was created by 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.)
Please Log in to join the conversation.
5 years 10 months ago #8395
by Ciaschini
Replied by Ciaschini on 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
Please Log in to join the conversation.
5 years 10 months ago #8396
by 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.)
Replied by pierpis on 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.)
Please Log in to join the conversation.
5 years 9 months ago #8398
by S1m0n3
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Replied by S1m0n3 on 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
Please Log in to join the conversation.
5 years 8 months ago #8403
by sn3ik
Replied by sn3ik on 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
Please Log in to join the conversation.
5 years 1 week ago #8507
by S1m0n3
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Replied by S1m0n3 on 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
Please Log in to join the conversation.
5 years 1 week ago #8508
by sn3ik
Replied by sn3ik on 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...
Attachments:
Please Log in to join the conversation.
5 years 1 week ago #8509
by S1m0n3
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Replied by S1m0n3 on topic Sensore pioggia in negativo
Grazie! Sei stato gentilissimo!
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Please Log in to join the conversation.
5 years 1 week ago #8510
by sn3ik
Replied by sn3ik on topic Sensore pioggia in negativo
Prego!
Please Log in to join the conversation.
5 years 6 days ago #8511
by S1m0n3
Sint Wind Pi - WH3080 - Raspberry Pi 3 B+
roccadibotte.online
Replied by S1m0n3 on 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
Please Log in to join the conversation.
Time to create page: 0.887 seconds