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

时间:2017-03-13 15:13:31

标签: javascript node-red

此处有Node-Red问题。

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

输出如下:

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

问题是:

如何截断额外的小数位? 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

我想这是我缺乏经验的地方。

4 个答案:

答案 0 :(得分:1)

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

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

toFixed会将其转换为字符串,因此您需要将其解析为后续的

答案 1 :(得分: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;

答案 2 :(得分:0)

尽管它已经闲置了一段时间,但这里有更多信息供下一个人了解如何在Node Red中解析来自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节点中的Extra Data框,否则只能得到以下信息:

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;

答案 3 :(得分:0)

这似乎是一个旧线程。无论如何,为了让新手受益,对于Node-RED,您可以在量规输出中使用以下格式来设置2个小数位:

{{msg.payload | number:2}}