Skip to content

Commit 5a57e1c

Browse files
committed
work with bundled websockets messages
1 parent 474e12f commit 5a57e1c

File tree

1 file changed

+82
-79
lines changed

1 file changed

+82
-79
lines changed

js/tracker.js

Lines changed: 82 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,8 @@ function clean_refresh(text, force, history_step) {
366366
client.subscribe(topic);
367367
clientTopic = topic;
368368
} else {
369-
client.subscribe("sondes/#");
370-
clientTopic = "sondes/#";
369+
client.subscribe("batch");
370+
clientTopic = "batch";
371371
}
372372
} catch (err) {}
373373

@@ -2676,82 +2676,84 @@ function formatData(data, live) {
26762676
response.positions = {};
26772677
var dataTemp = [];
26782678
if (live) {
2679-
var dataTempEntry = {};
2680-
var station = data.uploader_callsign;
2681-
dataTempEntry.callsign = {};
2682-
//check if other stations also received this packet
2683-
if (vehicles.hasOwnProperty(data.serial)) {
2684-
if (data.datetime == vehicles[data.serial].curr_position.gps_time) {
2685-
for (let key in vehicles[data.serial].curr_position.callsign) {
2686-
if (vehicles[data.serial].curr_position.callsign.hasOwnProperty(key)) {
2687-
if (key != station) {
2688-
dataTempEntry.callsign[key] = {};
2689-
if (vehicles[data.serial].curr_position.callsign[key].hasOwnProperty("snr")) {
2690-
dataTempEntry.callsign[key].snr = vehicles[data.serial].curr_position.callsign[key].snr;
2691-
}
2692-
if (vehicles[data.serial].curr_position.callsign[key].hasOwnProperty("rssi")) {
2693-
dataTempEntry.callsign[key].rssi = vehicles[data.serial].curr_position.callsign[key].rssi;
2679+
for (let entry in data) {
2680+
var dataTempEntry = {};
2681+
var station = data[entry].uploader_callsign;
2682+
dataTempEntry.callsign = {};
2683+
//check if other stations also received this packet
2684+
if (vehicles.hasOwnProperty(data[entry].serial)) {
2685+
if (data[entry].datetime == vehicles[data[entry].serial].curr_position.gps_time) {
2686+
for (let key in vehicles[data[entry].serial].curr_position.callsign) {
2687+
if (vehicles[data[entry].serial].curr_position.callsign.hasOwnProperty(key)) {
2688+
if (key != station) {
2689+
dataTempEntry.callsign[key] = {};
2690+
if (vehicles[data[entry].serial].curr_position.callsign[key].hasOwnProperty("snr")) {
2691+
dataTempEntry.callsign[key].snr = vehicles[data[entry].serial].curr_position.callsign[key].snr;
2692+
}
2693+
if (vehicles[data[entry].serial].curr_position.callsign[key].hasOwnProperty("rssi")) {
2694+
dataTempEntry.callsign[key].rssi = vehicles[data[entry].serial].curr_position.callsign[key].rssi;
2695+
}
26942696
}
26952697
}
26962698
}
26972699
}
26982700
}
2699-
}
2700-
dataTempEntry.callsign[station] = {};
2701-
if (data.snr) {
2702-
dataTempEntry.callsign[station].snr = data.snr;
2703-
}
2704-
if (data.rssi) {
2705-
dataTempEntry.callsign[station].rssi = data.rssi;
2706-
}
2707-
dataTempEntry.gps_alt = data.alt;
2708-
dataTempEntry.gps_lat = data.lat;
2709-
dataTempEntry.gps_lon = data.lon;
2710-
if (data.heading) {
2711-
dataTempEntry.gps_heading = data.heading;
2712-
}
2713-
dataTempEntry.gps_time = data.datetime;
2714-
dataTempEntry.server_time = data.datetime;
2715-
dataTempEntry.vehicle = data.serial;
2716-
dataTempEntry.position_id = data.serial + "-" + data.datetime;
2717-
dataTempEntry.data = {};
2718-
if (data.batt) {
2719-
dataTempEntry.data.batt = data.batt;
2720-
}
2721-
if (data.burst_timer) {
2722-
dataTempEntry.data.burst_timer = data.burst_timer;
2723-
}
2724-
if (data.frequency) {
2725-
dataTempEntry.data.frequency = data.frequency;
2726-
}
2727-
if (data.humidity) {
2728-
dataTempEntry.data.humidity = data.humidity;
2729-
}
2730-
if (data.manufacturer) {
2731-
dataTempEntry.data.manufacturer = data.manufacturer;
2732-
}
2733-
if (data.sats) {
2734-
dataTempEntry.data.sats = data.sats;
2735-
}
2736-
if (data.temp) {
2737-
dataTempEntry.data.temperature_external = data.temp;
2738-
}
2739-
if (data.type) {
2740-
dataTempEntry.data.type = data.type;
2741-
dataTempEntry.type = data.type;
2742-
}
2743-
if (data.subtype) {
2744-
dataTempEntry.data.type = data.subtype;
2745-
dataTempEntry.type = data.subtype;
2746-
}
2747-
if (data.pressure) {
2748-
dataTempEntry.data.pressure = data.pressure;
2749-
}
2750-
if (data.xdata) {
2751-
dataTempEntry.data.xdata = data.xdata;
2752-
}
2753-
if (data.serial.toLowerCase() != "xxxxxxxx") {
2754-
dataTemp.push(dataTempEntry);
2701+
dataTempEntry.callsign[station] = {};
2702+
if (data[entry].snr) {
2703+
dataTempEntry.callsign[station].snr = data[entry].snr;
2704+
}
2705+
if (data[entry].rssi) {
2706+
dataTempEntry.callsign[station].rssi = data[entry].rssi;
2707+
}
2708+
dataTempEntry.gps_alt = data[entry].alt;
2709+
dataTempEntry.gps_lat = data[entry].lat;
2710+
dataTempEntry.gps_lon = data[entry].lon;
2711+
if (data[entry].heading) {
2712+
dataTempEntry.gps_heading = data[entry].heading;
2713+
}
2714+
dataTempEntry.gps_time = data[entry].datetime;
2715+
dataTempEntry.server_time = data[entry].datetime;
2716+
dataTempEntry.vehicle = data[entry].serial;
2717+
dataTempEntry.position_id = data[entry].serial + "-" + data[entry].datetime;
2718+
dataTempEntry.data = {};
2719+
if (data[entry].batt) {
2720+
dataTempEntry.data.batt = data[entry].batt;
2721+
}
2722+
if (data[entry].burst_timer) {
2723+
dataTempEntry.data.burst_timer = data[entry].burst_timer;
2724+
}
2725+
if (data[entry].frequency) {
2726+
dataTempEntry.data.frequency = data[entry].frequency;
2727+
}
2728+
if (data[entry].humidity) {
2729+
dataTempEntry.data.humidity = data[entry].humidity;
2730+
}
2731+
if (data[entry].manufacturer) {
2732+
dataTempEntry.data.manufacturer = data[entry].manufacturer;
2733+
}
2734+
if (data[entry].sats) {
2735+
dataTempEntry.data.sats = data[entry].sats;
2736+
}
2737+
if (data[entry].temp) {
2738+
dataTempEntry.data.temperature_external = data[entry].temp;
2739+
}
2740+
if (data[entry].type) {
2741+
dataTempEntry.data.type = data[entry].type;
2742+
dataTempEntry.type = data[entry].type;
2743+
}
2744+
if (data[entry].subtype) {
2745+
dataTempEntry.data.type = data[entry].subtype;
2746+
dataTempEntry.type = data[entry].subtype;
2747+
}
2748+
if (data[entry].pressure) {
2749+
dataTempEntry.data.pressure = data[entry].pressure;
2750+
}
2751+
if (data[entry].xdata) {
2752+
dataTempEntry.data.xdata = data[entry].xdata;
2753+
}
2754+
if (data[entry].serial.toLowerCase() != "xxxxxxxx") {
2755+
dataTemp.push(dataTempEntry);
2756+
}
27552757
}
27562758
} else if (data.length == null) {
27572759
for (let key in data) {
@@ -2814,7 +2816,9 @@ function formatData(data, live) {
28142816
if (data[key][i].xdata) {
28152817
dataTempEntry.data.xdata = data[key][i].xdata;
28162818
}
2817-
dataTemp.push(dataTempEntry);
2819+
if (data[key][i].serial.toLowerCase() != "xxxxxxxx") {
2820+
dataTemp.push(dataTempEntry);
2821+
}
28182822
}
28192823
}
28202824
}
@@ -2978,8 +2982,8 @@ function liveData() {
29782982
client.subscribe(topic);
29792983
clientTopic = topic;
29802984
} else {
2981-
client.subscribe("sondes/#");
2982-
clientTopic = "sondes/#";
2985+
client.subscribe("batch");
2986+
clientTopic = "batch";
29832987
}
29842988
clientConnected = true;
29852989
$("#stText").text("websocket |");
@@ -3013,18 +3017,17 @@ function liveData() {
30133017
setTimeout(function(){
30143018
messageRate -= 1;
30153019
}, (1000 * messageRateAverage));
3016-
var messageCalculatedRate = Math.round(messageRate / messageRateAverage / 10) * 10;
30173020
if ( document.getElementById("stTimer").classList.contains('friendly-dtime') ) {
30183021
document.getElementById("stTimer").classList.remove('friendly-dtime');
30193022
}
3020-
$("#stTimer").text(messageCalculatedRate + " msg/s");
3023+
$("#stTimer").text(Math.round(messageRate/10) + " msg/s");
30213024
$("#updatedText").text(" ");
30223025
var dateNow = new Date().getTime();
30233026
try {
30243027
if (clientActive) {
30253028
var frame = JSON.parse(message.payloadString.toString());
30263029
if (wvar.query == "" || sondePrefix.indexOf(wvar.query) > -1 || wvar.query == frame.serial) {
3027-
if ((dateNow - new Date(frame.time_received).getTime()) < 30000) {
3030+
if ((dateNow - new Date(frame[frame.length - 1].time_received).getTime()) < 30000) {
30283031
var test = formatData(frame, true);
30293032
if (clientActive) {
30303033
live_data_buffer.positions.position.push.apply(live_data_buffer.positions.position,test.positions.position)

0 commit comments

Comments
 (0)