Notifications - foldynl/QLog GitHub Wiki

QLog can notify a third-party application(s) via UDP messages. Exchanged information include QSO operation (insert/update/delete), DX Cluster Spots, WSJTX Spots etc.

Message Format

The notification message is sent via UDP packets in JSON format. A basic message structure is shown below

{
   "appid":"QLog",
   "msgtype":"QSO",
   "time":1647197319251,
   "data":{},
   "logid":"{2046e323-b340-4634-8d52-4e70a4231978}"
}
Field Identifier Type Description
appid String an application ID of the sender. Always "QLog"
msgtype String the Message Type.
Values:
dxspot - the message is sent when QLog receives a new DX Spot from DX Cluster
QSO - the message is sent when QSO (Contact) is created/updated/deleted
spotalert - the message is sent when an incoming spot matches an user-defined Alert rule(s).
toallspot - the message is sent when QLog receives a new TO ALL announcement from DX Cluster
wcyspot - the message is sent when QLog receives a new WCY message from DX Cluster
wsjtxcqspot - the message is sent when QLog receives a new WSJTX Spot with the CQ messages
wwvspot - the message is sent when QLog receives a new WWV message from DX Cluster
time Number time when the message was sent from QLog. The field contains a number of milliseconds from 1.1.1970.
data JSON Object specific data depends on the Message Type.See chapter below for detailed description of the field structure.
logid String UUID of the log database. The Unique number for the log file

QSO Notification

Message Type : "QSO" Description: QSO Notification message is sent in following cases:

  1. when a new QSO is inserted to the log
  2. when QSO is updated by the operator
  3. when QSO is deleted by the operator

Destination IP Address: SettingsNetworkQSO Changes

"Data" Field Structure:

Field Identifier Type Description
operation String QSO operation description.
The following operations are emitted:
insert - when a new QSO is inserted to the log
update - when QSO is updated by the operator
delete - when QSO is deleted by the operator
rowid Number a unique ID of the record in the log file
type String the type of the "value" field. Currently, only adif type is supported.
value String a contact record in the format defined by "type" format.
if operator = insert then the field contains a new record
if operation = update then the field contains an updated record.
if operation = delete then the field contains an old(deleted) record.

If a contact record is updated and multiple contact fields are updated then QLog generates 1 Notification message to 1 updated contact field. It means that if an operator updates 2 contact's fields (or 1 field on which another field depends) then 2 Notifications messages are generated

An example:

{
   "appid":"QLog",
   "data":{
      "operation":"insert",
      "rowid":355,
      "type":"adif",
      "value":"<call:7>OK1TEST<qso_date:8:D>20220320<time_on:6:T>183536<qso_date_off:8:D>20220320<time_off:6:T>183557<rst_rcvd:3>599<rst_sent:3>599<name:12>Testing Name<qth:6>Prague<gridsquare:6>JO70GB<cqz:2>15<ituz:2>28<freq:8:N>10.12649<band:3>30m<mode:2>CW<cont:2>EU<dxcc:3>503<country:14>Czech Republic<qsl_rcvd:1>N<qsl_sent:1>N<lotw_qsl_rcvd:1>N<lotw_qsl_sent:1>N<a_index:1>5<band_rx:3>30m<distance:17>9.266243887046823<eqsl_qsl_rcvd:1>N<eqsl_qsl_sent:1>N<freq_rx:8>10.12649<hrdlog_qso_upload_status:1>N<k_index:4>1.33<my_city:5>PRAHA<my_gridsquare:6>JO70GD<my_rig:9>moje_nove<operator:5>LADAS<sfi:2>94<station_callsign:6>OK1MLG<eor>"
   },
   "logid":"{2046e323-b340-4634-8d52-4e70a4231978}",
   "msgtype":"qso",
   "time":1647801358067
}

DX Spot Notification

Message Type :"dxspot" Description: DX Spot Notification message is sent when QLog is connected to DX Cluster and DX Spot is received from the server. Log resends all received messages - user filter has no impact on the notification messages.

Destination IP Address: SettingsNetworkDX Spots

"Data" Field Structure:

Field Identifier Type Description
band String Spot Band
comment String The comment from the spot
dx JSON Object JSON object contains details about the reported DX. Details below.
freq Number The post frequency
mode String The spot modes
Values:
PHONE
DIGI
CW
FT8
rcvtime String time when spot was received in format YYYYMMDD HH:MI:SS (in UTC)
spotter JSON Object JSON object contains details about the spotter. Details below
status String DX Spot status based on the record in the log.
Following statuses can be emitted:
newentity - totally new DXCC in the log
newbandmode - DXCC worked but a totally new band and totally new mode.
newband - DXCC worked with particular mode but a new band
newmode - DXCC worked on the band but a new mode in the log
newslot - DXCC worked on the band but a new mode not the band
worked - already worked
confirmed - confirmed by paper QSL or LoTW
unknown - an internal query error

DX/Spotter Fields Structure:

Field Identifier Type Description
call String the DX/Spotter callsign
cont String the DX/Spotter continent
country String the DX/Spotter country
cqz Number the DX/Spotter CQ Zone
dxcc Number the DX/Spotter DXCC Entity number
ituz Number the DX/Spotter ITU Zone
member JSON Array JSON Array contains the names of club DX is a member of. (Only for DX Field)
pfx String the DX/Spotter prefix
utcoffset Number the DX/Spotter Timezone (UTC offset)

An example:

{
    "appid": "QLog",
    "data": {
        "band": "40m",
        "comment": "tnx qso",
        "dx": {
            "call": "YB0AR",
            "cont": "OC",
            "country": "Indonesia",
            "cqz": 28,
            "dxcc": 327,
            "ituz": 54,
            "member": ["LoTW", "eQSLAG"]
            "pfx": "YB",
            "utcoffset": -7
        },
        "freq": "7.1880",
        "mode": "PHONE",
        "rcvtime": "20220316 20:04:30",
        "spotter": {
            "call": "G0DEF",
            "cont": "EU",
            "country": "England",
            "cqz": 14,
            "dxcc": 223,
            "ituz": 27,
            "pfx": "G",
            "utcoffset": 0
        },
        "status": "newentity"
    },
    "logid":"{2046e323-b340-4634-8d52-4e70a4231978}",
    "msgtype": "dxspot",
    "time": 1647461070837
}

Spot Alert Notification

Message Type :"spotalert" Description: Spot Alert Notification message is sent when incoming spot (WSJTX or DXC) matches user-defined Alert rules.

Destination IP Address: SettingsNetworkSpots Alert

"Data" Field Structure:

Field Identifier Type Description
band String Spot Band
comment String The comment from the spot
dx JSON Object JSON object contains details about the reported DX. Details below.
freq Number The post frequency
mode String The spot modes
Values:
PHONE
DIGI
CW
FT8
rcvtime String time when spot was received in format YYYYMMDD HH:MI:SS (in UTC)
rules JSON Array JSON Array contains the names of all the rules for which the match was evaluated.
spotter JSON Object JSON object contains details about the spotter. Details below.
In case of of spots from WSJTX source, the field contains information about your own station.
status String DX Spot status based on the record in the log.
Following statuses can be emitted:
newentity - totally new DXCC in the log
newbandmode - DXCC worked but a totally new band and totally new mode.
newband - DXCC worked with particular mode but a new band
newmode - DXCC worked on the band but a new mode in the log
newslot - DXCC worked on the band but a new mode not the band
worked - already worked
confirmed - confirmed by paper QSL or LoTW
unknown - an internal query error

DX/Spotter Fields Structure:

Field Identifier Type Description
call String the DX/Spotter callsign
cont String the DX/Spotter continent
country String the DX/Spotter country
cqz Number the DX/Spotter CQ Zone
dxcc Number the DX/Spotter DXCC Entity number
ituz Number the DX/Spotter ITU Zone
member JSON Array JSON Array contains the names of club DX is a member of. (Only for DX Field)
pfx String the DX/Spotter prefix
utcoffset Number the DX/Spotter Timezone (UTC offset)

An example:

{
   "appid":"QLog",
   "data":{
      "band":"17m",
      "comment":"CW     7 dB  25 WPM  CQ     ",
      "dx":{
         "call":"ZL3CW",
         "cont":"OC",
         "country":"New Zealand",
         "cqz":32,
         "dxcc":170,
         "ituz":60,
         "member": ["LOTW", "eQSLAG"]
         "pfx":"ZL",
         "utcoffset":-12
      },
      "freq":18.073,
      "mode":"CW",
      "rcvtime":"20220510 08:42:34",
      "rules":[
         "rule1",
         "rule2"
      ],
      "spotter":{
         "call":"SM6FMB",
         "cont":"EU",
         "country":"Sweden",
         "cqz":14,
         "dxcc":284,
         "ituz":18,
         "pfx":"SM",
         "utcoffset":-1
      },
      "status":"newentity"
   },
   "logid":"{2046e323-b340-4634-8d52-4e70a4231978}",
   "msgtype":"spotalert",
   "time":1652172154472
}

WSJTX CQ Spot Notification

Message Type : "wsjtxcqspot" Description: WSJTX CQ Spot Notification message is sent when QLog receives the CQ Spot from WSJT-X application. QLog sends only CQ Spot, the rest of WSJT-X information are not resent. Please, use WSJTX Forward option to obtain a full set of raw WSJTX messages.

Destination IP Address: SettingsNetworkWSJTX CQ Spots

"Data" Field Structure:

Field Identifier Type Description
band String Spot Band
comment String The comment from the spot
dx JSON Object JSON object contains details about the reported DX. Details below.
freq Number The post frequency
mode String Mode string from WSJTX
rcvtime String time when spot was received in format YYYYMMDD HH:MI:SS (in UTC)
status String DX Spot status based on the record in the log.
Following statuses can be emitted:
newentity - totally new DXCC in the log
newbandmode - DXCC worked but a totally new band and totally new mode.
newband - DXCC worked with particular mode but a new band
newmode - DXCC worked on the band but a new mode in the log
newslot - DXCC worked on the band but a new mode not the band
worked - already worked
confirmed - confirmed by paper QSL or LoTW
unknown - an internal query error

"dx" Fields Structure:

Field Identifier Type Description
call String the DX callsign
cont String the DX continent
country String the DX country
cqz Number the DX CQ Zone
dxcc Number the DX DXCC Entity number
ituz Number the DX ITU Zone
member JSON Array JSON Array contains the names of club DX is a member of. (Only for DX Field)
pfx String the DX prefix
utcoffset Number the DX Timezone (UTC offset)

An example:

{
   "appid":"QLog",
   "data":{
      "band":"80m",
      "comment":"CQ OK1MLG JO70",
      "dx":{
         "call":"OK1MLG",
         "cont":"EU",
         "country":"Europe",
         "cqz":15,
         "dxcc":503,
         "grid":"JO70",
         "ituz":28,
         "member":["LOTW", "eQSLAG"]
         "pfx":"OK",
         "utcoffset":-2
      },
      "freq":"3.5730",
      "mode":"FT8",
      "rcvtime":"20220318 17:04:29",
      "status":"newband"
   },
   "logid":"{2046e323-b340-4634-8d52-4e70a4231978}",
   "msgtype":"wsjtxcqspot",
   "time":1647623069705
}

WCY Spot Notification

Message Type : "wcyspot" Description: WCY Spot Notification message is sent when QLog receives the WCY Spot from currently connected DX Cluster.

Destination IP Address: SettingsNetworkDX Spots

"Data" Field Structure:

Field Identifier Type Description
A Number A Index
Au String Aurora Status (no, aurora, strong)
GMF String Geomagnetic Field
qui - quiet
act - active
min - minor storm
maj - major storm
sev - severe storm
mag - magstorm in progress
war - warning conditions
nil - no info available
K Number K Index
R Number Sunspot Number
SA String San Activity
qui - quiet
eru - eruptive
act - active
maj - major flare
pro - proton flare
war - warning conditions
nil - no info available
SFI Number Solar Flux Index
expK Number expected K Index for next hour
rcvtime String time when spot was received in format YYYYMMDD HH:MI:SS (in UTC)

An example:

{
   "appid":"QLog",
   "data":{
      "A":13,
      "Au":"no",
      "GMF":"act",
      "K":3,
      "R":0,
      "SA":"qui",
      "SFI":68,
      "expK":3,
      "rcvtime":"20220923 11:29:16"
   },
   "logid":"{c804ab21-c1bf-4b7f-90a6-8927bdb10dd0}",
   "msgtype":"wcyspot",
   "time":1663932556260
}

WWV Spot Notification

Message Type : "wwvspot" Description: WWV Spot Notification message is sent when QLog receives the WWV Spot from currently connected DX Cluster.

Destination IP Address: SettingsNetworkDX Spots

"Data" Field Structure:

Field Identifier Type Description
A Number A Index
Info1 String Information 1
Info2 String Information 2
K Number K Index
SFI Number Solar Flux Index
rcvtime String time when spot was received in format YYYYMMDD HH:MI:SS (in UTC)

An example:

{
   "appid":"QLog",
   "data":{
      "A":12,
      "Info1":"No Storms",
      "Info2":"No Storms",
      "K":2,
      "SFI":68,
      "rcvtime":"20220923 11:29:16"
   },
   "logid":"{c804ab21-c1bf-4b7f-90a6-8927bdb10dd0}",
   "msgtype":"wwvspot",
   "time":1663932556294
}

To ALL Spot Notification

Message Type : "wwvspot" Description: To ALL Spot Notification message is sent when QLog receives to ALL announcement from currently connected DX Cluster.

Destination IP Address: SettingsNetworkDX Spots

"Data" Field Structure:

Field Identifier Type Description
message QString annoncement
rcvtime String time when spot was received in format YYYYMMDD HH:MI:SS (in UTC)
spotter JSON Object JSON object contains details about the spotter. Details below.
In case of of spots from WSJTX source, the field contains information about your own station.

Spotter Fields Structure:

Field Identifier Type Description
call String the DX/Spotter callsign
cont String the DX/Spotter continent
country String the DX/Spotter country
cqz Number the DX/Spotter CQ Zone
dxcc Number the DX/Spotter DXCC Entity number
ituz Number the DX/Spotter ITU Zone
pfx String the DX/Spotter prefix
utcoffset Number the DX/Spotter Timezone (UTC offset)

An example:

{
   "appid":"QLog",
   "data":{
      "message":"GB7RDX New Users Welcome. cluster.g3ldi.co.uk Port 7000",
      "rcvtime":"20220923 11:29:16",
      "spotter":{
         "call":"G3LDI",
         "cont":"EU",
         "country":"England",
         "cqz":14,
         "dxcc":223,
         "ituz":27,
         "pfx":"G",
         "utcoffset":0
      }
   },
   "logid":"{c804ab21-c1bf-4b7f-90a6-8927bdb10dd0}",
   "msgtype":"toallspot",
   "time":1663932556327
}
⚠️ **GitHub.com Fallback** ⚠️