Thingsboard — разделение сообщений в цепочке правил

#javascript #thingsboard #thingsboard-gateway

#javascript #thingsboard #thingsboard-шлюз

Вопрос:

Мне нужно иметь «узел сценария» в цепочке правил, чтобы возвращать более одного сообщения. Я работаю над двумя разными проектами, и в обоих проектах мне нужна эта функция. Например, потому что мне нужно вызвать динамический номер запроса API. Используя node-red, я могу получить этот эффект, используя узел «split», но у Thingsboard нет подобного узла.

Я нашел «хитрое решение», которое работает таким образом:

  1. Я создаю массив сообщений в качестве вывода моего «узла сценария»
  2. выходные данные распространяются на набор из N похожих узлов, и каждый узел будет обрабатывать только i-е сообщение из массива

Очевидно, что это не очень хорошее решение для производственной среды, потому что оно генерирует много бесполезных сообщений и потому, что существует предопределенное максимальное количество сообщений (= N), которые могут быть обработаны одновременно

Я использую Thingsboard Community Edition

Любое предложение будет очень оценено 🙂

Комментарии:

1. Другим обходным путем является наличие нескольких узлов скрипта, где каждый отвечает за одно сообщение. Еще одним обходным путем является выполнение запросов непосредственно из scriptnode.

2. Спасибо за ваш ответ. Первое решение очень похоже на мое. Второй вариант является лучшим решением в целом, но неприменим в моем контексте, потому что я должен вызывать RESTful API для каждого сообщения, если я не могу сделать это изнутри узла скрипта. Я думаю, что мне нужно перенаправить свой поток на экземпляр с узлом

Ответ №1:

Выпущена новая версия Thingsboard (v3.2.1), которая включает поддержку

Добавлена возможность возврата массивов в узле сценария преобразования

https://thingsboard.io/docs/reference/releases/#v321-january-26-2021

В моем случае у меня есть агрегированная телеметрия, которую мне нужно разделить и создать несколько записей с разными временными метками. Работает очень хорошо. вам просто нужно вернуть массив из узла сценария преобразования.

Примечание: на экране «функция test transformer» для тестирования скриптов я не могу правильно протестировать и все равно получаю ошибку wrong result type: ARRAY или подобное.