Node-Red: анализ данных JSON и преобразование их в двоичный.

Сразу же, я полный новичок, поэтому любая помощь будет принята с благодарностью.

Вот разбивка моей проблемы, вот узлы, как показано на моем скриншоте:

INJECT- Не требует пояснений

NAME- return {payload: "= 00ECC90AG001XQ01"};

Точка получения HTTP-запроса - msg.url = "http://192.168.63/get_points/ "+ msg.payload msg.method =" ПОЛУЧИТЬ "; return msg;

HTTP-запрос- Установите значение GET.

JSONpath- $ .points [0] .st Это настройка для анализа JSON, расположенного по адресу http://192.168.63/get_points/=00ECC90AG001XQ01.

На выходе я получаю 458886.

Я хочу преобразовать это число в двоичное. Затем я хотел бы разобрать цифру -7 из этого двоичного файла.

Я пробовал использовать бинарный узел (тот, который отключен на скриншоте), который предназначен для преобразования входных данных в бинарный. Мне не удалось выполнить требование «Шаблон».  Layout


person Mike L    schedule 13.01.2017    source источник


Ответы (1)


Двоичный узел, вероятно, не тот узел, который вы ищете, он больше предназначен для построения / анализа сложных двоичных структур.

Более простым способом сделать это будет узел функции с чем-то вроде следующего:

var binary = msg.payload.toString(2);
// 6 because it's zero based count
var bit7 = binary.charAt(6);
msg.payload = bit7;
return msg;

Это найдет 7-й символ слева

person hardillb    schedule 13.01.2017
comment
Спасибо за ответ! Еще один вопрос: сначала мне нужно преобразовать 458886 в двоичный (0b1110000000010000110). Любые идеи? - person Mike L; 13.01.2017
comment
нет, первая строка функции преобразует число в двоичное. toString(2) преобразует число в строку с основанием 2 (без символа '0b' на лицевой стороне) - person hardillb; 13.01.2017
comment
Вы правы, меня бросает в глаза то, что я продолжаю получать числа из моего исходного 458886, которые выскакивают, после того, как он должен был быть преобразован в двоичный, должен набирать только 1 или 0. Это то, что у меня есть сейчас, и мой результат равен 5 , Где-то по ходу дела я теряю преобразование в двоичный: var binary = msg.payload.toString (2); var alarmBit = binary.charAt (двоичная.длина-5); msg.payload = alarmBit; return msg; Еще один вопрос, если бы вы были так хороши, почему переменная не хранится только в переменной msg, почему она должна быть в msg.payload? Это просто какой-то метод, встроенный в Node-Rd? - person Mike L; 13.01.2017
comment
Функция предполагает, что ввод - это число, а не строковое представление этого числа. - person hardillb; 13.01.2017