【发布时间】:2015-12-26 12:48:51
【问题描述】:
在我当前的项目中,我们正在尝试实现一个显示不同传感器值的仪表板。下面显示功能。这里的功能是——humidity 和temperature 传感器定期发送它们的值。 Displaycontroller 接收这些值并将其发送到仪表板进行可视化。
出于实验目的和探索新技术,我们一直在使用以下方式实现上述四个组件:
-
TemperatureSensor和HumiditySensor中的node.js使用 MQTT 发布者发布值。 -
DisplayControllerinNode-RED可以通过NODE-RED中的MQTT 订阅者接收温度和湿度传感器值。 -
DashBoard在HTML和Javascript中
现在,这是我的问题 --- 我们如何连接 DisplayController 和 DashBoard 组件?问题可能很复杂,因为Displaycontroller 组件在Node-RED 中实现,而DashBoard 在HTML 和JavaScript 中实现。是否可以连接这些组件?如果是,那么我们如何连接它们?
为了更清楚起见,我添加了Dashboard 组件代码。 dashborad 组件不断轮询DisplayController 组件(用Nodejs 编写,不是在Node-RED 中)
<html>
<head>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript"
src="https://www.google.com/jsapi?autoload={
'modules':[{
'name':'visualization',
'version':'1',
'packages':['corechart']
}]
}">
</script>
</head>
<body>
<div id="chart" style="width: 1500px; height: 700px"></div>
<script>
$(document).ready(function () {
var maxDataPoints = 10;
var chart = new google.visualization.LineChart($('#chart')[0]);
var data = google.visualization.arrayToDataTable([
['Time', 'Temperature','Humidity'],
[getTime(), 0,0]
]);
var options = {
title: 'Temperature',
hAxis: {title: 'Time', titleTextStyle: {color: '#333'}}, //Added hAxis and vAxis label
vAxis: {title: 'TempValue', minValue: 0, titleTextStyle: {color: '#333'}},
curveType: 'function',
animation: {
duration: 1000,
easing: 'in'
},
legend: {position: 'bottom'}
};
function addDataPoint(dataPoint) {
if (data.getNumberOfRows() > maxDataPoints) {
data.removeRow(0);
}
data.addRow([getTime(), dataPoint.value,dataPoint.value1]);
chart.draw(data, options);
}
function getTime() {
var d = new Date();
return d.toLocaleTimeString();
}
function doPoll() {
$.getJSON('http://localhost:8686/temperatureData',
function (result) {
addDataPoint(result);
setTimeout(doPoll,5000);
});
}
doPoll();
});
</script>
</body>
</html>
【问题讨论】:
-
这个问题现在已经解决了。我使用
dweet.io' for publishing data andFreeboard' 进行可视化。
标签: javascript node.js iot node-red