From 13134b32f7b119f353969f5968d2d24aeb21e437 Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Tue, 21 Sep 2021 09:44:01 +0200 Subject: [PATCH 1/4] (good for now) --- RX_FSK/data/livemap.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RX_FSK/data/livemap.js b/RX_FSK/data/livemap.js index 07bfeff..959a424 100644 --- a/RX_FSK/data/livemap.js +++ b/RX_FSK/data/livemap.js @@ -74,7 +74,7 @@ headtxt = function(data,stat) { var staticon = (stat == '1')?greendot:yellowdot; statbar = staticon + statbar; if ((statbar.length) > 10*greendot.length) { statbar = statbar.substring(0,10*greendot.length); } - if (data.lat == '0.000000') { return false; } + //if (data.lat == '0.000000') { return false; } if (data.id) { $('#sonde_id').html(data.id); $('#sonde_alt').html(data.alt); From afbfde07dd40e97aeacee55fa4f6e4db6c0de505 Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Tue, 21 Sep 2021 10:40:21 +0200 Subject: [PATCH 2/4] +Chasemapper udp support --- RX_FSK/RX_FSK.ino | 15 ++++++++++++++- RX_FSK/data/cfg.js | 4 ++++ RX_FSK/features.h | 2 +- RX_FSK/src/Chasemapper.cpp | 2 +- RX_FSK/version.h | 2 +- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index 441120f..13b70fa 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" @@ -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/features.h b/RX_FSK/features.h index fecf820..60341cf 100644 --- a/RX_FSK/features.h +++ b/RX_FSK/features.h @@ -5,7 +5,7 @@ /* data feed to sondehubv2 */ /* needs about 4k4 code, 200b data, 200b stack, 200b heap */ #define FEATURE_SONDEHUB 1 -#define FEaTURE_CHASEMAPPER 1 +#define FEATURE_CHASEMAPPER 1 #define FEATURE_MQTT 1 #define FEATURE_RS92 1 diff --git a/RX_FSK/src/Chasemapper.cpp b/RX_FSK/src/Chasemapper.cpp index d24ced4..6c98de9 100644 --- a/RX_FSK/src/Chasemapper.cpp +++ b/RX_FSK/src/Chasemapper.cpp @@ -14,7 +14,7 @@ int Chasemapper::send(WiFiUDP &udp, SondeInfo *si) { sprintf(buf, "{ \"type\": \"PAYLOAD_SUMMARY\"," "\"callsign\": \"%s\"," "\"latitude\": %g," - "\"longidude\": %g," + "\"longitude\": %g," "\"altitude\": %d," "\"speed\": %d," "\"heading\": %d," diff --git a/RX_FSK/version.h b/RX_FSK/version.h index ec175bc..9bd5aa5 100644 --- a/RX_FSK/version.h +++ b/RX_FSK/version.h @@ -1,4 +1,4 @@ const char *version_name = "rdzTTGOsonde"; -const char *version_id = "devel20210920"; +const char *version_id = "devel20210921"; const int SPIFFS_MAJOR=2; const int SPIFFS_MINOR=16; From 56d6e357821ee61a842ca676107acb73e50e7ac4 Mon Sep 17 00:00:00 2001 From: dl9rdz Date: Tue, 21 Sep 2021 10:43:46 +0200 Subject: [PATCH 3/4] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 From e32ea8e432d3dcd85897fdf475db51b3118bb703 Mon Sep 17 00:00:00 2001 From: eben80 Date: Tue, 21 Sep 2021 11:04:44 +0200 Subject: [PATCH 4/4] LiveMap updates to include last received datetime, heading and rssi (#182) * Add direction, UTC datetime and rssi to livemap * Further fixes Co-authored-by: dl9rdz --- RX_FSK/RX_FSK.ino | 2 +- RX_FSK/data/livemap.js | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index 13b70fa..b4374df 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -540,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]); diff --git a/RX_FSK/data/livemap.js b/RX_FSK/data/livemap.js index 959a424..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 += '
rdzTTGOSonde LiveMap
🎈 - MHz -
'; -header += '
m | m/s | km/h
'; +header += '
m | m/s | km/h | °
| -dBm
'; header += '
'; header += '

Prediction-Settings
'; @@ -74,16 +75,19 @@ headtxt = function(data,stat) { var staticon = (stat == '1')?greendot:yellowdot; statbar = staticon + statbar; if ((statbar.length) > 10*greendot.length) { statbar = statbar.substring(0,10*greendot.length); } - //if (data.lat == '0.000000') { return false; } - if (data.id) { + if (data.id && data.vframe != lastframe ) { + lastframe = data.vframe; $('#sonde_id').html(data.id); $('#sonde_alt').html(data.alt); $('#sonde_climb').html(data.climb); $('#sonde_speed').html( mr(data.speed * 3.6 * 10) / 10 ); + $('#sonde_dir').html(data.dir); + $('#sonde_time').html(new Date(data.time * 1000).toISOString()); + $('#sonde_rssi').html(data.rssi / 2 ); $('#sonde_detail').show(); } else { $('#sonde_id').html(data.launchsite.trim()); - $('#sonde_detail').hide(); + // $('#sonde_detail').hide(); } $('#sonde_freq').html(data.freq); $('#sonde_type').html(data.type); @@ -159,7 +163,7 @@ headtxt = function(data,stat) { //console.log(data); if (data.id) { // data.res: 0: ok 1: no rx (timeout), 2: crc err, >2 some other error - if ((data.lat != '0.000000' && data.lon != '0.000000') && (data.res==0)) { //JSON.stringify(data) != JSON.stringify(last_data)) ) { + if ((data.lat != '0.000000' && data.lon != '0.000000') && (lastframe != 0)) { //JSON.stringify(data) != JSON.stringify(last_data)) ) { var location = [data.lat,data.lon,data.alt]; if (!marker) { map.setView(location, 14); @@ -180,10 +184,13 @@ headtxt = function(data,stat) { } dots.push(location); line.setLatLngs(dots); + } + if (data.res == 0) { storage_write(data); $('#status').html(greendot); stat = 1; - } else { + } + else { $('#status').html(yellowdot); stat = 0; }