Utilisation du fichier Wsjtx.log.

Ce mémo complète le document « Un logbook V1 »

Objectif : Remplacer la création par tableur d’un mini logbook par un script Python plus convivial et automatisé.

 

1-   Outils nécessaires :

Python 3.11  et Sqlite 3.44   (utilisés pour documenter ce mémo)

   Ce fichier contient les informations relatives à tous les QSOs effectués dans les modes FT8/FT4, à condition que ce fichier n’ait pas été réinitialisé.

 

2- Comment est alimenté ce fichier

Les informations sont enregistrées en confirmant par « Ok » le QSO, auparavant renseigner le champ « Comments » par le « Country » du correspondant, un copier/coller permet de remplir facilement ce champ qui deviendra disponible dans le log.

 

3- Objectif  

 Sqlite a été installé au préalable sous Windows).

Le fichier Wsjtx.log  se trouve dans /User/nnnnn/AppData/local/WSJTX   (souvent caché).

Il manque une information dans la description du QSO , c’est la bande utilisée, la fréquence est renseignée, donc facile de rajouter un champ bande. Un programme Python permet, entre autres, d’insérer ce champ dans chaque enregistrement.   La source commentée et copiable de ce script est ici

Il est préférable, la première fois de copier ce fichier Wsjtx.log vers un fichier de travail, (s’assurer qu’il n’y a pas de lignes parasites, y compris la dernière ligne non visible) ensuite on utilisera uniquement les ajouts au fichier d’origine des nouveaux QSOs.

Ce programme Python a d’autres fonctions (expliquées au cours de ce document).

 

4- Exécution script python.

Pour lancer le programme Python (un « point bat » sur le bureau)

@echo on

py c:/Pgm-Radio/Py/Wsjtx_log_choix_csv.py 

pause

 

 - Fournir une clé d’identification unique à chaque enregistrement (nécessaire pour une Data Base), ce sera 1 pour la première fois.

- Effectuer une mise en forme des données au format « csv »         Mise à jour vers Sql

En cours du script le choix du fichier « In » est proposé.

En fin d’exécution le programme indique où est disponible le fichier « out » (facilement modifiable dans le script).

 

5- Création  Data Base

 Dans un premier temps création de la Base Sqlite.

Lancer Sqlite  (un raccourci sur le bureau pour exécuter  le programme « sqlite3.exe » 

.open c:/temp/log_book.db    (la première fois la Data Base  est créée)

 

6- Création table

Ensuite créer la table « Mes_Qso »

CREATE TABLE Mes_Qso (

    ID         INTEGER PRIMARY KEY,

    Qso_Date   TEXT NOT NULL,

    Time_on    TEXT NOT NULL,

    Date_off   TEXT,

    Time_off   TEXT,

    Call_c     TEXT NOT NULL,

    Grid       TEXT,

    Band       TEXT,

    Freq       TEXT,

    Mode       TEXT NOT NULL,

    Rst_rcvd   TEXT,

    Rst_sent   TEXT,

    Tx_pwr     TEXT,

    Country    TEXT,

    Name       TEXT,

    Note       TEXT

                  );

 

A noter : ces champs ne sont pas restrictifs, il est possible d’en ajouter.

 

Résultat

 

 

 Vérifier la création de la table

   .mode box                                                  # un point devant =  commande Sqlite

   pragma table_info ('Mes_Qso');            # un point-virgule  en fin  = commande Sql

 

 

La structure de la table est OK.

 

7- Chargement de la table.

Signaler que l’on utilise un fichier csv , Sqlite  utilise ce modèle pour l’import de données , chaque champ étant séparé par un délimiteur (virgule dans ce cas).

.mode csv

Puis import du fichier           celui qui a été créé par le script Python.

.import c:/temp/Upd_Log_FT8_Sql.csv  Mes_qso 

 

Si erreur trouvée lors de l’import c’est signalé.

 

 

Fin de la première étape.

Lorsque cette table a été initialisée et alimentée une première fois, il est nécessaire de la conserver, c’est dans cette table que seront injectés les nouveaux QSOs.

 

8- Maj de la DB

C’est un ajout (masse update) des « records » créés dans le log wsjtx au fur et à mesure du temps.

Comme il s‘agit d’un ajout de QSOs vers une Data Base, sélectionner uniquement les enregistrements à ajouter.

Depuis le fichier /User/nnnnn/Appdata/local/WSJTX/wsjtx.log  copier ces nouveaux QSOs (ctrl/c),  puis coller (ctrl/v) ces lignes dans un fichier temporaire.

Suivre ce qui est décrit aux paragraphes 4 et 7, pour l’exécution du script Python la seule chose qui diffère il faudra fournir le dernier ID connu dans la base.

La commande Sql  ci-dessous permet d’identifier le dernier « record » de la table.

Tri de la table sur la « key » en ordre décroissant, affiche seulement un enregistrement.

SELECT  ID,Call_c,Qso_date,Time_on  FROM `Mes_qso` ORDER BY `ID` DESC LIMIT 1;

 

La présentation est plus lisible après un affichage en « .mode box »

 

9- Exemples de requêtes Sql (Queries)

 

    select Call_c, Qso_date,Band,Mode from Mes_qso order by Call_c COLLATE NOCASE, Qso_date;

 

    select Call_c, Qso_date,Band,Mode, Country from Mes_qso order by Call_c COLLATE NOCASE, Qso_date;

 

    select ID, Call_c, Qso_date, Band, Mode, Country from Mes_qso WHERE Call_c  LIKE '3b%';

 

    select ID, Call_c, Qso_date, Band, Mode, Country from Mes_qso WHERE Country LIKE 'France%';

 

    select ID, Call_c, Qso_date, Band, Mode, Country from Mes_qso WHERE Country BETWEEN 'France%' AND 'Italy' order BY Country;

 

    select ID, Call_c, Qso_date, Band, Mode, Country from Mes_qso order by ID;

 

    select ID, Call_c, Qso_date, Band, Mode, Country from Mes_qso order by Mode, Country;

 

    select ID, Call_c, Qso_date, Band, Mode, Country from Mes_qso order by Qso_Date,Time_on;

 

 

Le script Python utilisé permet aussi de générer des mises à jour pour une data Base Microsoft Access, ce qui explique le choix proposé, toutes les lignes sont formatées pour être intégrées au carnet de trafic.

 

 

Ce qui suit concerne l’auteur.

 

Transfert d’une base  Access vers  une base Sqlite.

 Exporter en xlsx

 Ouvrir le fichier

Vérifier que tous les champs sont conformes, date sous la forme AA-MM-JJ , heure sous la forme HH:MM:SS 

Ainsi que la colonne Id sous 5 chiffres.

Faire les corrections (format de colonne).

Sauvegarder en .xlxs

Puis enregistrer en .csv  (séparateur « , »)  il est mis  à tort en « ; »

Charger le fichier avec Bloc-notes (faire un Remplacer de « , » par « . » sur l’ensemble du fichier (champ fréquence mal formaté).

Toujours dans Bloc-notes (faire un Remplacer de « ; » par « , » sur l’ensemble du fichier.

Supprimer la première ligne (pour le chargement vers Sqlite)

Laisser la première ligne pour un chargement vers « MS Accesss »

Enregistrer ce fichier .csv, il sera la base de départ d’une copie de la DB Access vers la DB Sqlite. 

 

 

Pierre Schuster F5BQV           Novembre 2023

 

Retour à l’accueil   http://f5bqv.fr