首页 文章

节点红色,想截断BME280传感器的结果

提问于
浏览
0

Node-Red问题在这里 .

我已经将BME280传感器(温度,压力,湿度)连接到我的Raspberry Pi 3B上,用于我在工作中进行的侧面项目 . 我下载了BME280节点,它连接没有问题 . 然后,我通过JSON节点管道输出,将其转换为我的仪表板使用的标准(Freeboard仪表板) .

输出如下:

{温度:20.75,压力:1020.4576451979732,湿度:43.76235104765547}

The question is:

如何截断额外的小数位? 14位小数点击我的仪表!

我已经尝试在输出和仪表板之间的函数节点中使用Math.Trunc但是......好吧,我是一个初学者编码器,所以我真的可以做一点帮助 .

如果之前已经提出这个问题,请道歉 .

编辑:我已经尝试过的代码:

Math.Trunc("Pressure:", toFixed(2)); - not sure about this one
Math.Round("Pressure:" * 100) / 100;

我也试过了 .

parseFloat("Pressure").toFixed(2) - found on this site

我想这是我经验不足的地方 .

3 回答

  • 1

    您可以使用 toFixed() 功能 . 例如,如果您只需要逗号后面的2位数,则可以使用 toFixed(2) . 例如

    var t = 10.122345355
    t.toFixed(2) // "10.12"
    

    toFixed 会将其转换为字符串,因此您需要在之后将其解析为float

  • 0

    在函数节点中尝试这样的事情:

    var pres = msg.payload.pressure;
    var temp = msg.payload.temperature;
    var humidity = msg.payload.humidity;
    
    msg.payload = {
      pressure: pres.toFixed(2),
      temperature : temp.toFixed(2),
      humidity: humidity.toFixed(2)
    };
    
    return msg;
    
  • 0

    虽然这已经闲置了一段时间,但是下面有一些关于如何从节点红色中解析来自BME280的数据的人的更多信息 .
    传递的数据对象如下所示:

    temperature_C: 24.54
    humidity: 48.00285972066518
    pressure_hPa: 1008.9618686461673
    model: "BME280" 
    heatIndex: 25.624424558111855 
    dewPoint_C: 12.810600563041554 
    altitude_M: 35.74196949170104
    temperature_F: 76.172 
    pressure_Hg: 29.79463137918758
    

    请注意,要获取所有这些数据,您需要检查BME280节点中的额外数据框,否则您只能得到:

    temperature_C: 24.45
    humidity: 48.38705227965796
    pressure_hPa: 1009.0013733960975
    model: "BME280"
    

    提取所需的数据并在函数节点中截断它,如下所示:

    var pres = msg.payload.pressure_hPa;
    var temp = msg.payload.temperature_C;
    var humidity = msg.payload.humidity;
    
    msg.payload = {
      pressure: pres.toFixed(2),
      temperature : temp.toFixed(2),
      humidity: humidity.toFixed(2)
    };
    
    return msg;
    

相关问题