【问题标题】:Node-Red, Want to truncate results from BME280 Sensor节点红色,想要截断 BME280 传感器的结果
【发布时间】:2017-08-03 16:09:12
【问题描述】:

Node-Red 问题在这里。

我已将 BME280 传感器(温度、压力、湿度)连接到我的 Raspberry Pi 3B 以用于我正在做的一个副项目。我下载了 BME280 节点,它可以毫无问题地连接。然后,我通过一个 JSON 节点管道输出,将其转换为我的仪表板使用的标准(Freeboard 仪表板)。

输出如下:

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

问题是:

如何截断多余的小数位? 14 位小数正在扼杀我的仪表!

我已经尝试在输出和仪表板之间的函数 Node 中使用 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

我想这就是我缺乏经验的真正表现。

【问题讨论】:

  • 向我们展示您尝试过的代码,有人会帮助您修复它。 (编辑问题以包含它,不要尝试添加为评论)

标签: javascript node-red


【解决方案1】:

您可以使用toFixed() 函数。例如,如果您只想要逗号后的 2 位数字,您可以使用 toFixed(2)。例如

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

toFixed 会将其转换为字符串,因此您需要将其解析为浮点数

【讨论】:

    【解决方案2】:

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

    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;
    

    【讨论】:

    • 非常感谢!我试过了,它马上就奏效了。我还要感谢您帮助我了解构建代码所需的方式。
    【解决方案3】:

    虽然这已经闲置了一段时间,但这里有一些关于如何在 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;
    

    【讨论】:

    • 酷,我不知道这些额外的信息是可用的。再次感谢您更新此内容,我现在要更新我的项目!
    • @Meremortal :有关更多详细信息,请访问 Node Red Discourse 网站。我今天刚刚在那里发布了一个工作流程:link
    【解决方案4】:

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

    {{msg.payload | number:2}}
    

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多