微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 基于Zetta(Node.js)的数据接收端server中,可接收数量不定传感数据的IoT APP实现

基于Zetta(Node.js)的数据接收端server中,可接收数量不定传感数据的IoT APP实现

时间:10-02 整理:3721RD 点击:

Zetta 是一个基于Node.js的IoT框架。

上一篇 在基于Node.js的IoT框架Zetta中实现可变间隔发送数据 中对Zetta进行了简要的介绍,以及给出了一个发送间隔可变数据的实现。

这一篇将介绍使用zetta作为接收端时如何实现对传感器数量可变的数据进行接收。

一般的Zetta IoT APP可以实现确定类型及个数的传感器数据的接收,并对其进行处理,也可以利用zetta将接收到的数据传送到其他IoT平台进行处理,见 Can Zetta APP collect and process data form changeable number of sensors?

一般的Zetta APP 类似如下代码:


[javascript] view plain copy

  • server.observe([pm25Query_1, pm25Query_2, (pmSensor_1, pmSensor_2) => {
  •    console.log("devices came online");
  •    console.log(pmSensor_1);
  •    console.log(pmSensor_2);
  •    pmSensor_1.streams.result.on("data", (m) => {
  •       var pm25 = m.data.value
  •       console.log("pm25_1: ", pm25);
  •    });
  •    pmSensor_2.streams.result.on("data", (m) => {
  •       var pm25 = m.data.value
  •       console.log("pm25_2: ", pm25);
  •    });
  • });

当需要传感器数量可变化时,可采用如下实现:
  • 根据传感器数量参数得到query序列[javascript] view plain copy
    • this.queries = new Array();
    • for (var i=0; i < this.sensor_number; i++) { //start from 0
    •     const pm25Query = server.from('*').where({type: 'pm_sensor', name: 'pm_sensor_'+i});
    •     this.queries.push(pm25Query);
    • }
  • 使用Javascript的Array.forEach()语法对每一个传感器建立observable对象[javascript] view plain copy
    • this.pmSensors = new Array();
    • for (var i=1; i <= this.sensor_number; i++) {    //start from 1, can be changed later
    •     this.pmSensors.push('pmsensor');
    • }
    • this.pmSensors.forEach(processValue);
    • function processValue(sensor, index, arr) {
    •     console.log(sensor);
    •     console.log(index);
    •     server.observe(this.queries[index], (sensor) => {
    •       ...//calculate the average of all sensor data
    •      });
    • }



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top