此处有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
我想这是我缺乏经验的地方。
答案 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}}