Skip to content

Commit ba74132

Browse files
authored
Merge branch 'projecthorus:main' into main
2 parents b65680b + da483b2 commit ba74132

File tree

5 files changed

+81
-20
lines changed

5 files changed

+81
-20
lines changed

img/sondehub_logo.png

5.03 KB
Loading

index.html

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,32 @@
6161
<h2><i class="icon-question rfloat"></i>Welcome</h2>
6262
<hr/>
6363
<div id="motda">
64-
65-
<h4>How do I receive?</h4>
66-
Set up a receiver station using
67-
<a href="https://github.com/projecthorus/horusdemodlib/wiki/1.1-Horus-GUI-Reception-Guide-(Windows-Linux-OSX)" target="_blank" rel="noopener">Horus-GUI</a> or <a href="https://github.com/projecthorus/horusdemodlib/wiki/1.2--Raspberry-Pi-'Headless'-RX-Guide" target="_blank" rel="noopener">horusdemodlib</a>.
64+
This site displays telemetry from Amateur Radio high-altitude balloon launches, using the
65+
<a href="https://github.com/projecthorus/sondehub-infra/wiki" target="_blank" rel="noopener">SondeHub-Amateur</a> database.
66+
The tracker and database are still under development, so some features may be non-functional.
67+
<br/>
68+
If you're looking for meteorological radiosondes, try the regular
69+
<a href="https://tracker.sondehub.org/" target="_blank" rel="noopener">SondeHub Tracker.</a>
70+
71+
<h4>How do I help to receive?</h4>
72+
Information on receiving common telemetry formats is
73+
<a href="https://github.com/projecthorus/sondehub-amateur-tracker/wiki/Receiving-High-Altitude-Balloon-Telemetry" target="_blank" rel="noopener">available here.</a>
74+
<br/>
75+
76+
<h4>I'm launching a balloon!</h4>
77+
<a href="https://github.com/projecthorus/sondehub-amateur-tracker/wiki/Getting-your-Flight-on-the-Sondehub-Amateur-Tracker" target="_blank" rel="noopener">Click here</a>
78+
for information on how to get your balloon on the map!
6879
<br/>
6980

7081
<h4>Support Us!</h4>
7182
AWS hosting unfortunately does not come cheap.
7283
If you use SondeHub Amateur regularly, please consider <a href="https://www.patreon.com/sondehub" target="_blank" rel="noopener">supporting us on Patreon</a>, or with a <a href="https://sondehub.org/go/donate" target="_blank" rel="noopener">donation on Paypal</a>.
84+
<br />
85+
A huge thanks to
86+
<a href="https://www.ampr.org/" target="_blank" rel="noopener">Amateur Radio Digital Communications</a> for supporting us with a grant!
7387

74-
<h4>Info</h4>
75-
This site uses data from the <a href="https://github.com/projecthorus/sondehub-infra/wiki" target="_blank" rel="noopener">SondeHub Amateur</a> database, which will remove the
76-
load from the Habitat tracking database.
77-
7888
<h4>Predictions</h4>
79-
You can predict the flight paths of future sondes using the <a href="https://predict.sondehub.org/" target="_blank" rel="noopener">SondeHub Predictor</a>.
89+
You can predict the flight paths of future launches using the <a href="https://predict.sondehub.org/" target="_blank" rel="noopener">SondeHub Predictor</a>.
8090

8191
</div>
8292
<h2>Contribute</h2>
@@ -224,7 +234,7 @@ <h2><i class="icon-car rfloat"></i>Chase Mode</h2>
224234
<span class="r"><input type="text" id="cc_callsign" style="width: 140px;"/></span>
225235
</div>
226236
<div class="row">
227-
<span><b>Notice: If you enable this, your location will be uploaded to SondeHub; making it publicly visible on the map.</b></span>
237+
<span><b>Notice: If you enable this, your location will be uploaded to SondeHub-Amateur, making it publicly visible on the map.</b></span>
228238
</div>
229239
<hr>
230240
<div class="row">

js/chasecar.lib.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99

1010
ChaseCar = {
11-
db_uri: "https://api.v2.sondehub.org/listeners", // Sondehub API
11+
db_uri: "https://api.v2.sondehub.org/amateur/listeners", // Sondehub API
1212
};
1313

1414
// Updated SondeHub position upload function.
@@ -22,7 +22,7 @@ ChaseCar.updatePosition = function(callsign, position) {
2222
_position_alt = ((!!position.coords.altitude) ? position.coords.altitude : 0);
2323

2424
var _doc = {
25-
"software_name": "SondeHub Amateur",
25+
"software_name": "SondeHub-Amateur",
2626
"software_version": "{VER}",
2727
"uploader_callsign": callsign,
2828
"uploader_position": [position.coords.latitude, position.coords.longitude, _position_alt],

js/format.js

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ function formatData(data) {
3131
data[key][i].uploaders[0].rssi = + data[key][i].rssi.toFixed(1);
3232
}
3333
if (data[key][i].frequency) {
34-
data[key][i].uploaders[0].frequency = + data[key][i].frequency.toFixed(3);
34+
data[key][i].uploaders[0].frequency = + data[key][i].frequency.toFixed(4);
3535
}
3636
}
3737
for (let entry in data[key][i].uploaders) {
@@ -52,7 +52,7 @@ function formatData(data) {
5252
dataTempEntry.callsign[uploader_callsign].rssi = + data[key][i].uploaders[entry].rssi.toFixed(1);
5353
}
5454
if (data[key][i].uploaders[entry].frequency) {
55-
dataTempEntry.callsign[uploader_callsign].frequency = + data[key][i].uploaders[entry].frequency.toFixed(3);
55+
dataTempEntry.callsign[uploader_callsign].frequency = + data[key][i].uploaders[entry].frequency.toFixed(4);
5656
}
5757

5858
}
@@ -76,11 +76,18 @@ function formatData(data) {
7676
if (!dataTempEntry.hasOwnProperty("data")) {
7777
dataTempEntry.data = {};
7878
}
79+
80+
// Cleanup of some fields, limiting precision, formatting. etc.
81+
// Currently this section copies over specific fields. It should be changed
82+
// to initially copy over all fields that have not already been included,
83+
// Then apply formatting to some 'known' fields.
84+
85+
// Fairly common fields
7986
if (data[key][i].hasOwnProperty("batt")) {
8087
dataTempEntry.data.batt = +data[key][i].batt.toFixed(2);
8188
}
8289
if (data[key][i].hasOwnProperty("frequency")) {
83-
dataTempEntry.data.frequency = +data[key][i].frequency.toFixed(3);
90+
dataTempEntry.data.frequency = +data[key][i].frequency.toFixed(4);
8491
}
8592
if (data[key][i].hasOwnProperty("tx_frequency")) {
8693
dataTempEntry.data.frequency_tx = +data[key][i].tx_frequency.toFixed(3);
@@ -95,14 +102,43 @@ function formatData(data) {
95102
dataTempEntry.data.sats = data[key][i].sats;
96103
}
97104
if (data[key][i].hasOwnProperty("temp")) {
98-
dataTempEntry.data.temperature_external = data[key][i].temp;
105+
dataTempEntry.data.temp = data[key][i].temp;
99106
}
100107
if (data[key][i].hasOwnProperty("comment")) {
101108
dataTempEntry.data.comment = data[key][i].comment;
102109
}
110+
111+
// Horus Binary V2 Fields
112+
if (data[key][i].hasOwnProperty("ascent_rate")) {
113+
// Limit to 1 decimal place.
114+
dataTempEntry.data.ascent_rate = +data[key][i].ascent_rate.toFixed(1);
115+
}
116+
if (data[key][i].hasOwnProperty("ext_pressure")) {
117+
dataTempEntry.data.ext_pressure = data[key][i].ext_pressure;
118+
}
119+
if (data[key][i].hasOwnProperty("ext_humidity")) {
120+
dataTempEntry.data.ext_humidity = data[key][i].ext_humidity;
121+
}
122+
if (data[key][i].hasOwnProperty("ext_temperature")) {
123+
dataTempEntry.data.ext_temperature = data[key][i].ext_temperature;
124+
}
125+
126+
// Horus LoRa Fields
127+
if (data[key][i].hasOwnProperty("pyro_voltage")) {
128+
dataTempEntry.data.pyro_voltage = +data[key][i].pyro_voltage.toFixed(2);
129+
}
130+
if (data[key][i].hasOwnProperty("noise_floor_dbm")) {
131+
dataTempEntry.data.noise_floor_dbm = data[key][i].noise_floor_dbm;
132+
}
133+
if (data[key][i].hasOwnProperty("rx_pkt_count")) {
134+
dataTempEntry.data.rx_pkt_count = data[key][i].rx_pkt_count;
135+
}
136+
137+
// Metadata added on by receiver applications.
103138
if (data[key][i].hasOwnProperty("modulation")) {
104139
dataTempEntry.data.modulation = data[key][i].modulation;
105140
}
141+
106142
dataTemp.push(dataTempEntry);
107143
}
108144
}

js/tracker.js

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ var modeList = [
8181
"1d",
8282
"3d"
8383
];
84-
var modeDefault = "1d";
85-
var modeDefaultMobile = "1d";
84+
var modeDefault = "12h";
85+
var modeDefaultMobile = "12h";
8686

8787
// order of map elements
8888
var Z_RANGE = 1;
@@ -96,7 +96,9 @@ var Z_PAYLOAD = 1000002;
9696
var globalKeys = {
9797
"ascentrate": "Ascent Rate",
9898
"battery_percent": "Battery",
99+
"temp": "Temperature",
99100
"temperature_external": "Temperature, External",
101+
"ext_temperature": "Temperature, External",
100102
"pressure_internal": "Pressure, Internal",
101103
"voltage_solar_1": "Voltage, Solar 1",
102104
"voltage_solar_2": "Voltage, Solar 2",
@@ -116,24 +118,33 @@ var globalKeys = {
116118
"batt": "Battery Voltage",
117119
"sats": "GNSS SVs Used",
118120
"humidity": "Relative Humidity",
121+
"ext_humidity": "Relative Humidity, External",
122+
"ext_pressure": "Pressure, External",
119123
"subtype": "Sonde Sub-type",
120124
"frequency": "Frequency",
121125
"frequency_tx": "TX Frequency",
122126
"manufacturer": "Manufacturer",
123127
"type": "Sonde Type",
124-
"burst_timer": "Burst Timer"
128+
"burst_timer": "Burst Timer",
129+
"ascent_rate": "Ascent Rate",
130+
"pyro_voltage": "Cutdown Voltage",
131+
"noise_floor_dbm": "Radio Noise Floor",
125132
};
126133

127134
var globalSuffixes = {
128135
"current": " A",
129136
"battery": " V",
130137
"batt": " V",
138+
"ascent_rate": " m/s",
131139
"solar_panel": " V",
140+
"temp": "&deg;C",
132141
"temperature": "&deg;C",
133142
"temperature_internal": "&deg;C",
134143
"temperature_external": "&deg;C",
144+
"ext_temperature": "&deg;C",
135145
"temperature_radio": "&deg;C",
136146
"pressure": " hPa",
147+
"ext_pressure": " hPa",
137148
"voltage_solar_1": " V",
138149
"voltage_solar_2": " V",
139150
"battery_percent": "%",
@@ -145,8 +156,10 @@ var globalSuffixes = {
145156
"iss_elevation": "&deg;",
146157
"light_intensity": " lx",
147158
"humidity": " %",
159+
"ext_humidity": " %",
148160
"frequency": " MHz",
149161
"frequency_tx": " MHz",
162+
"noise_floor_dbm": " dBm",
150163
"spam": ""
151164
};
152165

@@ -833,7 +846,9 @@ function habitat_data(jsondata, alternative) {
833846
var keys = globalKeys;
834847

835848
var tooltips = {
836-
"burst_timer": "If active, this indicates the time (HH:MM:SS) until the radiosonde will automatically power-off."
849+
"burst_timer": "If active, this indicates the time (HH:MM:SS) until the radiosonde will automatically power-off.",
850+
"frequency": "Estimated frequency of the transmitter, may be impacted by receiver frequency inaccuracies.",
851+
"ascent_rate": "Instantaneous ascent rate, provided by the payload."
837852
}
838853

839854
var hide_keys = {

0 commit comments

Comments
 (0)