Software > WeeWX

Toqueteo de la base de datos - Errores, inconsistencias, añadir registros

(1/11) > >>

jantoni:
Bueno, pues vamos a explicar como tocar la base de datos de Weewx.

Lo que se explique aquí, vale para cualquiera de los registros: temperatura, viento, precipitación, etc, etc. Solo habrá que modificar la variable correspondiente, y solo es válido para las versiones 3.0 y superiores de Weewx.

Para versiones anteriores de Weewx es todo similar, pero las tablas están en dos bases de datos diferentes, en lugar de estar todas mezcladas en un solo fichero.

Primero explicaremos como funciona la base de datos de Weewx.

La base de datos, heredada de Wview, se compone de una tabla principal, llamada archive y un montón de tablas auxiliares para cada variable medida. Estas se denominan archive_day_xxxxxxxx siendo xxxxxxx la variable almacenada.

Para comprobar como está compuesta podemos hacer lo siguiente:


--- Código: ---sudo /etc/init.d/weewx stop              #Paramos weewx
sqlite3 /var/lib/weewx/weewx.sdb      #Abrimos la base de datos
.schema                                              #Nos imprimirá toda la estructura de la base de datos.....abrumador

--- Fin del código ---

Bien, cuando corrijamos un error, tendremos que tocar dos tablas. archive para corregir o eliminar el registro incorrecto y el correspondiente archive_day_xxx

Para muestra, un botón.

Vamos a corregir unos registros incorrectos de precipitación en una de mis estaciones de prueba (La Ventus W831). Como el driver de weewx para esta estación, está un poco locuelo, pues de vez en cuando me salen registros de miles y miles de milímetros de precipitación inexistente.

Así que nos ponemos a corregir estos registros, todos ellos de Agosto y Septiembre de 2015.

La situación anterior es la siguiente:


--- Citar ---*VER=DATA2 *COD=ESMAD2800000028522A *UPD=01-11-2015 12:45 *TMP=19.0 *WND=7 *AZI=134 *BAR=1017.9 *HUM=48 *SUN= N/A *UVI= N/A *DHTM=19.5 *DLTM=13.1 *DHHM=80 *DLHM=47 *DHBR=1020.8 *DLBR=1017.9 *DGST=25 *DSUN= N/A *DHUV= N/A *DPCP=0.0 *WRUN= *MHTM=19.5 *MLTM=13.1 *MHHM=80 *MLHM=47 *MHBR=1020.8 *MLBR=1017.9 *MGST=25 *MSUN= N/A *MHUV= N/A *MPCP=0.0 *YHTM=42.1 *YLTM=8.8 *YHHM=93 *YLHM=5 *YHBR=1026.6 *YLBR=1003.3 *YGST=216 *YSUN= N/A *YHUV=90.1 *YPCP=581624.8 *EOT* © jantoni (02/2015)

--- Fin de la cita ---

Vemos como en la plantilla de Meteoclimatic tenemos la escalofriante cantidad de casi 600.000mm. de precipitación en el año.

Si vemos el informe NOAA del mes de Septiembre de 2015, podemos ver....(podíamos, ya que ahora está corregido) lo siguiente:


--- Código: ---                   INFORME CLIMATOLOGICO DEL MES sep 2015


Estacion Ubicada en Rivas-Vaciamadrid                 
Altitud: 630 meters    LAT: 40-21.37 N    LONG: 003-31.21 W


TEMPERATURA (C), HUMEDAD (%), PRESION ATMOSFERICA (hPa), LLUVIA (mm) Y VIENTO (km/h)

      ---TEMPERATURA----     --HUMEDAD--   ---BAROMETRO---   ---VIENTO---

DIA   MEDIA  MAX.   MIN.     MAX.   MIN.   MAXIMA   MINIMA    VEL. MAXIMA  LLUVIA
---   ------------------     -----------   ---------------   ------------  ------
 01   24,4   34,1   16,5      85     26    1016,4   1014,3      13,4         0,0
 02   25,8   34,2   18,7      77     24    1015,1   1012,1     160,9      43101,7
 03   24,1   32,2   17,5      61     15    1014,8   1011,9      19,2         0,0
 04   22,3   32,2   15,7      66     21    1017,1   1012,8      21,1         0,0
 05   21,5   31,7   12,9      68     21    1019,6   1015,9      21,9         0,0
 06   23,4   33,7   16,5      66     23    1020,8   1018,7      13,8         0,0
 07   22,0   30,9   17,1      71     29    1020,3   1017,4      16,1         0,0
 08   22,9   33,4   14,3      78     15    1017,8   1014,2     144,8      43101,7
 09   23,3   33,5   14,3      51     20    1015,7   1013,9      96,6      43101,7
 10   25,0   32,9   18,0      54     21    1015,4   1012,6      25,9         0,0
 11    N/A    N/A    N/A     N/A    N/A    1014,4   1012,9      18,8         0,0
 12   22,7   27,4   20,4      46     25    1014,4   1012,2      19,6      86202,1
 13   22,0   30,3   17,6      78     13    1013,4   1010,8      33,2         0,0
 14   21,0   30,1   14,1      80     23    1014,4   1011,9      21,9         0,0
 15   16,8   17,1   16,7      62     60    1008,9   1006,6       8,2         0,0
 16   18,5   26,4   14,3      93     48    1006,6   1003,3      41,4      10590,6
 17   16,3   24,5    9,9      89     31    1015,9   1006,2      18,3         0,0
 18   17,9   28,9    9,3      77     24    1019,3   1015,3      15,6         0,0
 19   19,9   31,0   11,7      67     22    1021,4   1019,1      14,2      43085,9
 20   20,7   33,4   11,9      68     19    1021,1   1018,4      15,3         0,0
 21   22,7   34,6   13,5      54     16    1019,8   1016,2      18,8         0,0
 22   22,1   34,2   12,9      56     15    1017,7   1014,1      20,6         0,0
 23   19,7   28,7   13,8      58     25    1020,2   1015,9      18,3      86171,8
 24   15,8   27,1   12,3      69     27    1020,3   1019,1      13,2         0,0
 25
 26
 27
 28
 29
 30
---------------------------------------------------------------------------------------
      21,6   34,6    9,3      93     13    1021,4   1003,3     160,9      355355,4
   

--- Fin del código ---

Pues ya sabemos lo que tenemos que corregir.

Antes de meternos en materia, vamos a ver que herramientas vamos a usar para apoyarnos:

Nos hará falta un conversor de fecha/hora Unix a "humano". Salvo que seas un portento con un cerebro matemático prodigioso, aquí podrás encontrar una ayuda:

http://www.epochconverter.com/

Y para recordarnos un poco el lenguaje SQL, ya que lo usamos muy de vez en cuando.

https://www.sqlite.org/lang.html

Después de parar Weewx, abrimos la base de datos


--- Código: ---sudo sqlite3 /var/lib/weewx/weewx.sdb
--- Fin del código ---

Dados los registros que queremos corregir, no nos hace falta convertir, así que vamos a buscar los registros de lluvia de más de 1000 pulgadas (ojo con las unidades)


--- Código: ---sqlite> select * from archive where rain>1000;
1442079900|1|5|29.9173065564087|||84.2||28.0||||0.0||714.469482901577|1696.86502189125||||||70.7||||||||||0.0|||||||||1.0||||||||1.0|1.0|1.0|
1442635500|1|5|30.1129651506202|27.9011303736297|30.0703059696404|73.85|54.6309090909091|41.5652173913044|62.0|3.43635509402163|84.8540246362613|3.59999105087981|67.5|5605.14960058196|1696.29527386033|41.8735072594801|52.9290909090909|54.6309090909091|||50.5||||||||||0.0|||||||||1.0||||||||1.0|1.0|1.0|
1442970300|1|5|30.0262057838215|27.8320697212961|29.996909139393|77.8590909090909|60.98|34.8695652173913|48.0|0.24545393528726|231.971424087356|1.39999651978659|247.5|1770.04724228904|1696.29527386033|41.1492757929552|58.9018181818182|60.98|||0.4||||||||||0.0|||||||||1.0||||||||1.0|1.0|1.0|
1443045900|1|5|30.1203434093384|27.9099031723455|30.0796294447874|77.0204545454545|63.14|34.8695652173913|49.2727272727273|0.549998632773304|28.0236290823171|4.79998806783974|22.5|5605.14960058196|1696.29527386033|43.808046375362|61.16|63.14|||50.8||||||||||0.0|||||||||1.0||||||||1.0|1.0|1.0|
sqlite>

--- Fin del código ---

Vemos que hay 4 registros que cumplen la condición de búsqueda.

Si queremos ver solo lo que nos interesa que es la fecha/hora y el registro de lluvia, lo indicamos:


--- Código: ---sqlite> select dateTime, Rain from archive where rain>1000;
1442079900|1696.86502189125
1442635500|1696.29527386033
1442970300|1696.29527386033
1443045900|1696.29527386033
sqlite>

--- Fin del código ---

Más sencillo, ¿verdad?

Ahora borramos esos registros. OJO, OJO, puedo borrar estos registros porque no me dan información adicional que necesite. Lo mejor, hubiera sido poner los registros de lluvia de esos "fecha/hora" a cero. Pero de ese modo explicaba como borrar registros, ya que luego voy a explicar como modificar registros más adelante.


--- Código: ---sqlite> delete from archive where Rain>1000;
--- Fin del código ---

Y comprobamos que ya no tenemos diluvios universales:


--- Código: ---sqlite> select dateTime, Rain from archive where rain>1000;
sqlite>

--- Fin del código ---

Cerramos la base de datos con CTRL-D

Pero las estadísticas de precipitación siguen ahí. Para corregirlas, tenemos que tocar la tabla que tiene las estadísticas diarias.

Si volvemos a ver la estructura de la tabla de datos, veremos que la estructura de la tabla de precipitación es la siguiente:


--- Código: ---CREATE TABLE archive_day_rain (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
--- Fin del código ---

Esta estructura se repite en el resto de variables.

Ahora lo que queremos es NO BORRAR LOS REGISTROS, ya que borraríamos el registro del día, sino ponerlo a cero, ya que sabemos que ese día no llovió:


--- Código: ---sudo sqlite3 /var/lib/weewx/weewx.sdb
sqlite> update archive_day_rain set min=0, max=0, sum=0, wsum=0 where sum>100;
sqlite>

--- Fin del código ---

Ahora arrancamos Weewx como es habitual y esperamos 5-10 minutos para que se rehagan las estadísticas. Antes de iniciar hay que borrar los informes NOAA, ya que Weewx no detecta si tiene que corregirlos. Pero si detecta que no están confeccionados, pues se pone manos a la obra y en la siguiente generación los crea de nuevo.


--- Citar ---*VER=DATA2 *COD=ESMAD2800000028522A *UPD=01-11-2015 16:35 *TMP=17,9 *WND=7 *AZI=120 *BAR=1015,9 *HUM=48 *SUN= N/A *UVI= N/A *DHTM=20,3 *DLTM=13,1 *DHHM=80 *DLHM=43 *DHBR=1020,8 *DLBR=1015,9 *DGST=25 *DSUN= N/A *DHUV= N/A *DPCP=0,0 *WRUN= *MHTM=20,3 *MLTM=13,1 *MHHM=80 *MLHM=43 *MHBR=1020,8 *MLBR=1015,9 *MGST=25 *MSUN= N/A *MHUV= N/A *MPCP=0,0 *YHTM=42,1 *YLTM=8,8 *YHHM=93 *YLHM=5 *YHBR=1026,6 *YLBR=1003,3 *YGST=216 *YSUN= N/A *YHUV=90,1 *YPCP=2,6 *EOT* © jantoni (02/2015)

--- Fin de la cita ---

Parece que el diluvio universal se ha terminado.

Ahora volvemos a ver el informe NOAA de septiembre


--- Código: ---                   INFORME CLIMATOLOGICO DEL MES sep 2015


Estacion Ubicada en Rivas-Vaciamadrid                 
Altitud: 630 meters    LAT: 40-21.37 N    LONG: 003-31.21 W


TEMPERATURA (C), HUMEDAD (%), PRESION ATMOSFERICA (hPa), LLUVIA (mm) Y VIENTO (km/h)

      ---TEMPERATURA----     --HUMEDAD--   ---BAROMETRO---   ---VIENTO---

DIA   MEDIA  MAX.   MIN.     MAX.   MIN.   MAXIMA   MINIMA    VEL. MAXIMA  LLUVIA
---   ------------------     -----------   ---------------   ------------  ------
 01   24,4   34,1   16,5      85     26    1016,4   1014,3      13,4         0,0
 02   25,8   34,2   18,7      77     24    1015,1   1012,1     160,9         0,0
 03   24,1   32,2   17,5      61     15    1014,8   1011,9      19,2         0,0
 04   22,3   32,2   15,7      66     21    1017,1   1012,8      21,1         0,0
 05   21,5   31,7   12,9      68     21    1019,6   1015,9      21,9         0,0
 06   23,4   33,7   16,5      66     23    1020,8   1018,7      13,8         0,0
 07   22,0   30,9   17,1      71     29    1020,3   1017,4      16,1         0,0
 08   22,9   33,4   14,3      78     15    1017,8   1014,2     144,8         0,0
 09   23,3   33,5   14,3      51     20    1015,7   1013,9      96,6         0,0
 10   25,0   32,9   18,0      54     21    1015,4   1012,6      25,9         0,0
 11    N/A    N/A    N/A     N/A    N/A    1014,4   1012,9      18,8         0,0
 12   22,7   27,4   20,4      46     25    1014,4   1012,2      19,6         0,0
 13   22,0   30,3   17,6      78     13    1013,4   1010,8      33,2         0,0
 14   21,0   30,1   14,1      80     23    1014,4   1011,9      21,9         0,0
 15   16,8   17,1   16,7      62     60    1008,9   1006,6       8,2         0,0
 16   18,5   26,4   14,3      93     48    1006,6   1003,3      41,4         0,0
 17   16,3   24,5    9,9      89     31    1015,9   1006,2      18,3         0,0
 18   17,9   28,9    9,3      77     24    1019,3   1015,3      15,6         0,0
 19   19,9   31,0   11,7      67     22    1021,4   1019,1      14,2         0,0
 20   20,7   33,4   11,9      68     19    1021,1   1018,4      15,3         0,0
 21   22,7   34,6   13,5      54     16    1019,8   1016,2      18,8         0,0
 22   22,1   34,2   12,9      56     15    1017,7   1014,1      20,6         0,0
 23   19,7   28,7   13,8      58     25    1020,2   1015,9      18,3         0,0
 24   15,8   27,1   12,3      69     27    1020,3   1019,1      13,2         0,0
 25
 26
 27
 28
 29
 30
---------------------------------------------------------------------------------------
      21,6   34,6    9,3      93     13    1021,4   1003,3     160,9         0,0
   

--- Fin del código ---

Lo que no he conseguido es que se modifiquen los gráficos.....ya lo miraré con detenimiento

Pepe:
Buenos Días Jantoni

Indicas que tengamos cuidado con las unidades. He estado mirando y me gustaría saber en que unidades expresa la presión atmosférica.

Si sabes algún link de la página oficial te lo agradecería.

Gracias de nuevo.

jantoni:
La presión,  salvo que modifiques los valores por defecto, se almacena en inHg.

La página oficial es www.weewx.com

Saludos

mml:
Buenas tardes:

En primer lugar, dar las gracias al usuario "jantoni" por elaborar la excelente guia, ubicada en la Wiki : "Instalación de Weewx en una Raspberry Pi". Yo, sin tener ni p. idea de Linux, he conseguido que todo funcione a la primera.

Siguiendo el manual, he instalado el Raspbian, Weewx, Apache, etc, y, como he dicho antes, todo funciona, he observado, en:  log /var/log/weewx.log que se conecta a la consola de la Estación Meteorologica, que se han descargado los datos del datalogger desde el 21/11/2015 creandose la BBDD weewx.sdb, se han generado una serie de ficheros de datos e imagenes (index.html, etc).a los que puedo acceder desde un pc en la misma red escribiendo en el navegador http://192.168.1.11/weewx/index.html.

He instalado despues el SQLite Browser para poder exportar los datos y editar (si es necesario) la base de datos weewx.sdb. Puedo abrirla, visualizar datos, exportar los datos, etc, y acceder a la ventana de edición de un registro pero tengo un problema que no he encontrado la forma de solucionarlo: cuando trato de modificar un número o texto en un registro, no hay coincidencia entre lo que tecleo y lo que aparece en pantalla, por ejemplo si tecleo un 0 se escribe en pantalla un 8, y eso ocurre con todo el teclado, incluso hay bastantes letras y números que no los encuentro despues de chequear todo el teclado. Por ejemplo, la fila del teclado correspondiente a los números escribe los siguente en pantalla:
1>9
2>0
3>-
4>=
5>(retroceso/borrado)
6>tabulador
7>q
8>w
9>e
0>8
'>o

Otros:
espaciador>7
shift>l
etc.

¿Alguna sugerencia para solventar esto?

Un saludo y gracias de antemano.

Xavi-EA5ZF:

--- Citar ---
Lo que no he conseguido es que se modifiquen los gráficos.....ya lo miraré con detenimiento
--- Fin de la cita ---

Por lo menos en mi sistema, borrando los gráficos en el directorio de salida html, en el siguiente loop se regeneran solos, y si no le podemos dar al conocido wee_reports que recrea todos los informes y creo que también los gráficos que nos falten.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa