minix/share/beaglebone/weather/index.html
Thomas Cort 60a61dffae weatherstation: BeagleBone Weather Cape demo app.
The BeagleBone Weather cape enhances the BeagleBone's capabilities
by providing environment sensors (temperature, humidity, pressure,
and ambient light level).

The weatherstation demo is a port of the bonescript weatherstation
to Minix. It provides a nice visual display of the sensor data in
a web browser.

The code is installed to /usr/share/beaglebone/weather on 'earm'
and an embedded web server is started at boot time on port 80
when the cape is attached. Further details are provided in the
README.txt file.

Change-Id: I1596a2b66b213762ace26c0c750c8154c76b5c6e
2013-08-26 21:51:32 +02:00

98 lines
2.4 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Weather Station - Powered by Minix and BeagleBone</title>
<link rel="stylesheet" type="text/css" media="all" href="style.css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="processing.js"></script>
<script type="text/javascript" src="spin.js"></script>
<script type="text/javascript">
// Refresh weather data every 3 seconds.
var weather_fetch_interval = 3 * 1000;
// Location of the weather data.
var weather_json_url = 'weather.json';
// Loading animation while the initial fetch is being performed.
var spinner = new Spinner().spin();
// Callback for fetching weather reports.
function weather_cb_fetch() {
var now;
var url;
// Make the URL of every request unique to help ensure
// that the browser doesn't cache the JSON data.
now = new Date();
url = weather_json_url + '?timestamp=' + now.getTime();
$.getJSON(url, weather_cb_process);
}
// Callback for processing weather reports.
function weather_cb_process(data) {
set_lux(data.illuminance);
set_temp(data.temperature);
set_humidity(data.humidity);
set_pressure(data.pressure/100); // Pa to hPa
// hide the loading message once everything is loaded
$("#loading").fadeOut("slow", function(){
spinner.stop();
});
// weather station is initially hidden
// fade in after first paint.
$("#weatherstation").fadeIn("slow");
// Queue the next server request.
setTimeout(weather_cb_fetch, weather_fetch_interval);
}
function weather_init() {
// Start the loading animation spinning.
$("#loading").append(spinner.el);
// Fetch the initial weather report.
weather_cb_fetch();
}
// Start getting weather reports.
$(weather_init);
</script>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
</head>
<body>
<!--
Page loading animation (spin.js).
Hidden after weather canvases are loaded.
-->
<div id="loading"> </div>
<!--
Thermometer, gauges, and light level dot.
Initially hidden while loading/painting.
-->
<div id="weatherstation">
<canvas id="barometerCanvas"></canvas>
<canvas id="thermometerCanvas"></canvas>
<canvas id="lightCanvas"></canvas>
</div>
<script type="text/javascript" src="weatherstation.js"></script>
</body>
</html>