diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino
index b24998e..500d1bf 100644
--- a/RX_FSK/RX_FSK.ino
+++ b/RX_FSK/RX_FSK.ino
@@ -445,7 +445,7 @@ void addSondeStatus(char *ptr, int i)
strcat(ptr, "
");
sprintf(ptr + strlen(ptr), "| %3.3f MHz, Type: %s |
| ID: %s", s->freq, sondeTypeLongStr[s->type],
s->validID ? s->id : """?>");
- if (s->validID && (TYPE_IS_DFM(s->type) || TYPE_IS_METEO(s->type) || s->type==STYPE_MP3H) ) {
+ if (s->validID && (TYPE_IS_DFM(s->type) || TYPE_IS_METEO(s->type) || s->type == STYPE_MP3H) ) {
sprintf(ptr + strlen(ptr), " (ser: %s)", s->ser);
}
sprintf(ptr + strlen(ptr), " |
| QTH: %.6f,%.6f h=%.0fm |
\n", s->lat, s->lon, s->alt);
@@ -995,9 +995,9 @@ void addSondeStatusKML(char *ptr, int i)
}
sprintf(ptr + strlen(ptr), "%s%.6f,%.6f,%.0f%3.3f MHz, Type: %s, h=%.0fm",
- s->id, s->id,
- s->lon, s->lat, s->alt,
- s->freq, sondeTypeStr[s->type], s->alt);
+ s->id, s->id,
+ s->lon, s->lat, s->alt,
+ s->freq, sondeTypeStr[s->type], s->alt);
}
const char *createKMLDynamic() {
@@ -1050,10 +1050,10 @@ void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventT
if (type == WS_EVT_CONNECT) {
Serial.println("Websocket client connection received");
client->text("Hello from ESP32 Server");
- //globalClient = client;
+ //globalClient = client;
} else if (type == WS_EVT_DISCONNECT) {
Serial.println("Client disconnected");
- globalClient = NULL;
+ globalClient = NULL;
}
}
#endif
@@ -1072,11 +1072,11 @@ void SetupAsyncServer() {
request->send(SPIFFS, "/index.html", String(), false, processor);
});
-/*
- server.on("/spectrum", HTTP_GET, [](AsyncWebServerRequest *request){
- request->send(SPIFFS, "/ws.html", "text/html");
- });
-*/
+ /*
+ server.on("/spectrum", HTTP_GET, [](AsyncWebServerRequest *request){
+ request->send(SPIFFS, "/ws.html", "text/html");
+ });
+ */
server.on("/test.html", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send(SPIFFS, "/test.html", String(), false, processor);
});
@@ -1426,7 +1426,7 @@ void initGPS() {
}
const char *getStateStr(int what) {
- if(what<0 || what>=(sizeof(mainStateStr)/sizeof(const char *)))
+ if (what < 0 || what >= (sizeof(mainStateStr) / sizeof(const char *)))
return "--";
else
return mainStateStr[what];
@@ -1446,7 +1446,7 @@ void sx1278Task(void *parameter) {
while (1) {
if (rxtask.activate >= 128) {
// activating sx1278 background task...
- Serial.printf("RXtask: start DECODER for sonde %d (was %s)\n", rxtask.activate&0x7f, getStateStr(rxtask.mainState));
+ Serial.printf("RXtask: start DECODER for sonde %d (was %s)\n", rxtask.activate & 0x7f, getStateStr(rxtask.mainState));
rxtask.mainState = ST_DECODER;
rxtask.currentSonde = rxtask.activate & 0x7F;
sonde.setup();
@@ -2131,15 +2131,15 @@ void loopDecoder() {
}
}
if (sonde.config.sondehub.active) {
- sondehub_send_data(&shclient, s, &sonde.config.sondehub);
+ sondehub_send_data(&shclient, s, &sonde.config.sondehub);
}
}
- // send to MQTT if enabled
- if (connected && mqttEnabled) {
- Serial.println("Sending sonde info via MQTT");
- mqttclient.publishPacket(s);
- }
+ // send to MQTT if enabled
+ if (connected && mqttEnabled) {
+ Serial.println("Sending sonde info via MQTT");
+ mqttclient.publishPacket(s);
+ }
//}
// always send data, even if not valid....
if (rdzclient.connected()) {
@@ -2268,13 +2268,13 @@ void loopSpectrum() {
scanner.scan();
scanner.plotResult();
-
-/*
- if(globalClient != NULL && globalClient->status() == WS_CONNECTED){
- String randomNumber = String(random(0,20));
- globalClient->text(randomNumber);
- }
-*/
+
+ /*
+ if(globalClient != NULL && globalClient->status() == WS_CONNECTED){
+ String randomNumber = String(random(0,20));
+ globalClient->text(randomNumber);
+ }
+ */
if (sonde.config.spectrum > 0) {
int remaining = sonde.config.spectrum - (millis() - specTimer) / 1000;
@@ -2283,7 +2283,7 @@ void loopSpectrum() {
marker = 1;
}
snprintf(buf, 10, "%d Sec.", remaining);
- disp.rdis->drawString(0, dispys<=1 ? (1+marker) : (dispys+1)*marker, buf);
+ disp.rdis->drawString(0, dispys <= 1 ? (1 + marker) : (dispys + 1)*marker, buf);
if (remaining <= 0) {
setCurrentDisplay(0);
enterMode(ST_DECODER);
@@ -2340,10 +2340,10 @@ void enableNetwork(bool enable) {
mqttclient.init(sonde.config.mqtt.host, sonde.config.mqtt.port, sonde.config.mqtt.id, sonde.config.mqtt.username, sonde.config.mqtt.password, sonde.config.mqtt.prefix);
}
- if (sonde.config.sondehub.active && wifi_state != WIFI_APMODE) {
+ if (sonde.config.sondehub.active && wifi_state != WIFI_APMODE) {
sondehub_station_update(&shclient, &sonde.config.sondehub);
}
-
+
connected = true;
} else {
MDNS.end();
@@ -2908,161 +2908,161 @@ void loop() {
// Sondehub v2 DB related codes
/*
- * Update station data to the sondehub v2 DB
- */
+ Update station data to the sondehub v2 DB
+*/
void sondehub_station_update(WiFiClient *client, struct st_sondehub *conf) {
- char data[300];
-
- Serial.println("sondehub_station_update()");
-
- if (!client->connected()) {
- if (!client->connect(conf->host, 80)) {
- Serial.println("Connection FAILED");
- return;
- }
- }
+ char data[300];
- client->println("PUT /listeners HTTP/1.1");
- client->print("Host: ");
- client->println(conf->host);
- client->println("accept: text/plain");
- client->println("Content-Type: application/json");
- client->print("Content-Length: ");
- sprintf(data,
- "{"
- "\"software_name\": \"%s\","
- "\"software_version\": \"%s\","
- "\"uploader_callsign\": \"%s\","
- "\"uploader_contact_email\": \"%s\","
- "\"uploader_position\": [%s,%s,%s],"
- "\"uploader_antenna\": \"%s\""
- "}",
- version_name, version_id, conf->callsign, conf->email, conf->lat, conf->lon, conf->alt, conf->antenna);
- client->println(strlen(data));
- client->println();
- client->println(data);
- Serial.println(strlen(data));
- Serial.println(data);
- String response = client->readString();
- Serial.println(response);
- client->stop();
+ Serial.println("sondehub_station_update()");
+
+ if (!client->connected()) {
+ if (!client->connect(conf->host, 80)) {
+ Serial.println("Connection FAILED");
+ return;
+ }
+ }
+
+ client->println("PUT /listeners HTTP/1.1");
+ client->print("Host: ");
+ client->println(conf->host);
+ client->println("accept: text/plain");
+ client->println("Content-Type: application/json");
+ client->print("Content-Length: ");
+ sprintf(data,
+ "{"
+ "\"software_name\": \"%s\","
+ "\"software_version\": \"%s\","
+ "\"uploader_callsign\": \"%s\","
+ "\"uploader_contact_email\": \"%s\","
+ "\"uploader_position\": [%s,%s,%s],"
+ "\"uploader_antenna\": \"%s\""
+ "}",
+ version_name, version_id, conf->callsign, conf->email, conf->lat, conf->lon, conf->alt, conf->antenna);
+ client->println(strlen(data));
+ client->println();
+ client->println(data);
+ Serial.println(strlen(data));
+ Serial.println(data);
+ String response = client->readString();
+ Serial.println(response);
+ client->stop();
}
/*
- * Update sonde data to the sondehub v2 DB
- */
+ Update sonde data to the sondehub v2 DB
+*/
void sondehub_send_data(WiFiClient *client, SondeInfo *s, struct st_sondehub *conf) {
- Serial.println("sondehub_send_data()");
+ Serial.println("sondehub_send_data()");
#define MSG_SIZE 550
- char rs_msg[MSG_SIZE];
- char *w;
- struct tm ts;
- time_t t = s->time;
-
- if (String(s->ser) == "") return; // Don't send anything without serial number
+ char rs_msg[MSG_SIZE];
+ char *w;
+ struct tm ts;
+ time_t t = s->time;
+
+ if (String(s->ser) == "") 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
-
+
if (String(sondeTypeStr[s->type]) == "RS41" || String(sondeTypeStr[s->type]) == "RS92" || String(sondeTypeStr[s->type]) == "M10" || String(sondeTypeStr[s->type]) == "M20") {
t += 18; // convert back to GPS time from UTC time +18s
}
- ts = *gmtime(&t);
+ ts = *gmtime(&t);
memset(rs_msg, 0, MSG_SIZE);
- w=rs_msg;
+ w = rs_msg;
if (((int)s->temperature != 0) && ((int)s->relativeHumidity != 0)) {
sprintf(w,
- "[ {"
- "\"software_name\": \"%s\","
- "\"software_version\": \"%s\","
- "\"uploader_callsign\": \"%s\","
- "\"time_received\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\","
- "\"manufacturer\": \"%s\","
- "\"type\": \"%s\","
- "\"serial\": \"%s\","
- "\"frame\": %d,"
- "\"datetime\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\","
- "\"lat\": %.6f,"
- "\"lon\": %.6f,"
- "\"alt\": %.2f,"
- "\"frequency\": %.3f,"
- "\"vel_h\": %.1f,"
- "\"vel_v\": %.1f,"
- "\"heading\": %.1f,"
- "\"sats\": %d,"
- "\"rssi\": %.1f,"
- "\"temp\": %.2f,"
- "\"humidity\": %.2f,"
- "\"uploader_position\": [ %s, %s, %s ],"
- "\"uploader_antenna\": \"%s\""
- "}]",
- version_name, version_id, conf->callsign,
- ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec + s->sec,
- manufacturer_string[s->type], sondeTypeStr[s->type], s->ser, s->frame,
- ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec + s->sec,
- (float)s->lat, (float)s->lon, (float)s->alt, (float)s->freq, (float)s->hs, (float)s->vs,
- (float)s->dir, (int)s->sats, -((float)s->rssi/2), float(s->temperature), float(s->relativeHumidity), conf->lat, conf->lon, conf->alt, conf->antenna
- );
- }
+ "[ {"
+ "\"software_name\": \"%s\","
+ "\"software_version\": \"%s\","
+ "\"uploader_callsign\": \"%s\","
+ "\"time_received\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\","
+ "\"manufacturer\": \"%s\","
+ "\"type\": \"%s\","
+ "\"serial\": \"%s\","
+ "\"frame\": %d,"
+ "\"datetime\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\","
+ "\"lat\": %.6f,"
+ "\"lon\": %.6f,"
+ "\"alt\": %.2f,"
+ "\"frequency\": %.3f,"
+ "\"vel_h\": %.1f,"
+ "\"vel_v\": %.1f,"
+ "\"heading\": %.1f,"
+ "\"sats\": %d,"
+ "\"rssi\": %.1f,"
+ "\"temp\": %.2f,"
+ "\"humidity\": %.2f,"
+ "\"uploader_position\": [ %s, %s, %s ],"
+ "\"uploader_antenna\": \"%s\""
+ "}]",
+ version_name, version_id, conf->callsign,
+ ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec + s->sec,
+ manufacturer_string[s->type], sondeTypeStr[s->type], s->ser, s->frame,
+ ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec + s->sec,
+ (float)s->lat, (float)s->lon, (float)s->alt, (float)s->freq, (float)s->hs, (float)s->vs,
+ (float)s->dir, (int)s->sats, -((float)s->rssi / 2), float(s->temperature), float(s->relativeHumidity), conf->lat, conf->lon, conf->alt, conf->antenna
+ );
+ }
else {
sprintf(w,
- "[ {"
- "\"software_name\": \"%s\","
- "\"software_version\": \"%s\","
- "\"uploader_callsign\": \"%s\","
- "\"time_received\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\","
- "\"manufacturer\": \"%s\","
- "\"type\": \"%s\","
- "\"serial\": \"%s\","
- "\"frame\": %d,"
- "\"datetime\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\","
- "\"lat\": %.6f,"
- "\"lon\": %.6f,"
- "\"alt\": %.2f,"
- "\"frequency\": %.3f,"
- "\"vel_h\": %.1f,"
- "\"vel_v\": %.1f,"
- "\"heading\": %.1f,"
- "\"sats\": %d,"
- "\"rssi\": %.1f,"
- "\"uploader_position\": [ %s, %s, %s ],"
- "\"uploader_antenna\": \"%s\""
- "}]",
- version_name, version_id, conf->callsign,
- ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec + s->sec,
- manufacturer_string[s->type], sondeTypeStr[s->type], s->ser, s->frame,
- ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec + s->sec,
- (float)s->lat, (float)s->lon, (float)s->alt, (float)s->freq, (float)s->hs, (float)s->vs,
- (float)s->dir, (int)s->sats, -((float)s->rssi/2), conf->lat, conf->lon, conf->alt, conf->antenna
- );
+ "[ {"
+ "\"software_name\": \"%s\","
+ "\"software_version\": \"%s\","
+ "\"uploader_callsign\": \"%s\","
+ "\"time_received\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\","
+ "\"manufacturer\": \"%s\","
+ "\"type\": \"%s\","
+ "\"serial\": \"%s\","
+ "\"frame\": %d,"
+ "\"datetime\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\","
+ "\"lat\": %.6f,"
+ "\"lon\": %.6f,"
+ "\"alt\": %.2f,"
+ "\"frequency\": %.3f,"
+ "\"vel_h\": %.1f,"
+ "\"vel_v\": %.1f,"
+ "\"heading\": %.1f,"
+ "\"sats\": %d,"
+ "\"rssi\": %.1f,"
+ "\"uploader_position\": [ %s, %s, %s ],"
+ "\"uploader_antenna\": \"%s\""
+ "}]",
+ version_name, version_id, conf->callsign,
+ ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec + s->sec,
+ manufacturer_string[s->type], sondeTypeStr[s->type], s->ser, s->frame,
+ ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec + s->sec,
+ (float)s->lat, (float)s->lon, (float)s->alt, (float)s->freq, (float)s->hs, (float)s->vs,
+ (float)s->dir, (int)s->sats, -((float)s->rssi / 2), conf->lat, conf->lon, conf->alt, conf->antenna
+ );
}
-
- if (!client->connected()) {
- Serial.println("NO CONNECTION");
- if (!client->connect(conf->host, 80)) {
- Serial.println("Connection FAILED");
- return;
- }
- }
- client->println("PUT /sondes/telemetry HTTP/1.1");
- client->print("Host: ");
- client->println(conf->host);
- client->println("accept: text/plain");
- client->println("Content-Type: application/json");
- client->print("Content-Length: ");
- client->println(strlen(w));
- client->println();
- client->println(w);
- Serial.println(w);
- String response = client->readString();
- Serial.println(response);
+ if (!client->connected()) {
+ Serial.println("NO CONNECTION");
+ if (!client->connect(conf->host, 80)) {
+ Serial.println("Connection FAILED");
+ return;
+ }
+ }
+
+ client->println("PUT /sondes/telemetry HTTP/1.1");
+ client->print("Host: ");
+ client->println(conf->host);
+ client->println("accept: text/plain");
+ client->println("Content-Type: application/json");
+ client->print("Content-Length: ");
+ client->println(strlen(w));
+ client->println();
+ client->println(w);
+ Serial.println(w);
+ String response = client->readString();
+ Serial.println(response);
}
// End of sondehub v2 related codes
diff --git a/RX_FSK/data/config.txt b/RX_FSK/data/config.txt
index c50d637..1f2e9c2 100644
--- a/RX_FSK/data/config.txt
+++ b/RX_FSK/data/config.txt
@@ -91,7 +91,7 @@ ephftp=www.ngs.noaa.gov/cors/rinex/
#-------------------------------#
# local use only, do not feed to public services
# data not sanitized / quality checked, outliers not filtered out
-axudp.active=0
+axudp.active=1
axudp.host=192.168.42.20
axudp.port=9002
axudp.symbol=/O
@@ -112,9 +112,9 @@ tcp.idformat=0
#-------------------------------#
# data not sanitized / quality checked, outliers not filtered out
mqtt.active=0
-mqtt.id=BSG_MQTT
+mqtt.id=rdz_sonde_server
mqtt.ip=192.168.1.5
-mqtt.port=1884
+mqtt.port=1883
mqtt.username=
mqtt.password=
mqtt.prefix=rdz_sonde_server/
@@ -124,7 +124,7 @@ mqtt.prefix=rdz_sonde_server/
# Sondehub v2 DB settings
sondehub.active=1
sondehub.host=api.v2.sondehub.org
-sondehub.callsign=CHANGEME_BSG_TTGO
+sondehub.callsign=CHANGEME_RDZTTGO
sondehub.lat=null
sondehub.lon=null
sondehub.alt=null
diff --git a/RX_FSK/data/index.html b/RX_FSK/data/index.html
index 481e7db..dba123c 100644
--- a/RX_FSK/data/index.html
+++ b/RX_FSK/data/index.html
@@ -1,7 +1,7 @@
- BSGSonde Server
+ rdzTTGOSonde Server
@@ -9,12 +9,7 @@