实施实时传感器仪表板

在我目前的项目中,我们试图实现一个显示不同传感器值的仪表板。 以下显示function。 在这里,function是 – humiditytemperature传感器周期性地发送它们的值。 Displaycontroller接收这些值,并将其发送到仪表板进行可视化。

在这里输入图像描述 为了实验目的和探索新技术,我们一直在用以下方式实现上述四个组件:

  • node.js中的TemperatureSensorHumiditySensor使用MQTT发布者发布该值。
  • Node-RED中的DisplayController ,可以通过NODE-RED MQTT用户接收温度和湿度传感器值。
  • HTMLJavascript DashBoard

现在,这是我的问题—我们如何连接DisplayControllerDashBoard组件? 由于Displaycontroller组件在Node-RED中实现, DashBoardHTMLJavaScript实现,问题可能会变得复杂。 可以连接这些组件吗? 如果是,那我们怎么连接它们?

为了进一步清晰起见,我添加了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> 

我从来没有使用过Node-RED,只是简单地查看文档,node-RED提供了一个API,因此你有几个select。 最好的,在我看来是

  • 将基于Node-RED的应用程序包装在节点websocket框架中,像SockJS那样。 然后,从客户端(即仪表板)
  • 直接从你的HTML / Javascript客户端使用node-RED,它支持它

上面的两个选项都假设您已经使用API​​完成了代码中的node-RED,而不是使用visual workbench应用程序。 如果是后者,你需要弄清楚如何迁移它来使用API​​。