Ввод многих полезных нагрузок одновременно (узел-красный)

#node.js #node-red

#node.js #узел-красный

Вопрос:

У меня проблема. Я новичок в node red, я хочу вводить сразу много полезных нагрузок с разными темами. Я хотел сделать это с помощью функции, подобной в первом узле. Эта функция выглядит следующим образом:

 msg.topic="ns=2;s=Target01.Nazwa.Nazwa[0];datatype=String"
msg.payload=global.get("nazwa")
return msg
msg.topic="ns=2;s=Target01.Nazwa.Nazwa[1];datatype=String"
msg.payload=global.get("nazwa2")
return msg
...
msg.topic="ns=2;s=Target01.Nazwa.Nazwa[9];datatype=String"
msg.payload=global.get("nazwa9")
return msg
  

введите описание изображения здесь

Однако это не работает. 2-й узел работает, но в общей сложности у меня было бы более 150 блоков, подключенных к клиентскому блоку OPC UA. Итак, мой вопрос: кто-нибудь знает, есть ли способ вводить несколько полезных нагрузок с разными темами, предпочтительно с помощью функции, вместо того, чтобы делать это один за другим с помощью блоков ввода?

Ответ №1:

В документации объясняется, как отправлять несколько сообщений с узла состояния.

В имеющемся у вас коде, как только он достигает первого return оператора, функциональный узел прекращает дальнейшую обработку, поэтому отправляется только одно сообщение.

Для отправки нескольких сообщений с функционального узла у вас есть два варианта.

  1. возвращает массив объектов сообщения для отправки.
  2. вызывайте node.send(msg); для каждого сообщения, которое вы хотите отправить.

Например:

 return [
 [
   { topic: "ns=2;s=Target01.Nazwa.Nazwa[0];datatype=String", payload: global.get("nazwa")},
   { topic: "ns=2;s=Target01.Nazwa.Nazwa[1];datatype=String", payload: global.get("nazwa2")},
   { topic: "ns=2;s=Target01.Nazwa.Nazwa[9];datatype=String", payload: global.get("nazwa9")}
  ]
]