diff --git a/README.md b/README.md index 49163e6..8d16990 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,8 @@ It also supports feeding data to external applications using WiFi (NOT bluetooth - AXUDP (for aprsmap application by oe5dxl, among others) - KISS TNC (aprs format, mainly useful for APRSdroid app) - MQTT -- SondeHub tracker (experimental) +- SondeHub tracker +- Chasemapper UDP (experimental) Please consult the Wiki at https://github.com/dl9rdz/rdz_ttgo_sonde/wiki/Supported-boards diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index 441120f..b4374df 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -24,6 +24,9 @@ #include "src/aprs.h" #include "src/ShFreqImport.h" #include "src/RS41.h" +#if FEATURE_CHASEMAPPER +#include "src/Chasemapper.h" +#endif #if FEATURE_MQTT #include "src/mqtt.h" @@ -537,7 +540,7 @@ const char *createLiveJson() { strcpy(ptr, "{"); SondeInfo *s = &sonde.sondeList[sonde.currentSonde]; - sprintf(ptr + strlen(ptr), "\"rssi\": %d, \"sonde\": {\"vframe\": %d, \"time\": %d,\"id\": \"%s\", \"freq\": %3.3f, \"type\": \"%s\"," + sprintf(ptr + strlen(ptr), "\"sonde\": {\"rssi\": %d, \"vframe\": %d, \"time\": %d,\"id\": \"%s\", \"freq\": %3.3f, \"type\": \"%s\"," "\"lat\": %.6f, \"lon\": %.6f, \"alt\": %.0f, \"speed\": %.1f, \"dir\": %.0f, \"climb\": %.1f, \"launchsite\": \"%s\", \"res\": %d }", s->rssi, s->vframe, s->time, s->id, s->freq, sondeTypeStr[s->type], s->lat, s->lon, s->alt, s->hs, s->dir, s->vs, s->launchsite, s->rxStat[0]); @@ -738,7 +741,12 @@ struct st_configitems config_list[] = { {"tcp.port", 0, &sonde.config.tcpfeed.port}, {"tcp.idformat", -2, &sonde.config.tcpfeed.idformat}, {"tcp.highrate", 0, &sonde.config.tcpfeed.highrate}, - +#if FEATURE_CHASEMAPPER + /* Chasemapper settings */ + {"cm.active", -3, &sonde.config.cm.active}, + {"cm.host", 63, &sonde.config.cm.host}, + {"cm.port", 0, &sonde.config.cm.port}, +#endif #if FEATURE_MQTT /* MQTT */ {"mqtt.active", 0, &sonde.config.mqtt.active}, @@ -2514,6 +2522,11 @@ void loopDecoder() { Serial.print("sending: "); Serial.println(raw); tncclient.write(raw, rawlen); } +#if FEATURE_CHASEMAPPER + if (sonde.config.cm.active) { + Chasemapper::send(udp, s); + } +#endif } #if FEATURE_SONDEHUB if (sonde.config.sondehub.active) { diff --git a/RX_FSK/data/cfg.js b/RX_FSK/data/cfg.js index 4e36234..c248b0f 100644 --- a/RX_FSK/data/cfg.js +++ b/RX_FSK/data/cfg.js @@ -54,6 +54,10 @@ var cfgs = [ [ "mqtt.username", "MQTT username"], [ "mqtt.password", "MQTT password"], [ "mqtt.prefix", "MQTT prefix"], +[ "", "Chasemapper settings"], +[ "cm.active", "Chasemapper active (0=disabled, 1=active)"], +[ "cm.host", "Chasemapper UDP host"], +[ "cm.port", "Chasemapper UDP port"], [ "", "SondeHub settings"], [ "sondehub.active", "SondeHub reporting (0=disabled, 1=active)"], [ "sondehub.chase", "SondeHub location reporting (0=off, 1=fixed, 2=chase/GPS, 3=auto)"], diff --git a/RX_FSK/data/livemap.js b/RX_FSK/data/livemap.js index 07bfeff..c7fd5f2 100644 --- a/RX_FSK/data/livemap.js +++ b/RX_FSK/data/livemap.js @@ -46,11 +46,12 @@ $(document).ready(function(){ var reddot = ''; var yellowdot = ''; var greendot = ''; +var lastframe = 0; $('#map .leaflet-control-container').append(L.DomUtil.create('div', 'leaflet-top leaflet-center leaflet-header')); var header = ''; header += '