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}}