192 lines
7.6 KiB
HTML
192 lines
7.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<!--
|
|
Link to included files. These are typically done by fetching from the web.
|
|
Because this needs to run without an internet conection, the files were saved
|
|
locally
|
|
-->
|
|
<script type="text/javascript" src="include/eventemitter2.min.js"></script>
|
|
<script type="text/javascript" src="include/roslib.min.js"></script>
|
|
|
|
<!-- Bootstrap is a beatuful and usefull library of GUIs. Docs can be found here: http://getbootstrap.com/
|
|
Tutorials can be found here: http://www.w3schools.com/bootstrap/default.asp
|
|
-->
|
|
<link rel="stylesheet" href="include/bootstrap.min.css">
|
|
<script src="include/jquery.min.js"></script>
|
|
<script src="include/bootstrap.min.js"></script>
|
|
<script src="include/roslib.js"></script>
|
|
|
|
|
|
<audio id="audio" src="audio/beep-04.mp3" autostart="false" ></audio>
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
var ros = new ROSLIB.Ros();
|
|
|
|
ros.connectionName = 'ws://192.168.1.103:9090';
|
|
// ros.connectionName = 'ws://localhost:9090';
|
|
|
|
|
|
// If there is an error on the backend, an 'error' emit will be emitted.
|
|
ros.on('error', function(error) {
|
|
document.getElementById("ConnectionIPForm").className = "form-group has-warning has-feedback";
|
|
document.getElementById("ConnectionIPInput").value = ros.connectionName;
|
|
document.getElementById("ConnectionIPLabel").innerHTML = 'No connection';
|
|
document.getElementById("ConnectionButton").className = "btn btn-warning"
|
|
console.log(error);
|
|
});
|
|
|
|
// Find out exactly when we made a connection.
|
|
ros.on('connection', function() {
|
|
console.log('Connection made!');
|
|
document.getElementById("ConnectionIPForm").className = "form-group has-success has-feedback";
|
|
document.getElementById("ConnectionIPInput").value = ros.connectionName;
|
|
document.getElementById("ConnectionIPLabel").innerHTML = 'Connection made at:';
|
|
document.getElementById("ConnectionButton").className = "btn btn-success"
|
|
});
|
|
|
|
ros.on('close', function() {
|
|
console.log('Connection closed.');
|
|
});
|
|
// Create a connection to the rosbridge WebSocket server.
|
|
ros.connect(ros.connectionName);
|
|
|
|
|
|
// attept to connect to the ros master from the IP given orgrab it from the form
|
|
ros.attemptConnection = function(ipAddress)
|
|
{
|
|
if( typeof ipAddress !== "undefined")
|
|
{
|
|
ros.connectionName = ipAddress;
|
|
}
|
|
else
|
|
{
|
|
ros.connectionName = document.getElementById("ConnectionIPInput").value
|
|
}
|
|
console.log('Connection = ' + ros.connectionName);
|
|
ros.connect(ros.connectionName);
|
|
}
|
|
|
|
|
|
// LISTENER ///
|
|
var voltageListener = new ROSLIB.Topic({
|
|
ros : ros,
|
|
name : '/asctec/LL_STATUS',
|
|
messageType : '/asctec_msgs/LLStatus'
|
|
});
|
|
|
|
voltageListener.subscribe(function(message) {
|
|
updateVoltage(message.battery_voltage_1/1000);
|
|
updateUpTime(message.up_time)
|
|
});
|
|
|
|
function updateVoltage(voltage)
|
|
{
|
|
|
|
var voltage_min = 9.5;
|
|
var voltage_max = 12.5;
|
|
var voltage_range = voltage_max - voltage_min;
|
|
|
|
var voltage_percentage = (voltage - voltage_min) / voltage_range * 100;
|
|
|
|
var voltage_string = "";
|
|
voltage_string = voltage_string.concat(voltage_percentage);
|
|
voltage_string = voltage_string.substring(0,4);
|
|
voltage_string = voltage_string.concat('%');
|
|
|
|
document.getElementById("VoltageDisplay").style.width = voltage_string;
|
|
document.getElementById("VoltageDisplay").innerHTML = voltage_string;
|
|
|
|
if (voltage_percentage < 50 && voltage_percentage > 25 ) {
|
|
document.getElementById("VoltageDisplay").className = "progress-bar progress-bar-warning"
|
|
}
|
|
else if ( voltage_percentage <= 25)
|
|
{
|
|
document.getElementById("VoltageDisplay").className = "progress-bar progress-bar-danger"
|
|
var sound = document.getElementById("audio");
|
|
sound.play()
|
|
console.log("Pay Sound")
|
|
}
|
|
else
|
|
{
|
|
document.getElementById("VoltageDisplay").className = "progress-bar progress-bar-success"
|
|
}
|
|
};
|
|
|
|
function updateUpTime(time)
|
|
{
|
|
document.getElementById("UpTime").innerHTML = time
|
|
};
|
|
|
|
|
|
function validateForm()
|
|
{
|
|
ros.attemptConnection();
|
|
return false;
|
|
};
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="jumbotron">
|
|
<h1>Asctec Pelican</h1>
|
|
</div>
|
|
|
|
<!-- <button onclick="testAlert('<strong>Danger!</strong> ')">test</button> -->
|
|
|
|
<div class="panel panel-default">
|
|
<div class="panel-body">
|
|
<form class="form-inline" role="form" onsubmit="return validateForm()">
|
|
<div id="ConnectionIPForm" class="form-group has-warning" align="center">
|
|
<label id="ConnectionIPLabel" class="col-sm-3 control-label" for="inputWarning">Connection warning</label>
|
|
<div class="col-sm-6">
|
|
<input type="text" class="form-control" id="ConnectionIPInput" value="No IP Address yet"/>
|
|
<script type="text/javascript">
|
|
//document.getElementById("ConnectionIPInput").value = ros.connectionName;
|
|
</script>
|
|
</div>
|
|
<div class="col-sm-1">
|
|
<button id="ConnectionButton" type="button" class="btn btn-warning" onclick="ros.attemptConnection()">Connect</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
Pelican Status
|
|
</div>
|
|
<div class="panel-body">
|
|
|
|
<div class="row">
|
|
<label class="col-sm-2"> Battery Voltage: </label>
|
|
<div class="progress">
|
|
<div id="VoltageDisplay" class="progress-bar progress-bar-striped active" role="progressbar"
|
|
aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width:100%" >
|
|
No data recieved yet.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<label class="col-sm-2"> Up Time (s): </label>
|
|
<div class="col-sm-1" id="UpTime">
|
|
N/A
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|