MQTT — Как изменить поведение синтаксического анализатора по умолчанию для JSON в CE (SenML)?

#thingsboard #thingsboard-gateway

Вопрос:

У меня есть шлюз от производителя, который доставляет пакеты в следующем формате (SenML):

 message:  [
    {
       "bn": "000D6FFFFE642E09",
       "bt": 1611339204
    },
    {
       "n": "model",
       "vs": "nir21z"
    },
    {
       "n": "Geladeira Temp",
       "u": "Cel",
       "v": 4.0
   }
 

Когда я подключаюсь к платформе Thingsboard, внутренний GW/анализатор разбивается на массив перед вводом в цепочку корневых правил и угрозы в виде отдельных пакетов, но поскольку первая позиция в этом массиве соответствует идентификатору устройства (MAC), мне нужно, чтобы все сообщение было обработано в сценарии. Кто-нибудь знает способ получить информацию до того, как GW проанализирует сообщение?

Ответ №1:

Если вы используете Thingsboard CE, то я думаю, что вам сначала нужно будет переслать данные в службу промежуточного программного обеспечения для реструктуризации полезной нагрузки. Если вы знакомы с AWS Lambda, вы можете сделать это там.

Это был бы просто простой скрипт, который принимает входную полезную нагрузку, реструктурирует, а затем перенаправляет ее в ваше развертывание Thingsboard.

Если вы используете Thingsboard PE, то для этого вы можете использовать интеграцию/преобразователи данных.