bob 2018-07-10 22:40:49 +10:00
commit c264f211c4
4 zmienionych plików z 81 dodań i 83 usunięć

Wyświetl plik

@ -1,6 +1,8 @@
<?php
error_reporting(E_ALL ^ E_NOTICE);
ob_start("ob_gzhandler");
require_once "../Tracker.class.php";
header("Content-Type: application/json");

Wyświetl plik

@ -4,7 +4,7 @@ const COL_ORANGE = "#CC6600";
const COL_RED = "#FF0000";
var xAxis = {
format: range >= 86400 ? 'd. H:m' : 'H:m',
format: range > 86400 ? 'd. H:m' : 'H:m',
slantedTextAngle: 90
}
var area = {'width': '80%', top: 20, bottom: 70};
@ -13,12 +13,12 @@ var lastChartUpdate = 0;
var last = null;
var init = false;
// Chart 1/2
// Chart 1
var batteryChart;
var solarChart;
var dataBattery;
var dataSolar;
var voltageOptions = {
var batteryOptions = {
//explorer: scroll,
height: 250,
series: {
@ -27,8 +27,29 @@ var voltageOptions = {
2: {targetAxisIndex: 1}
},
vAxes: {
0: {title: 'Voltage (mV)'},
1: {title: 'Power (mW)'},
0: {title: 'Voltage (V)', viewWindow: {min: -2000, max: 6000}, ticks: [{v: 2000, f: '2.0'}, {v: 3000, f: '3.0'}, {v: 4000, f: '4.0'}, {v: 5000, f: '5.0'}, {v: 6000, f: '6.0'}]},
1: {title: 'Power (mW)', viewWindow: {min: -500, max: 1500}, ticks: [-500, -250, 0, 250, 500]},
},
legend: {
position: 'top'
},
hAxis: xAxis,
chartArea: area
};
// Chart 2
var solarOptions = {
//explorer: scroll,
height: 250,
series: {
0: {targetAxisIndex: 0},
1: {targetAxisIndex: 0},
2: {targetAxisIndex: 1}
},
vAxes: {
0: {title: 'Voltage (V)', viewWindow: {min: -4000, max: 4000}, ticks: [{v: 0, f: '0.0'}, {v: 1000, f: '1.0'}, {v: 2000, f: '2.0'}, {v: 3000, f: '3.0'}, {v: 4000, f: '4.0'}]},
1: {title: 'Power (mW)', viewWindow: {min: -500, max: 1500}, ticks: [-500, -250, 0, 250, 500]},
},
legend: {
position: 'top'
@ -73,8 +94,8 @@ var gpsOptions = {
2: {targetAxisIndex: 0}
},
vAxes: {
0: {title: 'Sats / pDOP'},
1: {title: 'TTFF'},
0: {title: 'Sats / pDOP', viewWindow: {min: 0, max: 30}, ticks: [0,5,10,15]},
1: {title: 'TTFF', viewWindow: {min: -180, max: 180}, ticks: [0,60,120,180]},
},
legend: {
position: 'top'
@ -226,9 +247,9 @@ function updateData() {
// Chart 4
dataGPS = new google.visualization.DataTable();
dataGPS.addColumn('date', 'Time');
dataGPS.addColumn('number', "Sats");
dataGPS.addColumn('number', "TTFF");
dataGPS.addColumn('number', "pDOP");
dataGPS.addColumn('number', "TTFF");
dataGPS.addColumn('number', "Sats");
gpsChart = new google.visualization.LineChart(document.getElementById('gpsDiv'));
// Chart 5
@ -314,7 +335,7 @@ function updateData() {
case 0: $('#' + key).html(colorize(COL_GREEN, "GPS locked")); break;
case 1: $('#' + key).html(colorize(COL_GREEN, "GPS locked - kept switched on")); break;
case 2: $('#' + key).html(colorize(COL_RED, "GPS loss")); break;
case 3: $('#' + key).html(colorize(COL_ORANGE, "Low Batt before switched on")); break;
case 3: $('#' + key).html(colorize(COL_ORANGE, "Low Batt before switch on")); break;
case 4: $('#' + key).html(colorize(COL_ORANGE, "Low Batt while switched on")); break;
case 5: $('#' + key).html(colorize(COL_GREEN, "Data from memory")); break;
case 6: $('#' + key).html(colorize(COL_RED, "GPS never locked")); break;
@ -444,6 +465,7 @@ function updateData() {
for(i=0; i<=48; i++)
xAxis.ticks.push(new Date(((Math.floor(time/interval)*interval)-i*interval)*1000))
lastValidGPSalt = null;
$.each(tel, function(key, data) {
var time = new Date(data['org'] == 'pos' ? data['rxtime']*1000 : data['gps_time']*1000);
@ -457,25 +479,34 @@ function updateData() {
if(dataAlt) dataAlt.addRow([null,null,null,null,null]);
}
if(dataBattery) dataBattery.addRow([time, data['adc_vbat'], data['pac_vbat'], data['pac_pbat']/10]);
if(dataBattery)
dataBattery.addRow([
time,
data['adc_vbat'],
data['err_pac1720'] ? null : data['pac_vbat'],
data['pac_pbat']/10]
);
if(dataSolar) dataSolar.addRow([time, data['adc_vsol'], data['pac_vsol'], data['pac_psol']/10]);
if(dataTemp) dataTemp.addRow([
time,
data['sen_i1_temp'] && data['sen_i1_temp'] > -10000 && data['sen_i1_temp'] < 10000 ? data['sen_i1_temp']/100 : null,
data['sen_e1_temp'] && data['sen_e1_temp'] > -10000 && data['sen_e1_temp'] < 10000 ? data['sen_e1_temp']/100 : null,
data['sen_e2_temp'] && data['sen_e2_temp'] > -10000 && data['sen_e2_temp'] < 10000 ? data['sen_e2_temp']/100 : null,
data['stm32_temp'] && data['stm32_temp'] > -10000 && data['stm32_temp'] < 10000 ? data['stm32_temp']/100 : null,
data['si4464_temp'] && data['si4464_temp'] > -10000 && data['si4464_temp'] < 10000 ? data['si4464_temp']/100 : null
data['err_bme280_i1'] ? null : data['sen_i1_temp']/100,
data['err_bme280_e1'] ? null : data['sen_e1_temp']/100,
data['err_bme280_e2'] ? null : data['sen_e2_temp']/100,
data['stm32_temp']/100,
data['si4464_temp']/100
]);
if(dataGPS) dataGPS.addRow([time, data['gps_sats'], data['gps_ttff'], data['gps_pdop']/20]);
if(dataGPS) dataGPS.addRow([time, data['gps_pdop']/20, data['gps_ttff'], data['gps_sats']]);
if(dataLight) dataLight.addRow([time, data['light_intensity']]);
if(dataAlt) dataAlt.addRow([
time,
data['gps_alt'],
data['sen_i1_press'] && data['sen_i1_press'] < 1100000 ? data['sen_i1_press']/10 : null,
data['sen_e1_press'] && data['sen_e1_press'] < 1100000 ? data['sen_e1_press']/10 : null,
data['sen_e2_press'] && data['sen_e2_press'] < 1100000 ? data['sen_e2_press']/10 : null
]);
if(dataAlt) {
dataAlt.addRow([
time,
data['gps_lock'] < 2 ? data['gps_alt'] : lastValidGPSalt,
data['err_bme280_i1'] ? null : data['sen_i1_press']/10,
data['err_bme280_e1'] ? null : data['sen_e1_press']/10,
data['err_bme280_e2'] ? null : data['sen_e2_press']/10
]);
if(data['gps_lock'] < 2) lastValidGPSalt = data['gps_alt'];
}
last = time;
});
@ -496,8 +527,8 @@ function updateData() {
}
// Update charts
if(batteryChart) batteryChart.draw(dataBattery, voltageOptions);
if(solarChart) solarChart.draw(dataSolar, voltageOptions);
if(batteryChart) batteryChart.draw(dataBattery, batteryOptions);
if(solarChart) solarChart.draw(dataSolar, solarOptions);
if(tempChart) tempChart.draw(dataTemp, tempOptions);
if(gpsChart) gpsChart.draw(dataGPS, gpsOptions);
if(lightChart) lightChart.draw(dataLight, lightOptions);

Wyświetl plik

@ -80,7 +80,7 @@ telemetry {
.side { order: 1; width: 250px; float: left; }
.telemetry { order: 2; flex: 3 0px; min-width: 456px; max-width: 456px; }
.range { order: 3; text-align: left; }
.chart { order: 4; flex: 3 0px; min-width: 456px; max-width: 456px; }
.chart { order: 4; flex: 3 0px; min-width: 688px; max-width: 688px; }
}
.cross {

Wyświetl plik

@ -33,7 +33,7 @@ include "sidebar.inc.php";
<div class="wrapper">
<telemetry class="inner telemetry">
<div style="width:168px;height:42px;">Callsign<br><span id="call" class="fat"></span></div>
<div style="width:168px;height:42px;">Callsign<br><span id="call" class="fat"><?=$_GET['call']?></span></div>
<div style="width:120px;height:42px;">Reset<br><span id="reset" class="fat"></span></div>
<div style="width:120px;height:42px;">ID<br><span id="id" class="fat"></span></div>
<div style="width:250px;height:42px;">Time (RX)<br><span id="rxtime" class="fat"></span></div>
@ -142,63 +142,28 @@ include "sidebar.inc.php";
</tr>
</table>
</div>
<div style="width:440px;height:110px;" id="image">
<div style="width:150px;height:110px;" id="image"></div>
<div style="width:274px;height:110px;">
<table>
<tr>
<td colspan="2">Subsystems</td>
</tr>
<tr height="5"></tr>
<tr>
<td width="65"><b>I<sup>2</sup>C<sub>I</sub></b></td>
<td><b><span id="err_i2c1"></span></b></td>
</tr>
<tr>
<td><b>I<sup>2</sup>C<sub>E</sub></b></td>
<td><b><span id="err_i2c2"></span></b></td>
</tr>
<tr>
<td><b>OV5640</b></td>
<td><b><span id="err_ov5640"></span></b></td>
</tr>
</table>
</div>
</telemetry>
<!--<telemetry class="inner telemetry" style="width:420px;height:260px;">
<table>
<tr>
<td width="50%">
<table>
<tr>
<th width="75">I2C<sub>INT</sub></th>
<td><b><span id="err_i2c1"></span></b></td>
</tr>
<tr>
<th>I2C<sub>EXT</sub></th>
<td><b><span id="err_i2c2"></span></b></td>
</tr>
<tr height="5"></tr>
<tr>
<th>EVA7M:</th>
<td width="75"><b><span id="err_eva7m"></span></b></td>
</tr>
<tr>
<th>PAC1720:</th>
<td width="230"><b><span id="err_pac1720"></span></b></td>
</tr>
<tr>
<th>OV5640:</th>
<td><b><span id="err_ov5640"></span></b></td>
</tr>
</table>
</td>
<td width="50%">
<table>
<tr>
<th width="75">BME280<sub>I1</sub>:</th>
<td><b><span id="err_bme280_i1"></span></b></td>
</tr>
<tr>
<th>BME280<sub>E1</sub>:</th>
<td><b><span id="err_bme280_e1"></span></b></td>
</tr>
<tr>
<th>BME280<sub>E2</sub>:</th>
<td><b><span id="err_bme280_e2"></span></b></td>
</tr>
</table>
</td>
</tr>
</table>
</telemetry>-->
<div class="range">
&nbsp;Range:
<a href="?call=<?=$_GET['call']?>&range=3600">1h</a>