Типичный рабочий процесс в цепочке правил ThingsBoard:
1.Сообщение, полученное входным узлом.
2.Метаданные и данные разделяются.
3.Узлы обрабатывают оба по отдельности.
Используется следующая тема: v1/devices/me/telemetry
Формат данных полезных данных выглядит следующим образом: {"ts":1451649600512, "values":{"key1":"value1", "key2":"value2"}}
Как правильно добавить TTL к сообщению, чтобы оно работало в ThingsBoard? Я хочу, чтобы срок действия определенных сообщений истекал через определенное время, в зависимости от содержимого сообщения.
Насколько я понимаю, TTL необходимо добавить в метаданные, иначе это не будет работать.
Ранее для этого я использовал узел JavaScript в цепочке правил. В зависимости от содержания сообщения в скрипт будет добавлена строка:
Код: Выделить всё
if(typeof msg.Alive !== 'undefined'){
metadata.TTL = "45";
}
return {msg: msg, metadata: metadata, msgType: msgType};
Поэтому предыдущее решение невозможно при использовании большого количества устройств. Как правильно выполнить описанное выше в ThingsBoard без использования JS?
Наш новый подход заключался в включении TTL в полезные данные сообщения, например {"ts":1451649600512, "TTL": 15, "values":{"key1":"value1", "key2":"value2"}. Предполагалось, что TTL будет восприниматься как метаданные, как и временная метка. Казалось, это не так. Добавление его к «значениям», то есть к данным, привело к его отображению в данных ThingsBoard, но не решило нашу проблему.
Подробнее здесь: https://stackoverflow.com/questions/771 ... hingsboard
Мобильная версия