I have been a Ham for 5 years and my favorite thing to do is chase DX. As a new Ham, it was always a thrill to work a new DXCC, but now that I have over 280 DXCCs and over 1000 band points, it is a little more difficult to find a new one. Add to that the fact that I am trying to get a DXCC in 80m and 160m., which are usually open when I am asleep. I created the DX Alarm Clock as a way to get notified that there is something new on the air when I am not down in the shack. This article will talk about how I developed the software for the DX Alarm Clock. Part 2 will talk about building the Raspberry Pi-based Hardware and loading the OS.
The DX Alarm Clock is a Python software program running on a Raspberry Pi that gathers data online about my log and what is on the spotting network and uses that data to alert me when there is a “new one” on the air.
The ClubLog website provides a light DX Cluster website called DXLite, which has an XML Interface. The DX Alarm Clock uses this interface to get the current spots. The software uses the Developer API from ClubLog to get a JSON matrix of all DXCC entities by band indicating whether I have worked, confirmed, or verified each band-entity. The software loops through all of the spots returned by DXLite and looks each DXCC up in the JSON ClubLog matrix. I also use the QRZ.com XML Interface to get additional information for each callsign that is spotted, like the state.
The DX Alarm Clock uses tkinter/ttk for the GUI. I used the Notebook widget to create a multi-tab GUI. There is a tab for configuring filters for DX Entity. The user can choose all New DXCCs, as well as specific bands and nodes to provide alerts for.
There is another tab for configuring filters for WAS. ClubLog has no log look-up capability based on US State so the WAS filter lets you create a list of States and associated bands to provide alerts for.
The Notification tab allows the configuration of what notifications the user would like to receive. The user can specify a separate email address for New DXCCs, New Band Points, and New US States. This allows alerts to be sent to email accounts or as SMS texts. You can also configure the sounds the DX Alarm Clock itself makes to “wake you up” when that ATNO or new Band Point is spotted.
The DXAlarm clock wakes up every 5 minutes and gets the latest spots from the DXLite Cluster. It checks each spot against the ClubLog log and if there is a match based on the configured filters, it sounds the alert, and then speaks the alarm, giving you the Callsign, DXCC Entity, Band, and Mode. A simple text-to-speech package called flite (festival-lite) was used to implement the speech on the Raspberry Pi.
It also puts a message with these details and the Frequency, UTC Date/Time, Spotter, and Comment on the display.
Additionally, it sends this information as an email to the configured email address, which results in a text or email.
I can even get the alert on my Apple Watch.
Once all spots are processed, it keeps a running list of all spots that resulted in alerts on the main screen. Spots are aged out if they do not recur over time.
The DX Alarm Clock just alerted me that ZC4SB is on 20m – that’s an ATNO! Got to go down to the shack and work him! Stay tuned for Part 2 of this post on the DXAlarm Clock Raspberry Pi-based hardware and on setting up the Raspberry Pi OS.