Building a "filter" for CW Skimmer with Django/Python
I (KC0YLK) had the opportunity to operate in the California QSO Party for 2008 with my friend Jim Baremore, K5QQ (major thanks to Jim for being my mentor, showing me the ropes of contesting and running the CW portion of our operation. Without him this project wouldn't have existed, because I wouldn't have needed it.) This was my first contest, and a good choice for a first contest at that. It's not super-serious / over the top in any regard, just designed to be fun for everybody. I'll share stats further down the page, but wanted to talk about the project I did to aid in the contest first.
Using a very wide-band radio receiver (able to receive a many signals simultaneously) and some software called CW Skimmer (CW or continuous wave is the method used to communicate using Morse code over the air) you can essentially see every person that your antenna can hear, at the same time. This is amazingly valuable information when you're running a contest - but it has its problems - the major one being that the stations go by incredibly fast, and you may not be interested in all of them. In this particular contest, we were only interested in stations in California (whom we had not made previous contact on a particular band (range of frequencies)). I happened to have experience with the public data from the FCC thanks to my mini-project QTHmap, so I was set.
The project required implementing a custom Python telnet client that understood what it was being told and (using the Django ORM) logging it into the database for later analysis / display (done in real-time). If the above criteria was met, it was flagged specially to be sent by a custom Python telnet server (every five seconds) which the logging/radio control software connected to. Using this software, the operator only needs to click on a station in the list received from the app for the radio to go to the frequency, and begin a conversation (or QSO in amateur radio jargon).
So, with custom telnet server/client, and another importer to grab the local log of who's been contacted already (running every 30 seconds) plus some fairly specialized hardware, nearly all of the CW portion of the contest was conducted with no traditional "search and pounce" (or tuning up/down frequencies, cross-checking callsigns, etc).
What I learned:
- I really enjoy contesting
- I enjoy using the skills myself and my friends have in order to make other things I/we enjoy even easier/more fun (and as the ideas get more crazy, enjoyment goes up)
- I need to learn / become proficient in CW so I can put my creation to work
- Sometimes a spark of an idea can explode - and you'll amaze yourself in what can be accomplished in three evenings of free time (as this project was, start to finish)
- Django, while intended and designed as a web framework, is incredibly versatile and able to accomplish nearly anything you desire
- Working as a team with an experienced contester/friend makes the process much more enjoyable
Here's our QSO map (lots of unresolvable addresses, but still shows the trend of where we were getting the most stations from. http://dev.qthmap.com/cqp/
By the Numbers:
|CW Stations Spotted (not unique) during contest:||13,302|
|CW Stations who fit required criteria (not already worked for that band/mode, with an FCC address of record in California) - will continue collecting dupes until the station is worked:||2464|
|CW Stations worked during the contest:||174|
|Phone (voice) Stations worked during the contest:||134|
|Number of counties worked:||55 (58 possible)|
AboutI'm just a geek from Northeast Kansas, formerly of Southwest Missouri. I have several (too many!) different hobbies and enjoy working with anything that's high-tech and cool. My site will talk about the things I'm interested in and what I'm up to. The links at the top all talk about my major hobbies and occupation.
No upcoming events.
Past Events (of particular interest)
- EAA Airventure 2008
Wittman Regional Airport, Oshkosh WI
July 28, 2008 - Aug. 3, 2008
- National Biplane Assocation Expo
June 6, 2009 8 a.m. - 7:30 p.m.
- Airventure 2009
July 27, 2009 00:00:00 - Aug. 2, 2009 23:59:59
- STS-129 Launch Tweetup
Cape Canaveral, FL
Nov. 15, 2009 05:55:00 - Nov. 17, 2009 19:00:00
- STS-130 Johnson Space Center Tweetup
Johnson Space Center, Houston TX
Feb. 17, 2010 7 a.m. - 10 p.m.
- EAA AirVenture 2010
July 22, 2010 00:00:00 - Aug. 3, 2010 23:59:59
Current Weather (Lawrence Municipal Airport (Lawrence, KS) - 4.84 mi. @ 279 deg)Observed Jan. 16, 2013, 6:52 a.m.
17 degrees (F),
Sky clear - visibility 10 miles
Raw: KLWC 161252Z AUTO 00000KT 10SM CLR M08/M12 A3006 RMK AO2 SLP193 T10831122
Latest Public Position Report (Today)
Received Sept. 9, 2012 3:59 p.m. (Central Time)