From 7f2b9ef611adb4e5bca83e77bdab1aa7252d04b0 Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Mon, 26 Jul 2021 21:07:24 +0200 Subject: [PATCH 1/4] M10: extract #sat; M20: upload to sondehub without #sat --- RX_FSK/RX_FSK.ino | 3 ++- RX_FSK/version.h | 2 +- libraries/SondeLib/M10M20.cpp | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index 9e1e887..d8165ab 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -3122,7 +3122,8 @@ void sondehub_send_data(WiFiClient *client, SondeInfo *s, struct st_sondehub *co if (*s->ser == 0) return; // Don't send anything without serial number if (((int)s->lat == 0) && ((int)s->lon == 0)) return; // Sometimes these values are zeroes. Don't send those to the sondehub if ((int)s->alt > 50000) return; // If alt is too high don't send to SondeHub - if ((int)s->sats < 4) return; // If not enough sats don't send to SondeHub + // M20 data does not include #sat information + if ( s->type!=STYPE_M20 && (int)s->sats < 4) return; // If not enough sats don't send to SondeHub // If not connected to sondehub, try reconnecting. // TODO: do this outside of main loop diff --git a/RX_FSK/version.h b/RX_FSK/version.h index 5893029..60beae8 100644 --- a/RX_FSK/version.h +++ b/RX_FSK/version.h @@ -1,4 +1,4 @@ const char *version_name = "rdzTTGOsonde"; -const char *version_id = "devel20210630"; +const char *version_id = "devel20210726"; const int SPIFFS_MAJOR=2; const int SPIFFS_MINOR=11; diff --git a/libraries/SondeLib/M10M20.cpp b/libraries/SondeLib/M10M20.cpp index 67d8525..c7e902b 100644 --- a/libraries/SondeLib/M10M20.cpp +++ b/libraries/SondeLib/M10M20.cpp @@ -319,6 +319,7 @@ int M10M20::decodeframeM10(uint8_t *data) { float vn = getint16(data+6)*VMUL; sonde.si()->vs = getint16(data+8) * VMUL; sonde.si()->hs = sqrt(ve*ve+vn*vn); + sonde.si()->sats = data[30]; float dir = atan2(vn, ve)*(1.0/RAD); if(dir<0) dir+=360; sonde.si()->dir = dir; From 4dc3ea6974985754d1f8960f7ba99d1deeb7bbe8 Mon Sep 17 00:00:00 2001 From: Michael Carter Date: Mon, 26 Jul 2021 20:09:03 +0100 Subject: [PATCH 2/4] add reboot to control buttons (#111) --- RX_FSK/RX_FSK.ino | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index d8165ab..adb8e6c 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -783,23 +783,24 @@ const char *handleConfigPost(AsyncWebServerRequest *request) { return ""; } -const char *ctrlid[] = {"rx", "scan", "spec", "wifi", "rx2", "scan2", "spec2", "wifi2"}; +const char *ctrlid[] = {"rx", "scan", "spec", "wifi", "rx2", "scan2", "spec2", "wifi2", "reboot"}; const char *ctrllabel[] = {"Receiver/next freq. (short keypress)", "Scanner (double keypress)", "Spectrum (medium keypress)", "WiFi (long keypress)", - "Button 2/next screen (short keypress)", "Button 2 (double keypress)", "Button 2 (medium keypress)", "Button 2 (long keypress)" + "Button 2/next screen (short keypress)", "Button 2 (double keypress)", "Button 2 (medium keypress)", "Button 2 (long keypress)", + "Reboot" }; const char *createControlForm() { char *ptr = message; strcpy(ptr, HTMLHEAD); strcat(ptr, ""); HTMLBODY(ptr, "control.html"); - for (int i = 0; i < 8; i++) { + for (int i = 0; i < 9; i++) { strcat(ptr, ""); - if (i == 3) { + if (i == 3 || i == 7 ) { strcat(ptr, "

"); } } @@ -847,6 +848,10 @@ const char *handleControlPost(AsyncWebServerRequest *request) { Serial.println("equals wifi2"); button2.pressed = KP_LONG; } + else if (param.equals("reboot")) { + Serial.println("equals reboot"); + ESP.restart(); + } } return ""; } From 5987c92fab269019971490ddbd99f9a01dfe6951 Mon Sep 17 00:00:00 2001 From: Luke Prior <22492406+LukePrior@users.noreply.github.com> Date: Tue, 27 Jul 2021 05:11:33 +1000 Subject: [PATCH 3/4] SondeHub Fix Chase Cars (#104) * fix chase cars * update version ID * fix version Co-authored-by: Uskompuf <22492406+Uskompuf@users.noreply.github.com> Co-authored-by: dl9rdz --- RX_FSK/RX_FSK.ino | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index adb8e6c..679d6fa 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -2221,22 +2221,10 @@ void loopDecoder() { } #if FEATURE_SONDEHUB if (sonde.config.sondehub.active) { - unsigned long time_now = millis(); - // time_delta will be correct, even if time_now overflows - unsigned long time_delta = time_now - time_last_update; - if ((sonde.config.sondehub.chase == 0) && (time_delta >= SONDEHUB_STATION_UPDATE_TIME)) { // 60 min - sondehub_station_update(&shclient, &sonde.config.sondehub); - time_last_update = time_now; - } - else if ((sonde.config.sondehub.chase == 1) && (time_delta >= SONDEHUB_MOBILE_STATION_UPDATE_TIME)) { // 30 sec - sondehub_station_update(&shclient, &sonde.config.sondehub); - time_last_update = time_now; - } sondehub_send_data(&shclient, s, &sonde.config.sondehub); } #endif - #if FEATURE_MQTT // send to MQTT if enabled if (connected && mqttEnabled) { @@ -3010,6 +2998,22 @@ void loop() { lastMqttUptime = now; } #endif + +#if FEATURE_SONDEHUB + if (sonde.config.sondehub.active) { + unsigned long time_now = millis(); + // time_delta will be correct, even if time_now overflows + unsigned long time_delta = time_now - time_last_update; + if ((sonde.config.sondehub.chase == 0) && (time_delta >= SONDEHUB_STATION_UPDATE_TIME) && (wifi_state != WIFI_APMODE)) { // 60 min + sondehub_station_update(&shclient, &sonde.config.sondehub); + time_last_update = time_now; + } + else if ((sonde.config.sondehub.chase == 1) && (time_delta >= SONDEHUB_MOBILE_STATION_UPDATE_TIME) && (wifi_state != WIFI_APMODE)) { // 30 sec + sondehub_station_update(&shclient, &sonde.config.sondehub); + time_last_update = time_now; + } + } +#endif } #if FEATURE_SONDEHUB @@ -3052,7 +3056,7 @@ void sondehub_station_update(WiFiClient *client, struct st_sondehub *conf) { else if (gpsPos.valid && gpsPos.lat != 0 && gpsPos.lon != 0) { sprintf(w, "\"uploader_position\": [%.6f, %.6f, %d]," - "\"uploader_antenna\": \"%s\"" + "\"uploader_antenna\": \"%s\"," "\"mobile\": \"true\"" "}", gpsPos.lat, gpsPos.lon, gpsPos.alt, conf->antenna); From 7555eda02403dfdd20cea5a8fa6727396bd36062 Mon Sep 17 00:00:00 2001 From: Luke Prior <22492406+LukePrior@users.noreply.github.com> Date: Tue, 27 Jul 2021 05:14:23 +1000 Subject: [PATCH 4/4] lat,lon,alt improvements (#103) Co-authored-by: Uskompuf <22492406+Uskompuf@users.noreply.github.com> Co-authored-by: dl9rdz --- RX_FSK/RX_FSK.ino | 51 ++++++++++++++++++++++++++++-------------- RX_FSK/data/config.txt | 6 ++--- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index 679d6fa..532ff68 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -417,13 +417,13 @@ const char *createSondeHubMap() { HTMLBODY(ptr, "map.html"); if (!sonde.config.sondehub.active) { strcat(ptr, "
NOTE: SondeHub uploading is not enabled, detected sonde will not be visable on map
"); - if ((*s->ser == 0) && (strcmp(sonde.config.sondehub.lat,"null"))) { + if ((*s->ser == 0) && (sonde.config.sondehub.lat[0] != '\0')) { sprintf(ptr + strlen(ptr), "", sonde.config.sondehub.lat, sonde.config.sondehub.lon); } else { sprintf(ptr + strlen(ptr), "", s-> ser); } } else { - if ((*s->ser == 0) && (strcmp(sonde.config.sondehub.lat,"null"))) { + if ((*s->ser == 0) && (sonde.config.sondehub.lat[0] != '\0')) { sprintf(ptr, "", sonde.config.sondehub.lat, sonde.config.sondehub.lon); } else { sprintf(ptr, "", s-> ser); @@ -3046,16 +3046,24 @@ void sondehub_station_update(WiFiClient *client, struct st_sondehub *conf) { "\"uploader_contact_email\": \"%s\",", version_name, version_id, conf->callsign, conf->email); w += strlen(w); - if (conf->chase == 0) { - sprintf(w, - "\"uploader_position\": [%s,%s,%s]," - "\"uploader_antenna\": \"%s\"" - "}", - conf->lat, conf->lon, conf->alt, conf->antenna); + if ((conf->chase == 0) && (conf->lat[0] != '\0') && (conf->lon[0] != '\0')){ + if (conf->alt[0] != '\0') { + sprintf(w, + "\"uploader_position\": [%s,%s,%s]," + "\"uploader_antenna\": \"%s\"" + "}", + conf->lat, conf->lon, conf->alt, conf->antenna); + } else { + sprintf(w, + "\"uploader_position\": [%s,%s,null]," + "\"uploader_antenna\": \"%s\"" + "}", + conf->lat, conf->lon, conf->antenna); + } } else if (gpsPos.valid && gpsPos.lat != 0 && gpsPos.lon != 0) { sprintf(w, - "\"uploader_position\": [%.6f, %.6f, %d]," + "\"uploader_position\": [%.6f,%.6f,%d]," "\"uploader_antenna\": \"%s\"," "\"mobile\": \"true\"" "}", @@ -3235,17 +3243,26 @@ void sondehub_send_data(WiFiClient *client, SondeInfo *s, struct st_sondehub *co w += strlen(w); } - if (conf->chase == 0) { - sprintf(w, - "\"uploader_position\": [ %s, %s, %s ]," - "\"uploader_antenna\": \"%s\"" - "}]", - conf->lat, conf->lon, conf->alt, conf->antenna - ); + if ((conf->chase == 0) && (conf->lat[0] != '\0') && (conf->lon[0] != '\0')){ + if (conf->alt[0] != '\0') { + sprintf(w, + "\"uploader_position\": [%s,%s,%s]," + "\"uploader_antenna\": \"%s\"" + "}]", + conf->lat, conf->lon, conf->alt, conf->antenna + ); + } else { + sprintf(w, + "\"uploader_position\": [%s,%s,null]," + "\"uploader_antenna\": \"%s\"" + "}]", + conf->lat, conf->lon, conf->antenna + ); + } } else if (gpsPos.valid && gpsPos.lat != 0 && gpsPos.lon != 0) { sprintf(w, - "\"uploader_position\": [ %.6f, %.6f, %d ]," + "\"uploader_position\": [%.6f,%.6f,%d]," "\"uploader_antenna\": \"%s\"" "}]", gpsPos.lat, gpsPos.lon, gpsPos.alt, conf->antenna diff --git a/RX_FSK/data/config.txt b/RX_FSK/data/config.txt index c3c518d..4e6e86c 100644 --- a/RX_FSK/data/config.txt +++ b/RX_FSK/data/config.txt @@ -126,9 +126,9 @@ sondehub.active=0 sondehub.chase=0 sondehub.host=api.v2.sondehub.org sondehub.callsign=CHANGEME_RDZTTGO -sondehub.lat=null -sondehub.lon=null -sondehub.alt=null +sondehub.lat= +sondehub.lon= +sondehub.alt= sondehub.antenna= sondehub.email= #-------------------------------#