WeeWX y modificaciones en la base de datos "a pelo" (II)

En Estaciones meteorológicas de baja calidad, WeeWX y modificaciones en la base de datos "a pelo" explico los motivos por los que a veces resulta conveniente modificar manualmente los registros de la base de datos de la estación meteorológica gestionada con WeeWX.

El procedimiento cambia bastante en la última versión WeeWX, como describo a continuación. En realidad el proceso se ha simplificado.

El problema a resolver en este caso es que las obras en la fachada del edificio han movido la estación meteorológica, que lo ha detectado como lluvia. Hay que borrar ese punto del histórico y recalcular el resumen diario.

Lo primero que llama a la atención es que a partir de la versión 3.0 de WeeWX, las bases de datos de histórico y de resúmenes se guardan en un único fichero SQLite. La estructura, por lo demás, es evidente tras habernos familiarizado con su antecesora.

Los pasos son:

  1. Paramos WeeWX:

    $ /etc/init.d/weewx stop
    Stopping weewx (via systemctl): weewx.service.
    
  2. Nos vamos al directorio de la base de datos y buscamos el registro problemático:

    $ cd /home/weewx/archive
    $ ls -la
    total 124244
    drwxr-xr-x  2 weewx weewx     4096 Oct 18 00:51 .
    drwxr-xr-x 14 weewx weewx     4096 Oct 18 00:52 ..
    -rw-r--r--  1 weewx weewx 64044032 Oct 18 00:51 weewx.sdb
    -rw-r--r--  1 weewx weewx 63164416 Sep 30 17:33 weewx.sdb.OLD
    
    $ sqlite3 weewx.sdb
    sqlite> select dateTime,rainRate,rain from archive where dateTime>1508230592.8833451 and dateTime<1508237825.8249063 and rainRate>0;
    1508231162|1.32|0.33
    1508231462|1.32|0.0
    1508231762|1.32|0.0
    1508232061|1.32|0.0
    
  3. Podríamos borrar esos registros sin más, pero dejarían un hueco de quince minutos en nuestras estadísticas. Verifico que no haya más datos relacionados con la lluvia:

    sqlite> .schema archive
    CREATE TABLE archive (`dateTime` INTEGER NOT NULL UNIQUE PRIMARY KEY, `usUnits` INTEGER NOT NULL, `interval` INTEGER NOT NULL, `barometer` REAL, `pressure` REAL, `altimeter` REAL, `inTemp` REAL, `outTemp` REAL, `inHumidity` REAL, `outHumidity` REAL, `windSpeed` REAL, `windDir` REAL, `windGust` REAL, `windGustDir` REAL, `rainRate` REAL, `rain` REAL, `dewpoint` REAL, `windchill` REAL, `heatindex` REAL, `ET` REAL, `radiation` REAL, `UV` REAL, `extraTemp1` REAL, `extraTemp2` REAL, `extraTemp3` REAL, `soilTemp1` REAL, `soilTemp2` REAL, `soilTemp3` REAL, `soilTemp4` REAL, `leafTemp1` REAL, `leafTemp2` REAL, `extraHumid1` REAL, `extraHumid2` REAL, `soilMoist1` REAL, `soilMoist2` REAL, `soilMoist3` REAL, `soilMoist4` REAL, `leafWet1` REAL, `leafWet2` REAL, `rxCheckPercent` REAL, `txBatteryStatus` REAL, `consBatteryVoltage` REAL, `hail` REAL, `hailRate` REAL, `heatingTemp` REAL, `heatingVoltage` REAL, `supplyVoltage` REAL, `referenceVoltage` REAL, `windBatteryStatus` REAL, `rainBatteryStatus` REAL, `outTempBatteryStatus` REAL, `inTempBatteryStatus` REAL);
    
  4. Parece que vamos sobre seguro. En vez de borrar los registros completos, pongo su información de lluvia a cero:

    sqlite> update archive set rainRate=0,rain=0 where dateTime>1508230592.8833451 and dateTime<1508237825.8249063 and rainRate>0;
    sqlite> .exit
    
  5. Regeneramos las estadísticas diarias:

    $  ../bin/wee_database --config=/home/weewx/weewx.conf --rebuild-daily --from=2017-10-10
    Using configuration file /home/weewx/weewx.conf
    Using database binding 'wx_binding', which is bound to database 'archive_sqlite'
    Daily summaries from 2017-10-10 through the end will be rebuilt.
    Proceed (y/n)? y
    Rebuilding daily summaries in database 'weewx.sdb' ...
    Records processed: 2000; Last date: 2017-10-16 22:54:01 CEST (1508187241)
    Processed 2311 records to rebuild 9 day summaries in 19.24 seconds
    Rebuild of daily summaries in database 'weewx.sdb' complete
    
  1. Hacemos copia de la base de datos:

    $ cp -a weewx.sdb weewx.sdb.OLD
    $ ls -la
    ls -la
    total 125104
    drwxr-xr-x  2 weewx weewx     4096 Oct 18 01:17 .
    drwxr-xr-x 14 weewx weewx     4096 Oct 18 00:52 ..
    -rw-r--r--  1 weewx weewx 64044032 Oct 18 01:17 weewx.sdb
    -rw-r--r--  1 weewx weewx 64044032 Oct 18 01:17 weewx.sdb.OLD
    
  2. Arrancamos WeeWX:

    $ /etc/init.d/weewx start
    Starting weewx (via systemctl): weewx.service.
    

Esperamos unos minutos para que WeeWX empiece a recoger datos y regenerar gráficas y comprobamos que todo está como debe estar:

dayrain-20171018.png

Para el que tenga curiosidad, la estación está disponible online.