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