Meteoclimatic

Software => WeeWX => Mensaje iniciado por: jantoni en 01 de Noviembre del 2015, 18:22:52 pm

Título: Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 01 de Noviembre del 2015, 18:22:52 pm
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: [Seleccionar]
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

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)

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: [Seleccionar]
                   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
   

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: [Seleccionar]
sudo sqlite3 /var/lib/weewx/weewx.sdb
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: [Seleccionar]
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>

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: [Seleccionar]
sqlite> select dateTime, Rain from archive where rain>1000;
1442079900|1696.86502189125
1442635500|1696.29527386033
1442970300|1696.29527386033
1443045900|1696.29527386033
sqlite>

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: [Seleccionar]
sqlite> delete from archive where Rain>1000;
Y comprobamos que ya no tenemos diluvios universales:

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

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: [Seleccionar]
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);
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: [Seleccionar]
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>

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)

Parece que el diluvio universal se ha terminado.

Ahora volvemos a ver el informe NOAA de septiembre

Código: [Seleccionar]
                   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
   

Lo que no he conseguido es que se modifiquen los gráficos.....ya lo miraré con detenimiento
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Pepe en 25 de Noviembre del 2015, 11:42:13 am
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.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 25 de Noviembre del 2015, 14:47:52 pm
La presión,  salvo que modifiques los valores por defecto, se almacena en inHg.

La página oficial es www.weewx.com

Saludos
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: mml en 11 de Enero del 2016, 16:38:50 pm
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.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Xavi-EA5ZF en 11 de Enero del 2016, 18:59:22 pm
Citar

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

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.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 11 de Enero del 2016, 23:58:23 pm
Yo tuve un par de experiencias "religiosas" con browser de ese tipo, así que trabajo las bases de datos con SQLlite a "pelo"

Saludos.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Oscar-EA5IEL en 31 de Enero del 2016, 13:41:20 pm
Hola,
Para poner a cero alguno de los valores creo que lo he entendido pero para aumentar me da error.
Necesito poner el valor anual de lluvia en 9 y cogiendo el ejemplo, tendría que ponerlo de la siguiente manera:

sudo sqlite3 /var/lib/weewx/weewx.sdb
sqlite> update archive_day_rain set min=0, max=9, sum=0, wsum=0 where sum>100;
sqlite>

Cuando lo ejecuto me da "error", ¿que es lo que no estoy haciendo bien?

Gracias de antemano.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 31 de Enero del 2016, 15:34:57 pm
Esta orden no tiene mucho sentido, sería decir esto:

Coge todos los registros que tengan el campo sum mayor que 100 y cambia el valor min y ponlo a cero, el cambo max a 9, el campo sum a 0 y el campo wsum a cero

Si quieres poner el valor de lluvia anual a 9, tendrás que crear un registro, o modificar uno ya existente......y ponerle el valor que quieras.

Y recuerda que, salvo que estés usando METRIC o METRICWX en la configuración de weewx.conf, Weewx almacena los datos en formato imperial. Es decir, la lluvia se almacenaría en pulgadas
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Oscar-EA5IEL en 31 de Enero del 2016, 19:42:14 pm
A que hace referencia el campo sum y wsum?
Yo lo tengo con US.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Oscar-EA5IEL en 31 de Enero del 2016, 19:54:50 pm
A que hace referencia el campo sum y wsum?
Como se crea uno o se modifica el existente?
Yo lo tengo con US.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmfernandezz en 22 de Febrero del 2016, 13:13:17 pm
Hola,
He tenido el pluviometro varios dias desconectado y me gustaría incluir en la base de datos los registros de lluvia de la semana pasada.
Estoy viendo la base de datos con SQLiteSpy (bajo windows). El caso es que cuando abro la tabla archive_day_rain me salen las siguientes columnas:
-dateTime: Dia del registro
-min: ¿---?
-mintime: Fecha del valor mínimo
-max: ¿---?
-maxtime: Fecha del valor máximo
-sum: ¿---?
-count: ¿---?
-wsum: ¿---?
-sumtime: ¿---?

Hay muchos campos que no se a que se refieren. He buscado y rebuscado por tito Google pero no encuentro información sobre esos campos.
¿Donde debería incluir el valor de la lluvia? Min? Max?
Saludos,
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 22 de Febrero del 2016, 16:08:59 pm
http://www.weewx.com/docs/customizing.htm#The_database
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmfernandezz en 22 de Febrero del 2016, 16:39:52 pm
Muchas gracias Jantoni. La documentación de weewx me la leído no se cuantas veces pero no saco nada en claro sobre este tema de base de datos.
Está claro que mi problema es de base y quizás no deba tocar este tema.
Saludos,
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 22 de Febrero del 2016, 17:16:37 pm
Bueno. Eso nos pasa a todos.

Es una cuestión de leer con paciencia.

Personalmente no lo he tenido que usar nunca, por lo que tampoco tengo experiencia en ello. Cuando he necesitado tocar la base de datos, siempre con la documentación delante y manejando una copia de ka base de datos.

No obstante, yo creo que no necesitas tocar archive_day_rain.  solo tocando archive e incorporando un registro con la lluvia que quieres, sería suficiente.

Saludos
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmfernandezz en 22 de Febrero del 2016, 18:41:28 pm
En primer lugar, me gustaría agradecerte la ayuda que me estás prestando, ya que me has aclarado cada uno de los problemas que me he ido encontrando desde que me metí en este mundillo.

En cuanto a la base de datos, estaba tan encabezonado que no vi la opción para abrir archive y solo abría los archive_day_xxxxxx
(http://i67.tinypic.com/v2vka1.png)

Una vez abierto archive, por fin me encuentro con la base de dato completa:
(http://i68.tinypic.com/2lucu8m.png)
Cuando dices que incorpore un registro con el valor de la lluvia, me imagino que lo que debo hacer es editar la celda de lluvia (correspondiente al dia que quiero) y cambiar el valor 0 por el valor real (por ejemplo, 3).

¿Valdria así?
Saludos y muchas gracias.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 23 de Febrero del 2016, 07:09:54 am
Teóricamente,  si.

Recuerda hacer, antes, una copia de la base de datos.

También puedes añadir otro registro.

El tema de la base de datos, ya se trató hace unos meses. Dado lo poco usual de tener que tocarla, al contrario que otros programas, es normal que incluso los más experimentados usuarios tengan dudas a la hora de tocar la boda.

No recuerdo que haya que tocar la diaria, tendría que revisar el foro y la wiki
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmfernandezz en 23 de Febrero del 2016, 18:33:32 pm
Después de estar todo el día dándole vueltas y comprender la estructura de la base de datos de Weewx, le voy a meter caña.
Manos a lo obra.
Antes de tocar valores, he querido eliminar datos que había en la base de datos del año 2015 (supongo que estaban en la imagen que instalé).
Directamente, he eliminado todos los registros correspondientes al año 2015 (mi consola empezó en 2016).
Para ello, he eliminado esos registros tanto de archive como de archive_day_xxxxx. De este modo la dejo totalmente limpia.

De momento, parece que ha ido bien. Por ejemplo, en la web, en los informes NOAA, ya solo me deja la opción de los informes de 2016 (ya no tengo opción para los informes de 2015).

Tendré que esperar a que se actualicen la página anual para ver si ha eliminado los datos de 2015.

Esperaré que pasa y después seguiré con los cambios que necesito en el pluvio.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmfernandezz en 25 de Febrero del 2016, 07:46:06 am
Ayer le volví a meter mano a la base de datos.
Ya he conseguido limpiarla de todo y he incluido los datos que eran erróneos (cuando compré la estación hice pruebas con el pluvio y había datos de estas pruebas). Además, tenía informes NOAA desde el año 2014.

Otro tema listo.
Muchas gracias por la ayuda.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: chve en 06 de Diciembre del 2016, 16:32:47 pm
Joder, joder, joder... tela para modificar algun valor de la db. ¿como puede ser que algo que se sabe que mas pronto o mas tarde se debe modificar requiera de tal pericia?

El propia weewx debería de contar con alguna herramienta que facilite este proceso. No todos los días anda la gente manipulando bases de datos para que tan importante opción se quede en el aire.

Un saludo y vamos a por ello.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Wlarues en 06 de Diciembre del 2016, 21:46:07 pm
Buenas, para cosas sencillas con el SQLite Manager (complemento de Firefox) te puedes apañar, yo lo hago a menudo. Es más visual y sencillo.
Para cosas complejas sí que es necesario usar órdenes SQL como indicaba Jantoni al principio del post (yo lo he hecho así un par de veces, el resto me las he apañado con el plugin). Aunque se puede hacer también con el SQLite Manager.

El proceso sería:
-Parar Weewx
-Copiar la base de datos al ordenador donde la vayas a editar (y hacer una copia de seguridad en otra carpeta)
-Editar la base de datos con el plugin
-Copiar a la raspberry la base de datos
-Iniciar Weewx y comprobar que todo está bien

Saludos
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 06 de Diciembre del 2016, 23:50:01 pm
He perdido la cuenta, pero posiblemente llevo dos años o más sin tocar la base de datos. Básicamente porque Weewx no tiene cagadas y mi Vue es como un reloj suizo.

Algún inconveniente tenía que haber en el mejor software meteorológico y encima gratuito
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: chve en 11 de Diciembre del 2016, 17:48:58 pm
Necesito modificar los valores de presión de los últimos 8 días de Agosto, que a la vez son los primeros días de registro de la estación.  Había pensado en eliminar las lineas correspondientes a esos días, pero me he percatado que tengo registros de precipitación en algún día de los que quiero eliminar y si lo hago joderé el acumulado de lluvia y a la vez creare mas inconsistencias. ¿se podría añadir a los valores falsos de la db la corrección que en su día realicé al propio weewx en el apartado StdCalibrate de + 0.841608?... y en caso afirmativo ¿debería modificar solo campos de presión o también campos de Barómetro?

Un saludo.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 11 de Diciembre del 2016, 21:09:59 pm
Ummmm......yo por esa causa no tocaría la base de datos.

Es mi opinión.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: chve en 12 de Diciembre del 2016, 22:03:00 pm
Gracias a ambos Wlarues y Jantoni.   plau2

¿Tonces quieres decir que los falsos datos de presión no me generaran ningun mensaje de inconsistencia en meteoclimatic una vez dado de alta la estación?

Un slaudo.  ;D

Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 13 de Diciembre del 2016, 19:41:21 pm
Si, pero con el cambio de año se medio soluciona. Siempre tendrás una inconsistencia.

Luego la podrás arreglar el día 1 de enero entrando en los datos de la estación y poniendo la presión correcta.

A veces solucionar algo, puede provocar estropear otra cosa.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: mml en 02 de Enero del 2017, 21:28:01 pm
Buenas tardes:

He intentado borrar un registro de la base de datos segun explica "jantoni" al inicio de este post: "sqlite> delete from archive where Rain>1000;" y responde el sistema con el siguiente mensaje:

Error: database is locked

¿Qué tengo que hacer para desbloquearla?. La BBDD no está activa, es una copia de la que está funcionando.

Gracias. Un Saludo
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Xavi-EA5ZF en 03 de Enero del 2017, 18:16:36 pm
Creo que sí, pero cuidado porque internamente se almacena en unidades US, o sea lluvia en pulgadas, no recuerdo bien, antes de tocar nada se impone backup y estudio.
https://www.google.es/search?q=milimetros+a+pulgadas&ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&ei=LNxrWKz0EfKJ8QfOqbDwAg
Xavi
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Telares en 24 de Junio del 2017, 12:17:04 pm
Buenas, para cosas sencillas con el SQLite Manager (complemento de Firefox) te puedes apañar, yo lo hago a menudo. Es más visual y sencillo.
Para cosas complejas sí que es necesario usar órdenes SQL como indicaba Jantoni al principio del post (yo lo he hecho así un par de veces, el resto me las he apañado con el plugin). Aunque se puede hacer también con el SQLite Manager.

El proceso sería:
-Parar Weewx
-Copiar la base de datos al ordenador donde la vayas a editar (y hacer una copia de seguridad en otra carpeta)
-Editar la base de datos con el plugin
-Copiar a la raspberry la base de datos
-Iniciar Weewx y comprobar que todo está bien

Saludos


Hola:
El pasado día 20 cayeron 30mm. de precipitación. Hubo un corte de luz y se perdieron varios registros por una mala configuración de Weewx ( http://forum.meteoclimatic.net/index.php/topic,1442.0.html )
Ahora estoy intentando meter manualmente los 20,1mm. perdidos (sólo reconoce 9.9mm.). Estoy usando SQLite.
En "Archive" se ven tres registros de lluvia en blanco, a la hora del chaparrón. En uno de ellos meto el resultado de multiplicar 20.1mm x 0,0393701mm./pulgada = 0,79133901 pulgadas
En "Archive_day_rain" en la columna "Sum" añado las 0,79133901 pulgadas que se perdieron.
Ahora deberían aparecer los 30mm. del día 20, más 3mm. del día siguiente, sin embargo no me reconoce 30 si no 25.4mm. Lo he repetido varias veces e incluso poniendo pulgadas de más, pero nunca refleja mas de 25.4mm. haga lo que haga.
Gracias.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: Telares en 25 de Junio del 2017, 09:44:19 am
Ya está solucionado: http://forum.meteoclimatic.net/index.php/topic,1442.0.html
Saludos.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: PacoJavi en 17 de Mayo del 2021, 09:48:17 am
Buenos días,

He visto que mi estación ESCLM1900000019238B ha registrado 9 mm de lluvia sin motivo alguno esta madrugada.

Estaba intentando corregir ese valor de lluvia con las instrucciones que jantoni nos dejó amablemente por aquí hace ya años, pero no funciona.

Como la base de datos es pequeña, estaba intentando convocar todas las horas donde se ha registrado lluvia, pero el output no arroja nada:

Código: [Seleccionar]
pi@raspberrypi:~ $  sqlite3 /var/lib/weewx/weewx.sdb
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite> select * from archive where rain>0
   ...>

Recuerdo vagamente que sqlite era bastante sibarita con el uso de mayúsculas y minúsculas, aunque al no saber nada, ignoro si el problema es este, o es que en todos estos años ha cambiado el formato del lenguaje.

Un saludo
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 17 de Mayo del 2021, 10:48:12 am
Hola PacoJavi

Da igual mayúsculas o minúsculas, el problema es que has dado una orden sin cerrarla con punto y coma, así que tendrías que haber puesto select * from archive where rain>0;
De todas formas en lo que te ha salido la línea con ...> indica que no está cerrada la orden y que espera que se la sigas poniendo, así que si ahí le pones el punto y coma y le das a Enter termina la orden y te saca el resultado.

La orden queda mejor así:

select datetime,rain from archive where rain>0;

Eso te sacará la fecha (Unix) y los registros de lluvias superiores a 0. Para ponerlos a 0 tendrás que poner el intervalo en el que quieras que los ponga:

update archive set rain=0.0 where dateTime>fechaunix and dateTime<fechaunix;

fechaunix serán las fechas en hora unix entre las que quieras que la ponga a 0.

También tendrás que poner a 0 el archive_day_rain:

select dateTime,sum from archive_day_rain where sum>0;

y corregir con:

update archive_day_rain set sum=0.0 where dateTime=fechaunix;

también puedes hacerlo con el resto de valores (intensidad de lluvia etc). Para ver los campos que hay ejecuta .schema archive y .schema archive_day_rain (observa que para esas órdenes no hace falta terminar en punto y coma).

Haz copia de BBDD antes por si algo sale mal.

También puede editar de una manera más cómoda con una GUI o interfaz gráfica por ejemplo con DB Browser for SQLite (https://sqlitebrowser.org/)

Lo instalas con sudo apt install sqlitebrowser



Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: PacoJavi en 17 de Mayo del 2021, 12:53:22 pm
No hay signo de puntuación al azar en estas cosas  :;

Ya lo he apañado, muchas gracias jmviper  :) :)

El SqliteBrowser lo uso mucho para las otras estaciones que tienen bases de datos bastante extensas ya. Para esta nueva me he atrevido con las instrucciones de Jantoni directamente: es mucho más rápido y no necesitas andar con la base de datos de la raspberry a un pc y viceversa, consumiendo megas de internet.

Aprender de estas cosas nunca está de más.

Un saludo.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 17 de Mayo del 2021, 15:09:00 pm

No hay signo de puntuación al azar en estas cosas  :;


No, la mayoría de lenguajes de programación son poco permisivos con los errores de sintaxis. Sólo conozco a JavaScript que le da igual que cierres las líneas con punto y coma o no... lo que importa es el salto de línea.

Y sí... en remoto es bueno enseñarse a manejar la consola. Lo bueno es que se quedarán en el buffer las últimas órdenes y con la tecla de flecha arriba en el teclado podrás ir recuperando las órdenes antiguas cuando estés metido en la consola de sqlite3. Yo lo uso por ejemplo para corregir precipitación y no tener que estar tecleando los comandos nuevamente... cambio fecha unix y cantidad de lluvia por las correspondientes y ya está.

Saludos
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: ogalvan en 02 de Agosto del 2021, 13:17:33 pm
Buenos días

¿Alguien tiene experiencia tocando la base de datos para corregir los datos de “dirección del viento” ?
El caso es que se me estropeó la veleta y los registros han marcado siempre dirección norte durante 15 días del mes de julio.

Tengo experiencia borrando algún registro de lluvia que accidentalmente se ha marcado al hacer limpieza del pluviómetro; respecto a la dirección del viento no me queda muy claro ya que hace medias de la dirección mensuales y tal.

Gracias
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 02 de Agosto del 2021, 15:19:04 pm
Ummmmm

Si tuviste estropeada la veleta….entonces ¿qué vas a tocar? ¿Qué dirección del viento vas a poner si la veleta estaba estropeada?

Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 02 de Agosto del 2021, 16:56:48 pm
weewx pone NULL cuando no pone ningún valor en la base de datos. NULL es estar vacío pero no a 0. Ese NULL lo pone en la dirección de la media o de la racha de la tabla archive cuando la media o la racha son 0.0 (km/h)

Si lo que tienes es dirección constante 360º con viento puedes poner esas direcciones a NULL pero tienes que hacerlo sabiendo exactamente las fechas en las que estaba mal la veleta.
Primero detén weewx antes y haz copia de la BBDD antes de ningún toqueteo en ella.

Abrir con sudo sqlite3 /var/lib/weewx/weewx.sdb

Y en la línea de comandos de sqlite3 pones:

Código: [Seleccionar]
select windDir,windGustDir from archive where dateTime>fechadeiniciounix and dateTime<fechadefinalizacionunix;

Cambiando fechadeiniciounix y fechadefinalizacionunix por las fechas unix desde las que tuviste estropeada la dirección.

Ahí te saldrán muchas líneas seguramente con 360|360 o valor equivalente que indique dirección norte (0º ??)

para ponerlas a NULL:

Código: [Seleccionar]
update archive set windDir=NULL,windGustDir=NULL where dateTime>fechadeiniciounix and dateTime<fechadefinalizacionunix;

Una vez puestas a NULL puedes consultar otra vez si se han quedado a NULL con el primer comando.

Sal de la BBDD (.exit) y ya puedes usar las utilidades de weewx.

Sin arrancar todavía weewx usa este comando en la línea de comandos de Linux:

Código: [Seleccionar]
sudo wee_database --rebuild-daily --from=YYYY-mm-dd --to=YYYY-mm-dd
poniendo las fechas de inicio y de final en --from y en --to en ese formato para reconstruir las tablas diarias con los nuevos datos de viento.

Para regenerar los informes NOAA si pertenecen al pasado mes borra el mes de /var/www/html/weewx/NOAA y te lo generará.

Quizás te sea más fácil ver visualmente desde cuando están mal las direcciones con DB Browser (https://sqlitebrowser.org/dl/)
Puedes cambiarlas ahí directamente a NULL o como te he dicho con la línea de comandos.

Eso sí, como he dicho haz copia de la BBDD antes por si sale algo mal.

Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: ogalvan en 02 de Agosto del 2021, 17:43:51 pm
Vale, parece sencillo y muy bien explicado, se agradece un montón. Con tranquilidad un rato de estos me pongo a ello.
Entiendo que el Archive_day_windGustDir y Archive_day_windDir al hacer el "Rebuild-daily" se apaña solo ¿no?

Las veces que he tocado la base de datos siempre ha sido con el DB Browser (es más visual); y en el caso de la lluvia, iba a Archive y a Archive_day_rain a borrar los registros manualmente. En este caso como ya son 15 días aproximadamente serán muchos registros para hacerlo a mano, así que usaré el método que has explicado.

Una ultima duda, referente a la lluvia; en "Archive" ¿tambien se debería borrar los registros de la columna "rainRATE" ? , para cuando marca una falsa descarga del balancín al manipular el pluviómetro y borro los registros manualmente con DB Browser (rain, max, sum y wsum).

Gracias de nuevo




weewx pone NULL cuando no pone ningún valor en la base de datos. NULL es estar vacío pero no a 0. Ese NULL lo pone en la dirección de la media o de la racha de la tabla archive cuando la media o la racha son 0.0 (km/h)

Si lo que tienes es dirección constante 360º con viento puedes poner esas direcciones a NULL pero tienes que hacerlo sabiendo exactamente las fechas en las que estaba mal la veleta.
Primero detén weewx antes y haz copia de la BBDD antes de ningún toqueteo en ella.

Abrir con sudo sqlite3 /var/lib/weewx/weewx.sdb

Y en la línea de comandos de sqlite3 pones:

Código: [Seleccionar]
select windDir,windGustDir from archive where dateTime>fechadeiniciounix and dateTime<fechadefinalizacionunix;

Cambiando fechadeiniciounix y fechadefinalizacionunix por las fechas unix desde las que tuviste estropeada la dirección.

Ahí te saldrán muchas líneas seguramente con 360|360 o valor equivalente que indique dirección norte (0º ??)

para ponerlas a NULL:

Código: [Seleccionar]
update archive set windDir=NULL,windGustDir=NULL where dateTime>fechadeiniciounix and dateTime<fechadefinalizacionunix;

Una vez puestas a NULL puedes consultar otra vez si se han quedado a NULL con el primer comando.

Sal de la BBDD (.exit) y ya puedes usar las utilidades de weewx.

Sin arrancar todavía weewx usa este comando en la línea de comandos de Linux:

Código: [Seleccionar]
sudo wee_database --rebuild-daily --from=YYYY-mm-dd --to=YYYY-mm-dd
poniendo las fechas de inicio y de final en --from y en --to en ese formato para reconstruir las tablas diarias con los nuevos datos de viento.

Para regenerar los informes NOAA si pertenecen al pasado mes borra el mes de /var/www/html/weewx/NOAA y te lo generará.

Quizás te sea más fácil ver visualmente desde cuando están mal las direcciones con DB Browser (https://sqlitebrowser.org/dl/)
Puedes cambiarlas ahí directamente a NULL o como te he dicho con la línea de comandos.

Eso sí, como he dicho haz copia de la BBDD antes por si sale algo mal.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 02 de Agosto del 2021, 20:08:55 pm
Citar
Entiendo que el Archive_day_windGustDir y Archive_day_windDir al hacer el "Rebuild-daily" se apaña solo ¿no?

Sí, debería.

Citar
Una ultima duda, referente a la lluvia; en "Archive" ¿tambien se debería borrar los registros de la columna "rainRATE" ? , para cuando marca una falsa descarga del balancín al manipular el pluviómetro y borro los registros manualmente con DB Browser (rain, max, sum y wsum).

Puedes claro está. Así dejas los dos campos de la lluvia en el archive a 0. Si no ha llovido ese día y has tenido vuelcos por manipulación también puedes poner a 0 esos valores en el diario de lluvia o reconstruirlo a la manera del rebuild-daily, en este caso sería:

Código: [Seleccionar]
sudo wee_database --rebuild-daily --date=YYYY-mm-dd
Poniendo la fecha a reconstruir.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 03 de Agosto del 2021, 00:28:54 am
Por cierto, se me olvidaba...hacer el rebuild-daily significa reconstruir las tablas diarias a partir de los datos de la tabla archive
Si por ejemplo tienes que se genere cada 5 minutos cada registro de esa tabla puede que esos días no sea exactamente la temperatura máxima o la mínima la que se haya alcanzado...por ejemplo si la temp máxima de un día fue a las 14:53 con 34,5°C y a las 14:50 y 14:55 hay 34,4°C se quedará esa temperatura máxima de 34,4°C en ese día y en los informes.
Todo eso se minimizaría con un registro cada minuto, a costa de una BBDD más grande.

Cuando los reconstruyas mira a ver la BBDD que tienes de copia a ver si tiene esas máx/mín en cada tabla diaria y si no actualízalas en la tabla actual.

Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: ogalvan en 03 de Agosto del 2021, 12:35:25 pm
El registro lo tengo que se genera cada 5 minutos.

La verdad que para mis conocimientos, se me empieza a complicar la cosa.

Sopesando que "la media dominante de la dirección del viento y dirección del viento" no es tan importante (al menos eso creo, por unos días de error), como los datos que sí están correctos (velocidad del viento, temperaturas, pluviometria, etc).... creo que voy a optar por dejar todo como está.

Considero más importante las máximas, mínimas de temperatura que las muestre bien que el tema de la dirección del viento.

Al menos voy aprendiendo, poquito a poquito esto de la base de datos y su estructura.


Por cierto, se me olvidaba...hacer el rebuild-daily significa reconstruir las tablas diarias a partir de los datos de la tabla archive
Si por ejemplo tienes que se genere cada 5 minutos cada registro de esa tabla puede que esos días no sea exactamente la temperatura máxima o la mínima la que se haya alcanzado...por ejemplo si la temp máxima de un día fue a las 14:53 con 34,5°C y a las 14:50 y 14:55 hay 34,4°C se quedará esa temperatura máxima de 34,4°C en ese día y en los informes.
Todo eso se minimizaría con un registro cada minuto, a costa de una BBDD más grande.

Cuando los reconstruyas mira a ver la BBDD que tienes de copia a ver si tiene esas máx/mín en cada tabla diaria y si no actualízalas en la tabla actual.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: PacoJavi en 03 de Agosto del 2021, 12:43:29 pm
Disculpad el off-topic, pero eso de que "la dirección del viento es menos importante"... Que se lo digan a un malagueño o a un vasco  *+*
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jantoni en 03 de Agosto del 2021, 13:15:53 pm
Pero insisto, si tú veleta se averió…..¿qué dirección de viento vas a poner? ¿La de un vecino?

Si no registró dirección. Pues así se queda. Si se atascó, pues con la que se quedó fijada.

Lo contrario es falsear datos.

Es que es rizar el rizo. Una cosa es corregir algún error puntual, eliminando un dato, y otra es reconstruir un dato que se forma de muchas muestras.

No se cual es la intención.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: ogalvan en 03 de Agosto del 2021, 14:05:39 pm
La intención era pone NULL , que no registró ningún valor.
Ya que al registrar siempre 0° (N) las dominantes y medias de dirección del viento son erróneas.
NO voy a poner datos inventados.

Pero en eso te doy la razón, intentando ser pulcro con los datos al máximo, la puedo liar y opto por dejarlo como está.

Saludos
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: ogalvan en 03 de Agosto del 2021, 14:06:57 pm
Disculpad el off-topic, pero eso de que "la dirección del viento es menos importante"... Que se lo digan a un malagueño o a un vasco  *+*

Bueno; ya dependerá de zonas 😅, aquí principalmente es el típico Cierzo el dominante.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 03 de Agosto del 2021, 17:06:17 pm
La intención era pone NULL , que no registró ningún valor.
Ya que al registrar siempre 0° (N) las dominantes y medias de dirección del viento son erróneas.
NO voy a poner datos inventados.

Pero en eso te doy la razón, intentando ser pulcro con los datos al máximo, la puedo liar y opto por dejarlo como está.

Saludos

Exactamente esa era también mi intención al darte esa opción... NO falsear datos... si pones a NULL los valores erróneos no se deja ningún dato inventado.

Es igual que si se queda la HR fija en el 20% durante días por avería del sensor, dejamos ese 20% que es erróneo para que nos haga el mes de HR más baja del historial de la estación en los NOAA ?? La respuesta es NO y más teniendo las utilidades y opciones de weewx con la BBDD. Ponemos esos valores a NULL y no entraran en los cálculos que sí serían erróneos. Lo mismo con la dirección o cualquier otro valor.

Si quieres con DB Browser puedes poner también a NULL las tablas diarias de dirección del viento (todas las columnas menos la de la hora). Las tablas de dirección son como pusiste antes Archive_day_windGustDir y Archive_day_windDir. Esas tablas van por días y si solo han sido unos días no es tan tedioso ponerlas a NULL seleccionándolas y no tienes que reconstruir diarios, solo regenerar informes.

La decisión ya es tuya, como ves hay salidas más o menos elaboradas para todo con weewx.

saludos
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: garbatella en 23 de Octubre del 2021, 19:39:00 pm
Hola.

Acudo a vosotros a ver si alguien puede echarme una mano en la delicada tarea de toquetear las bases de datos.

Tengo un registro muy reciente, de tan sólo tres días. Y lo que ocurre es que el primer día (21 de Octubre) está basado totalmente en datos falsos (fake) generados por el simulador cuando instalé weewx.

Lo primero que he hecho ha sido entender que esa fecha, en conversión con el epoch sería: 1634767200. Lo segundo ha sido parar weewx, y acceder con sqlite3 y he mandado los siguientes comandos:

Código: [Seleccionar]
select datetime(dateTime, 'unixepoch', 'localtime') dateTime from archive where dateTime <1634767200;
Código: [Seleccionar]
delete from archive where dateTime <1634767200;
Hasta aquí todo ok (y espero que esté bien hecho  *+*). Luego he hecho lo siguiente, y es donde vienen los resultados confusos:

Código: [Seleccionar]
wee_database weewx.conf --drop-daily
Y me devuelve:
Código: [Seleccionar]
Traceback (most recent call last):
  File "/usr/share/weewx/wee_database", line 1138, in <module>
    main()
  File "/usr/share/weewx/wee_database", line 186, in main
    config_path, config_dict = weecfg.read_config(options.config_path, args)
  File "/usr/share/weewx/weecfg/__init__.py", line 173, in read_config
    locations=locations, file_name=file_name)
  File "/usr/share/weewx/weecfg/__init__.py", line 147, in find_file
    raise IOError("%s is not a file" % file_path)

Y finalmente lanzo:
Código: [Seleccionar]
wee_database weewx.conf --reubild-daily
Y me devuelve:
Código: [Seleccionar]
Usage: wee_database --help
       wee_database --create
       wee_database --reconfigure
       wee_database --transfer --dest-binding=BINDING_NAME [--dry-run]
       wee_database --add-column=NAME [--type=(REAL|INTEGER)]
       wee_database --rename-column=NAME --to-name=NEW_NAME
       wee_database --drop-columns=NAME1,NAME2,...
       wee_database --check
       wee_database --update [--dry-run]
       wee_database --drop-daily
       wee_database --rebuild-daily [--date=YYYY-mm-dd |
                                    [--from=YYYY-mm-dd] [--to=YYYY-mm-dd]]
                                    [--dry-run]
       wee_database --reweight [--date=YYYY-mm-dd |
                               [--from=YYYY-mm-dd] [--to=YYYY-mm-dd]]
                               [--dry-run]
       wee_database --calc-missing [--date=YYYY-mm-dd |
                                   [--from=YYYY-mm-dd[THH:MM]] [--to=YYYY-mm-dd[THH:MM]]]
       wee_database --check-strings
       wee_database --fix-strings [--dry-run]

Description:

Manipulate the WeeWX database. Most of these operations are handled
automatically by WeeWX, but they may be useful in special cases.

wee_database: error: no such option: --reubild-daily

Soy consciente que el dropeo y el rebuild han ido mal. ¿Alguna razón de por qué? He levantado weewx de nuevo, y en teoría todo sigue igualmente operativo y con todos los registros...



Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 23 de Octubre del 2021, 19:53:25 pm
Hola

Estás en la ruta de weewx.conf ??

Sino es así ponle la ruta:

sudo wee_database /etc/weewx/weewx.conf --drop-daily

Mejor con sudo delante si estás como usuario pi.

Puedes prescindir de poner la ruta de weewx.conf también.

En principio esos son los comandos correctos.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: garbatella en 23 de Octubre del 2021, 19:57:37 pm
Pues efectivamente, me puse en la ruta de weewx.conf y funcionó correctamente el drop-daily:

Código: [Seleccionar]
Using configuration file weewx.conf
Using database binding 'wx_binding', which is bound to database 'archive_sqlite'
Proceeding will delete all your daily summaries from database 'weewx.sdb'
Are you sure you want to proceed (y/n)? y
Dropping daily summary tables from 'weewx.sdb' ...
Daily summary tables dropped from database 'weewx.sdb' in 0.29 seconds

Pero a la hora del reubild, nada de nada. Es muy raro, porque me salta la ayuda y no parece que permita hacer un reubild-daily sin indicarle una fecha, o un periodo:

Código: [Seleccionar]
root@raspberrypi:/etc/weewx# wee_database weewx.conf --reubild-daily
Usage: wee_database --help
       wee_database --create
       wee_database --reconfigure
       wee_database --transfer --dest-binding=BINDING_NAME [--dry-run]
       wee_database --add-column=NAME [--type=(REAL|INTEGER)]
       wee_database --rename-column=NAME --to-name=NEW_NAME
       wee_database --drop-columns=NAME1,NAME2,...
       wee_database --check
       wee_database --update [--dry-run]
       wee_database --drop-daily
       wee_database --rebuild-daily [--date=YYYY-mm-dd |
                                    [--from=YYYY-mm-dd] [--to=YYYY-mm-dd]]
                                    [--dry-run]
       wee_database --reweight [--date=YYYY-mm-dd |
                               [--from=YYYY-mm-dd] [--to=YYYY-mm-dd]]
                               [--dry-run]
       wee_database --calc-missing [--date=YYYY-mm-dd |
                                   [--from=YYYY-mm-dd[THH:MM]] [--to=YYYY-mm-dd[THH:MM]]]
       wee_database --check-strings
       wee_database --fix-strings [--dry-run]

Description:

Manipulate the WeeWX database. Most of these operations are handled
automatically by WeeWX, but they may be useful in special cases.

wee_database: error: no such option: --reubild-daily
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 23 de Octubre del 2021, 20:15:00 pm
Has puesto reubild no rebuild
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: garbatella en 23 de Octubre del 2021, 20:24:25 pm
 :; Eso que decían cuando ibas al colegio o la universidad de: "antes de empezar a responder el examen, lee con calma la pregunta"... madre mía. Gracias jmviper, qué paciencia tienes!

Pues hecho, y sin problemas. Por supuesto antes de hacerlo he parado weewx y luego lo he iniciado de nuevo.

Bien, pues el toqueteo en la base de datos no debe haber sido muy correcto, porque sigo viendo los registros erróneos. Échales un ojo si tienes un momento, los tengo aquí:

http://naxos.synology.me/weewx/reports

Verás que los del día 21 son un sinsentido, como digo son datos falsos del simulador cuando se monta weewx por primera vez.

No sé, desde mi poco conocimiento de sql, con esa instrucción que dije se habría eliminado lo del día 21...?
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: garbatella en 23 de Octubre del 2021, 20:57:27 pm
Lo que sí puedo confirmar, es que desde las 20:15, weewx no está actualizando datos. El servidor web está levantado, pero no recibe datos... Miedo me da. Coincide justo con el momento en el que he lanzado el rebuild-daily
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: garbatella en 23 de Octubre del 2021, 23:08:43 pm
Pero sobre todo hay una cosa que no me gusta nada...

Código: [Seleccionar]
root@raspberrypi:/etc/weewx# ls
apache logrotate.d  meteoclimatic.ini rsyslog.d  skins  weewx.conf      weewx.conf.20211022230408 weewx.conf.dist
import logwatch     meteoclimatic.py scripts    udev   weewx.conf.20211021131321  weewx.conf.20211023200801 weewx-forecast.zip

Estos weewx.conf con referencias de fecha que son justo de los dos días que "no he querido borrar" me da muy mala espina. Recordemos que en teoría he borrado en la base de datos las lecturas del 20211020.
Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: jmviper en 24 de Octubre del 2021, 08:42:35 am
Los weewx.conf.XXXXX que hayan son copias de seguridad que hace weewx de ese fichero al detectar que hemos cambiado algo.
Si algo funciona mal habría que renombrar el weewx.conf que weewx utiliza y renombrar la copia como weewx.conf quitando la extensión final de la fecha.

Título: Re:Toqueteo de la base de datos - Errores, inconsistencias, añadir registros
Publicado por: garbatella en 24 de Octubre del 2021, 12:14:33 pm
Definitivamente, no sé si fue tocar la base de datos, o montar el módulo forecasts, pero algo ha quedado fastidiado.

Me he sacado el log jmviper, y es curioso... parece que esta mañana la cosa iba bien (pese a que accediendo al skin, no recoge datos desde ayer a las 22:55) y ha sido sobreescribir la base de datos que me has pasado corregida y algo raro refleja el log:

Código: [Seleccionar]
Oct 24 12:10:23 raspberrypi weewx[15333] DEBUG user.interceptor: empty queue
Oct 24 12:10:33 raspberrypi weewx[15333] DEBUG user.interceptor: empty queue
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: POST: PASSKEY=XXXX&stationtype=EasyWeatherV1.5.9&dateutc=2021-10-24+10:10:36&tempinf=70.9&humidityin$
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: raw data: PASSKEY=F2DCB928FAE3933F0D7647399ACFAF17&stationtype=EasyWeatherV1.5.9&dateutc=2021-10-24+$
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter PASSKEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter stationtype=EasyWeatherV1.5.9
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter baromrelin=30.166
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter maxdailygust=5.8
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter eventrainin=0.000
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter hourlyrainin=0.000
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter dailyrainin=0.000
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter weeklyrainin=0.000
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter monthlyrainin=0.622
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter freq=868M
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: ignored parameter model=WS2900_V2.01.16
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: raw packet: {'dateTime': 1635070236, 'usUnits': 1, 'temperature_in': 70.9, 'humidity_in': 51.0, 'pre$
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: mapped packet: {'dateTime': 1635070236, 'usUnits': 1, 'pressure': 30.104, 'outHumidity': 59.0, 'inHu$
Oct 24 12:10:39 raspberrypi weewx[15333] INFO weewx.manager: Added record 2021-10-24 12:10:00 CEST (1635070200) to database 'weewx.sdb'
Oct 24 12:10:39 raspberrypi weewx[15333] INFO weewx.manager: Added record 2021-10-24 12:10:00 CEST (1635070200) to daily summary in 'weewx.sdb'
Oct 24 12:10:39 raspberrypi weewx[15333] INFO weewx.engine: Main loop exiting. Shutting engine down.
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG weewx.restx: Shut down PWSWeather thread.
Oct 24 12:10:39 raspberrypi weewx[15333] INFO user.interceptor: shutting down server thread
Oct 24 12:10:39 raspberrypi weewx[15333] DEBUG user.interceptor: stop tcp server
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__: Caught unrecoverable exception:
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****  '>' not supported between instances of 'float' and 'NoneType'
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****  Traceback (most recent call last):
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 214, in run
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****      self.dispatchEvent(weewx.Event(weewx.CHECK_LOOP, packet=packet))
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 245, in dispatchEvent
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****      callback(event)
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 624, in check_loop
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****      raise BreakLoop
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****  weewx.engine.BreakLoop
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****  During handling of the above exception, another exception occurred:
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****  Traceback (most recent call last):
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 640, in post_loop
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****      self._catchup(self.engine.console.genArchiveRecords)
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 687, in _catchup
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****      for record in generator(lastgood_ts):
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/drivers/__init__.py", line 30, in genArchiveRecords
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****      raise NotImplementedError("Method 'genArchiveRecords' not implemented")
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****  NotImplementedError: Method 'genArchiveRecords' not implemented
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****  During handling of the above exception, another exception occurred:
Oct 24 12:10:39 raspberrypi weewx[15333] CRITICAL __main__:     ****

La verdad es que, llegados a este punto, los tres días que llevo datos no tienen valor alguno si hubiese que borrar la base de datos y empezar de cero. Porque como digo, el problema ahora mismo es que la estación sí envía los datos a wu y ecowitt, pero por alguna razón, está fallando en el envío al weewx (o weewx está siendo incapaz de obtenerlos mejor dicho)

Y otra cosa que me sorprende es que, la app ws view donde queda configurado la entrega de datos a wu, ecowitt y la raspberry pi, cuando accedía a la sección LOG, podría ver el chorro de números/letras cada varios segundos. Sin embargo ahora nada...