когда я рассматриваю объект как число в отладке nodeRED, он показывает в шестнадцатеричном виде - PullRequest
0 голосов
/ 28 апреля 2018

В выводе NodeRED msg я вижу hex, а не число.

У меня есть небольшая функция декодирования в nodeRED. Он считывает полезную нагрузку Cayenne LPP как буферный объект. Источником полезной нагрузки является датчик температуры LoRaWAN.

Гекс полезной нагрузки выглядит следующим образом (разбит на части для разборчивости)

010001 020000 030000 0402015A 0567011F 0665000D 0771FFA0 FFFBFC34

Я пытаюсь прочитать раздел 5 (или объект Cayenne 05) и преобразовать его в температуру.

Я игнорирую 05 - это номер объекта Я игнорирую 67 - это бит, который говорит: «Я значение температуры» Я использую значения 011F - это временная шкала, которую я хочу. Я должен разделить на 10.

Если я преобразую его с помощью calc в dec, я получу 287 - что разделено на 28,7 градуса Это правильно.

Мой декодер выглядит так:

var raw = msg.payload;
buf = Buffer.from (raw, "hex");
msg.environment = new Object();
newtemp=buf.readInt16BE(15);
newtemp = newtemp / 10;
msg.environment.temp=newtemp;
return msg;

Когда я смотрю на результат в окне отладки, я вижу: (уменьшено мною только до температуры)

0x1c.b33333333333

Если я использую этот код вместо

var raw = msg.payload;
buf = Buffer.from (raw, "hex");
newtemp=buf.readInt16BE(15);
newtemp = newtemp / 10;
var environment = {temp:newtemp};
return environment;

Я получаю это в окне отладки:

температура: 28,8

Это как-то связано с наследованием? Как заставить верхний код работать так, чтобы в сообщении были все данные, а не только один объект с температурой?

...