NodeJS 每小时生成一份IAQ电子邮件报告

vulvrdjw  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(116)

下面你可以看到json,它每小时解析一次,通过动态改变"analogInput": "4": 87.26, "analogInput": "4": 64.26,...等值,所以我需要计算每小时的平均值?如何在java script中做到这一点?
参考this
`

{
  "deduplicationId": "d55b3410-c53e-493d-ba7f-3325aecea47e",
  "time": "2023-10-01T16:02:03.043222823+00:00",
  "deviceInfo": {
    "tenantId": "52f14cd4-c6f1-4fbd-8f87-4025e1d49242",
    "tenantName": "ChirpStack",
    "applicationId": "3abe7286-a458-45a3-b535-f94afe82ff7e",
    "applicationName": "MEL_AQ",
    "deviceProfileId": "375483fd-ed4e-433c-8aec-76b3d244c479",
    "deviceProfileName": "wisenode",
    "deviceName": "MEL_AQ_08",
    "devEui": "ac1f09fffe057ca8",
    "tags": {}
  },
  "devAddr": "018983cc",
  "adr": true,
  "dr": 5,
  "fCnt": 67,
  "fPort": 8,
  "confirmed": false,
  "data": "CAIBbgdoVAZzJ6gCZwDfBAIJ3g==",
  "object": {
    "barometer": {
      "6": 1015.2
    },
    "analogInput": {
      "4": 87.26,
      "8": 3.66
    },
    "temperatureSensor": {
      "2": 22.3
    },
    "humiditySensor": {
      "7": 42
    }
  },
  "rxInfo": [
    {
      "gatewayId": "ac1f09fffe0b97a2",
      "uplinkId": 20255,
      "rssi": -71,
      "snr": 10.5,
      "channel": 7,
      "rfChain": 1,
      "location": {},
      "context": "4hImdA==",
      "metadata": {
        "region_common_name": "AU915",
        "region_config_id": "au915_2"
      },
      "crcStatus": "CRC_OK"
    }
  ],
  "txInfo": {
    "frequency": 919800000,
    "modulation": {
      "lora": {
        "bandwidth": 125000,
        "spreadingFactor": 7,
        "codeRate": "CR_4_5"
      }
    }
  }
}`

我需要计算每小时的平均值。如何在java script中使用node red编程?

izkcnapc

izkcnapc1#

下面是一个示例,说明如何在向Azure IoT Hub设备发送和处理消息时计算和打印每小时的平均值。

// Variables to store temperature and pressure data
var temperatureData = [];
var pressureData = [];

// Send 10 messages with random temperature and pressure values
for (var i = 0; i < 10; i++) {
    var randomTemperature = Math.random() * (100 - 0) + 0;
    var randomPressure = Math.random() * (1000 - 800) + 800;

    // Store temperature and pressure data
    temperatureData.push(randomTemperature);
    pressureData.push(randomPressure);
}

// Calculate and print average temperature and pressure per hour
setTimeout(function () {
    var sumTemperature = temperatureData.reduce((a, b) => a + b, 0);
    var sumPressure = pressureData.reduce((a, b) => a + b, 0);

    var averageTemperature = sumTemperature / temperatureData.length;
    var averagePressure = sumPressure / pressureData.length;

    console.log('Average Temperature per hour: ' + averageTemperature);
    console.log('Average Pressure per hour: ' + averagePressure);
}, 3600000); // 1 hour (in milliseconds)

输出:

  • 有关详细信息,请参阅此Azure IoT Device Node for Node-Red github
  • Azure通信服务电子邮件节点.JS:如何格式化连接字符串。

相关问题