Merge branch 'dl9rdz:devel' into devel

pull/212/head
eben80 2021-09-21 11:13:21 +02:00 zatwierdzone przez GitHub
commit 9825442272
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
7 zmienionych plików z 37 dodań i 12 usunięć

Wyświetl plik

@ -11,7 +11,8 @@ It also supports feeding data to external applications using WiFi (NOT bluetooth
- AXUDP (for aprsmap application by oe5dxl, among others) - AXUDP (for aprsmap application by oe5dxl, among others)
- KISS TNC (aprs format, mainly useful for APRSdroid app) - KISS TNC (aprs format, mainly useful for APRSdroid app)
- MQTT - MQTT
- SondeHub tracker (experimental) - SondeHub tracker
- Chasemapper UDP (experimental)
Please consult the Wiki at https://github.com/dl9rdz/rdz_ttgo_sonde/wiki/Supported-boards Please consult the Wiki at https://github.com/dl9rdz/rdz_ttgo_sonde/wiki/Supported-boards

Wyświetl plik

@ -24,6 +24,9 @@
#include "src/aprs.h" #include "src/aprs.h"
#include "src/ShFreqImport.h" #include "src/ShFreqImport.h"
#include "src/RS41.h" #include "src/RS41.h"
#if FEATURE_CHASEMAPPER
#include "src/Chasemapper.h"
#endif
#if FEATURE_MQTT #if FEATURE_MQTT
#include "src/mqtt.h" #include "src/mqtt.h"
@ -537,7 +540,7 @@ const char *createLiveJson() {
strcpy(ptr, "{"); strcpy(ptr, "{");
SondeInfo *s = &sonde.sondeList[sonde.currentSonde]; 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 }", "\"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]); 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.port", 0, &sonde.config.tcpfeed.port},
{"tcp.idformat", -2, &sonde.config.tcpfeed.idformat}, {"tcp.idformat", -2, &sonde.config.tcpfeed.idformat},
{"tcp.highrate", 0, &sonde.config.tcpfeed.highrate}, {"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 #if FEATURE_MQTT
/* MQTT */ /* MQTT */
{"mqtt.active", 0, &sonde.config.mqtt.active}, {"mqtt.active", 0, &sonde.config.mqtt.active},
@ -2514,6 +2522,11 @@ void loopDecoder() {
Serial.print("sending: "); Serial.println(raw); Serial.print("sending: "); Serial.println(raw);
tncclient.write(raw, rawlen); tncclient.write(raw, rawlen);
} }
#if FEATURE_CHASEMAPPER
if (sonde.config.cm.active) {
Chasemapper::send(udp, s);
}
#endif
} }
#if FEATURE_SONDEHUB #if FEATURE_SONDEHUB
if (sonde.config.sondehub.active) { if (sonde.config.sondehub.active) {

Wyświetl plik

@ -54,6 +54,10 @@ var cfgs = [
[ "mqtt.username", "MQTT username"], [ "mqtt.username", "MQTT username"],
[ "mqtt.password", "MQTT password"], [ "mqtt.password", "MQTT password"],
[ "mqtt.prefix", "MQTT prefix"], [ "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 settings"],
[ "sondehub.active", "SondeHub reporting (0=disabled, 1=active)"], [ "sondehub.active", "SondeHub reporting (0=disabled, 1=active)"],
[ "sondehub.chase", "SondeHub location reporting (0=off, 1=fixed, 2=chase/GPS, 3=auto)"], [ "sondehub.chase", "SondeHub location reporting (0=off, 1=fixed, 2=chase/GPS, 3=auto)"],

Wyświetl plik

@ -46,11 +46,12 @@ $(document).ready(function(){
var reddot = '<span class="ldot rbg"></span>'; var reddot = '<span class="ldot rbg"></span>';
var yellowdot = '<span class="ldot ybg"></span>'; var yellowdot = '<span class="ldot ybg"></span>';
var greendot = '<span class="ldot gbg"></span>'; var greendot = '<span class="ldot gbg"></span>';
var lastframe = 0;
$('#map .leaflet-control-container').append(L.DomUtil.create('div', 'leaflet-top leaflet-center leaflet-header')); $('#map .leaflet-control-container').append(L.DomUtil.create('div', 'leaflet-top leaflet-center leaflet-header'));
var header = ''; var header = '';
header += '<div id="sonde_main"><b>rdzTTGOSonde LiveMap</b><br />🎈 <b><span id="sonde_id"></span> - <span id="sonde_freq"></span> MHz - <span id="sonde_type"></span></b></div>'; header += '<div id="sonde_main"><b>rdzTTGOSonde LiveMap</b><br />🎈 <b><span id="sonde_id"></span> - <span id="sonde_freq"></span> MHz - <span id="sonde_type"></span></b></div>';
header += '<div id="sonde_detail"><span id="sonde_alt"></span>m | <span id="sonde_climb"></span>m/s | <span id="sonde_speed"></span>km/h</div>'; header += '<div id="sonde_detail"><span id="sonde_alt"></span>m | <span id="sonde_climb"></span>m/s | <span id="sonde_speed"></span>km/h | <span id="sonde_dir"></span>°<br /><span id="sonde_time"></span> | -<span id="sonde_rssi"></span>dBm</div>';
header += '<div id="sonde_status"><span id="sonde_statbar"></span></div>'; header += '<div id="sonde_status"><span id="sonde_statbar"></span></div>';
header += '<div id="settings"><br /><b>Prediction-Settings</b><br />'; header += '<div id="settings"><br /><b>Prediction-Settings</b><br />';
@ -74,16 +75,19 @@ headtxt = function(data,stat) {
var staticon = (stat == '1')?greendot:yellowdot; var staticon = (stat == '1')?greendot:yellowdot;
statbar = staticon + statbar; statbar = staticon + statbar;
if ((statbar.length) > 10*greendot.length) { statbar = statbar.substring(0,10*greendot.length); } if ((statbar.length) > 10*greendot.length) { statbar = statbar.substring(0,10*greendot.length); }
if (data.lat == '0.000000') { return false; } if (data.id && data.vframe != lastframe ) {
if (data.id) { lastframe = data.vframe;
$('#sonde_id').html(data.id); $('#sonde_id').html(data.id);
$('#sonde_alt').html(data.alt); $('#sonde_alt').html(data.alt);
$('#sonde_climb').html(data.climb); $('#sonde_climb').html(data.climb);
$('#sonde_speed').html( mr(data.speed * 3.6 * 10) / 10 ); $('#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(); $('#sonde_detail').show();
} else { } else {
$('#sonde_id').html(data.launchsite.trim()); $('#sonde_id').html(data.launchsite.trim());
$('#sonde_detail').hide(); // $('#sonde_detail').hide();
} }
$('#sonde_freq').html(data.freq); $('#sonde_freq').html(data.freq);
$('#sonde_type').html(data.type); $('#sonde_type').html(data.type);
@ -159,7 +163,7 @@ headtxt = function(data,stat) {
//console.log(data); //console.log(data);
if (data.id) { if (data.id) {
// data.res: 0: ok 1: no rx (timeout), 2: crc err, >2 some other error // 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]; var location = [data.lat,data.lon,data.alt];
if (!marker) { if (!marker) {
map.setView(location, 14); map.setView(location, 14);
@ -180,10 +184,13 @@ headtxt = function(data,stat) {
} }
dots.push(location); dots.push(location);
line.setLatLngs(dots); line.setLatLngs(dots);
}
if (data.res == 0) {
storage_write(data); storage_write(data);
$('#status').html(greendot); $('#status').html(greendot);
stat = 1; stat = 1;
} else { }
else {
$('#status').html(yellowdot); $('#status').html(yellowdot);
stat = 0; stat = 0;
} }

Wyświetl plik

@ -5,7 +5,7 @@
/* data feed to sondehubv2 */ /* data feed to sondehubv2 */
/* needs about 4k4 code, 200b data, 200b stack, 200b heap */ /* needs about 4k4 code, 200b data, 200b stack, 200b heap */
#define FEATURE_SONDEHUB 1 #define FEATURE_SONDEHUB 1
#define FEaTURE_CHASEMAPPER 1 #define FEATURE_CHASEMAPPER 1
#define FEATURE_MQTT 1 #define FEATURE_MQTT 1
#define FEATURE_RS92 1 #define FEATURE_RS92 1

Wyświetl plik

@ -14,7 +14,7 @@ int Chasemapper::send(WiFiUDP &udp, SondeInfo *si) {
sprintf(buf, "{ \"type\": \"PAYLOAD_SUMMARY\"," sprintf(buf, "{ \"type\": \"PAYLOAD_SUMMARY\","
"\"callsign\": \"%s\"," "\"callsign\": \"%s\","
"\"latitude\": %g," "\"latitude\": %g,"
"\"longidude\": %g," "\"longitude\": %g,"
"\"altitude\": %d," "\"altitude\": %d,"
"\"speed\": %d," "\"speed\": %d,"
"\"heading\": %d," "\"heading\": %d,"

Wyświetl plik

@ -1,4 +1,4 @@
const char *version_name = "rdzTTGOsonde"; const char *version_name = "rdzTTGOsonde";
const char *version_id = "devel20210920"; const char *version_id = "devel20210921";
const int SPIFFS_MAJOR=2; const int SPIFFS_MAJOR=2;
const int SPIFFS_MINOR=16; const int SPIFFS_MINOR=16;