Node-Red, хочу обрезать результаты от датчика BME280

Узел - красный вопрос здесь.

Я подключил датчик 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

Я предполагаю, что это - то, где моя неопытность действительно показывает.

3 ответа

Ты можешь использовать toFixed() функция. Например, если вы хотите только 2 цифры после запятой, вы можете использовать toFixed(2), Например

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

toFixed преобразует его в строку, так что вам нужно разобрать его как float потом

Попробуйте что-то вроде этого в функциональном узле:

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;

Хотя некоторое время это было бездействующим, вот еще некоторая информация для следующего человека, чтобы встретить это о том, как анализировать данные с 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;

Кажется, это довольно старая ветка. В любом случае, чтобы это было полезно для новичков, для Node-RED вы можете использовать следующее форматирование на выходе датчика, чтобы установить 2 десятичных разряда:

{{msg.payload | number:2}}
Другие вопросы по тегам