Passare allo schema wview_extended

Weewx V4.x offre un nuovo schema wview_extended, con molti nuovi campi. Potresti trovarne utili molti di questi e voler passare ad esso. Prima di spiegare come farlo, vale la pena notare:

  1. In Weewx, gli schemi presenti in schemas/wview.py e schemas/wview_extended.py vengono utilizzati solo quando viene creato il database. Successivamente, lo schema viene letto dal database stesso e i file non vengono più utilizzati;
  2. Sebbene wview_extended sia il nuovo schema predefinito per V4.x, non è necessario "aggiornarlo". Il tuo vecchio schema wview continuerà a funzionare correttamente con V4.x. Passa al nuovo schema solo se trovi utili i nuovi campi;
  3. Se stai usando MySQL e hai bisogno solo di uno o due dei nuovi campi, potresti trovare più semplice aumentare la tabella usando il comando SQL AUGMENT TABLE. Ciò consente di modificare lo schema del database in situ ed è molto più veloce. Sfortunatamente, SQLite non ha un comando analogo.

Ecco come effettuare il passaggio. Si noti che questi punti sono solo una variante delle istruzioni nella sezione Aggiunta di un nuovo tipo al database, che si trova nella Guida alla personalizzazione.

Queste istruzioni presumono che tu stia usando Weewx V4.x

  1. Utilizzeremo l'utilità wee_database per eseguire il passaggio.

  2. Ferma weewxd.

  3. Modifica wx_binding. Quando crea il nuovo database modificato, wee_database deve sapere come utilizzare lo schema wview_extended invece del vecchio schema wview. Puoi farlo modificando l'opzione schema nella sezione [DataBindings] in weewx.conf.

    La sezione [DataBindings] ora ha questo aspetto:

    [DataBindings]
       [[wx_binding]]
           # The database option is unchanged. If you are using MySQL, it should be archive_mysql
           database = archive_sqlite
           table_name = archive
           # Older installs will use weewx.wxmanager.WXDaySummaryManager instead of weewx.manager.DaySummaryManager. Doesn't matter.
           manager = weewx.manager.DaySummaryManager
           # Specify the new, extended schema here:
           schema = schemas.wview_extended.schema

    Si noti che per l'opzione manager è possibile utilizzare weewx.manager.DaySummaryManager o weewx.wxmanager.WXDaySummaryManager.

  4. Controlla i permessi. wee_database creerà un nuovo database con lo stesso nome del vecchio, ma con il suffisso _new aggiunto alla fine. Assicurati di disporre delle autorizzazioni necessarie per crearlo. In particolare, se utilizzi MySQL, avrai bisogno dei privilegi CREATE:

    mysql> GRANT select, update, create, delete, insert ON weewx_new.* TO weewx@localhost;
  5. Creare e popolare il nuovo database. Ora esegui l'utilità wee_database con l'opzione --reconfigure. Se il tuo file di configurazione weewx.conf si trova in una posizione insolita, potresti dover fornire il suo percorso come argomento.

    wee_database weewx.conf --reconfigure

    Questo creerà un nuovo database (nominalmente, weewx.sdb_new se stai usando SQLite, weewx_new se stai usando MySQL) usando il nuovo schema e lo popolerà con i dati del vecchio database.

  6. Unire i database.

    Fai un backup dei dati prima di eseguire uno dei passaggi successivi!

    Per questo passaggio, uniremo i database in modo che il nuovo abbia il nome del vecchio.

    Per SQLite:

    cd <sqlite directory>
    mv weewx.sdb_new weewx.sdb

    dove <sqlite directory> rappresenta la posizione del database. Se hai installato Weewx con un pacchetto (ad esempio Debian), questo sarebbe generalmente /var/lib/weewx. Se hai eseguito un'installazione setup.py, è /home/weewx/archive.

    Per MySQL:

    mysql -u <username> --password=<mypassword>
    mysql> DROP DATABASE weewx;                             # Delete the old database
    mysql> CREATE DATABASE weewx;                           # Create a new one with the same name
    mysql> RENAME TABLE weewx_new.archive TO weewx.archive; # Rename to the nominal name
  7. Costruire i riepiloghi giornalieri. Infine, devono essere costruiti i riepiloghi giornalieri all'interno del database. Questo verrà fatto automaticamente dall'avvio di Weewx, ma è buona norma farlo manualmente, poiché questo processo può richiedere del tempo:

    wee_database weewx.conf --rebuild-daily
  8. Riavvia weewxd.

Autore: gjr80