WinterFieldDayLogger
Winter Field Day logger written in Python 3 using PyQt5
Install / Use
/learn @mbridak/WinterFieldDayLoggerREADME
K6GTE Winter Field Day logger (PyQt5)
Winter Field Day is a once a year 24hr emergency preparidness event for radio amateurs (Hams). During the event, we try and make as many radio contacts with other Hams in a 24 hour period. Bonus points are awarded for operating outside or using alternate power sources, such as battery/solar/wind. You can find out more about Winter Field Day by visiting the WFDA. You can find out more about amateur radio by visiting the ARRL.
The logger is written in Python 3, and uses the PyQT5 lib. Qt5 is cross platform so it might work on everything. I have tested it on Linux, Rasperry Pi OS and Windows 10. This code is based off of a logger I had done earlier using Python and the curses library wich can be found here and one written for ARRL Field Day here.
The log is stored in an sqlite3 database file 'WFD.db'. If you need to wipe everything and start clean, just delete this file and re-run wfdlogger
The logger client will generate a cabrillo for submission, An ADIF file so you can merge contacts into your normal Log, and a Statistics file with a band mode breakdown.
The server if used, will generate a group cabrillo file to submit.

Table Of Contents
- K6GTE Winter Field Day logger (PyQt5)
- Table Of Contents
- Caveats
- Recent Changes
- WB8ERJ's blog writeup
- Installing, Updating, Removing Client
- Running Client
- The Server
- What to do first
- Logging
- Features
- CW
- When the event is over
- Group / Club logging
- Server configuration
- Client configuration for groups
- Chat Window
- How to know the server is there
- Logging reliability
- Generating the cabrillo file
- I'm sure there are short cummings
Caveats
WFD only has a generic digital mode designator 'DI', which gets exported to the cabrillo file. But ADIF and CloudLog needed something else, So I Chose RTTY. Feel free to change it to what ever you will use. Just search for the two places in the code 'RTTY' is used and Bob's your dads brother.
Recent Changes
- [24.2.19] Fixed the fix for the datetime.utc deprecation. Older Python versions work again.
- [24.1.27] Change band/mode when dropdowns are changed. removed some deprecations.
- [23.2.3] Added visual cue as to validity of logged class and section.
- [23.1.30] Changed Cabrillo tag 'CONTEST' to WFD.
- [23.1.28] xplanet markers not generating.
- [23.1.27] Fixed order of CW macro buttons.
- [23.1.23] Visual tweaks
- [23.1.20] UI now resizable.
- [23.1.14] Safer access to dict keys.
- [23.1.14] Added app icons.
- [22.12.28] Repackaged for pypi pip installation.
- [22.12.28] Removed use of BeautifulSoup and lxml. Migrated to xmltodict.
- [22.12.27] WFDA preferres
DGas the mode indicator for digital. - [22.12.16] Changed the RAC sections for 2023. Thanks for the heads up WB8ERJ!
- [22.11.12] 2023 scoring and antenna bonus.
- [22.10.13] Added N1MM XML status packets. So you can use Kyle AA0Z's Node-Red dashboard.
- [22.10.9] Added a group contact aggregation server. So multiple clients can participate in WFD together.
WB8ERJ's blog writeup
Installing, Updating, Removing Client
#install
pip install wfdlogger
#update
pip install -U wfdlogger
#remove
pip uninstall wfdlogger
Running Client
In a terminal type:
wfdlogger
The Server
Server install
pip install wfdserver
Server Documentation
What to do first
On first run, there will be a dialog box asking you for your call class and section. if you need to change this later, the entry fields can be found at the bottom of the screen.
If you're participating as a member of a group, do not put your groups/club call as your call. Enter your own call. The group call will be polled from the server.

Logging
Okay you've made a contact. Enter the call in the call field. As you type it in, it will do a super check partial (see below). Press TAB or SPACE to advance to the next field. Once the call is complete it will do a DUP check (see below). It will try and Autofill the next fields (see below). When entering the section, it will do a section partial check (see below). Press the ENTER key to submit the Q to the log. If it's a busted call or a dup, press the ESC key to clear all inputs and start again.
Features
Radio Polling via flrig or rigctld
If you run flrig or rigctld on a computer connected to the radio, it can be polled for band/mode updates automatically. Click the gear icon at the bottom of the screen to set the IP and port. There is a radio icon at the bottom of the logging window to indicate polling status.

Cloudlog, QRZ, HamDB, HamQTH useage
If you use either Cloudlog logging or QRZ/HamDB/HamQTH lookup you can click the gear icon to enter your credentials.
Q's are pushed to CloudLog as soon as they are logged.
The QRZ/HamDB/HamQTH lookup is only used to get the Op name and gridsquare for the call. Mainly because when a Q is pushed to CloudLog it will not show as a pin on the map unless it has a gridsquare. So this is a scratch my own itch feature. HAMDB.org is used by default since it's free. If both are checked it will it will use QRZ then fallback to HAMDB.
N1MM packets for Node-Red Dashboard
If you wish to use Kyle AA0Z's Node-Red contest dashboard, edit these settings.

XPlanet marker file
If you use QRZ/HamdDB/HamQTH lookups you can also generate an XPlanet markerfile which will show little pips on the map as contacts are logged.

The above launched with an example command:
xplanet -body earth -window -longitude -117 -latitude 38 -config Default -projection azmithal -radius 200 -wait 5
Editing an existing contact
Double click a contact in the upper left of the screen to edit or delete it.

Super Check Partial
If you type more than two characters in the callsign field the program will filter the input through a "Super Check Partial" routine and show you possible matches to known contesting call signs. Is this useful? Doubt it.

Section partial check
As you type the section abbreviation you are presented with a list of all possible sections that start with what you have typed.

DUP checking
Once you type a complete callsign and press TAB or SPACE to advance to the next field. The callsign is checked against previous callsigns in your log. It will list any prior contact made showing the band and mode of the contact. If the band and mode are the same as the one you are currently using, the listing will be highlighted, the screen will flash, a bell will sound to alert you that this is a DUP. At this point you and the other OP can argue back and forth about who's wrong. In the end you'll put your big boy pants on and make a decision if you'll enter the call or not.
