Я хочу получить последнюю телеметрию для всех устройств, связанных с одним клиентом, с CE для вещей через API через веб-сокет. Чтобы я мог обновлять таблицу данных jquery в режиме реального времени при получении измерений.
после добавление связи для customer->device
вручную через графический интерфейс Последние данные телеметрии теперь передаются в тип сущности CUSTOMER в Thingsboard.
Однако; возвращенные данные не содержат никакой информации об атрибутах устройства, которую я могу использовать для сопоставления ответа ws с устройством, сгенерировавшим измерения.
{"subscriptionId":10,"errorCode":0,"errorMsg":null,"data":{"battery_voltage":[[1559065098932,"2.8623046875"]],"pressure":[[1559065098932,"0.05001525953412056"]],"relative_humidity":[[1559065098932,"53.7109375"]],"temperature":[[1559065098932,"83.78323364257812"]]},"latestValues":{"battery_voltage":1559065098932,"temperature":1559065098932,"pressure":1559065098932,"relative_humidity":1559065098932}}
конечная точка в Thingsboard:/api/ws/plugins/telemetry
этот код работает и возвращает последнее обновление телеметрии, но не указывает, какое устройство в возвращаемом результате.
$( document ).ready(function() {
...
webSocket.onopen = function () {
var object = {
tsSubCmds: [{
entityType: "CUSTOMER",
entityId: "00000000-0000-0000-0000-0000...",
scope: "LATEST_TELEMETRY",
cmdId: 10
}
],
historyCmds: [],
attrSubCmds: []
};
var data = JSON.stringify(object);
webSocket.send(data);
console.info("Message is sent: " + data);
console.info("socket open: ");
};
Как я могу обогатить данные временных рядов телеметрии атрибутом устройства?
Решение, которое я нашел, состояло в том, чтобы обновить цепочку правил в графическом интерфейсе, чтобы копия входящих данных телеметрии DEVICE дублировалась и сохранялась в связанном объекте CUSTOMER.
Шаг за шагом:
войдите в Thingsboard как администратор арендатора
нажмите на Root Rule Chain
найти узел Save timeseries
на ветке Post telemetry
перетащите новый узел filter...script
на холст
соедините новый узел скрипта с выходом узла Save timeseries
на ветке Post Telemetry
отредактируйте имя скрипта фильтра: -> Should Duplicate
отредактируйте функцию скрипта фильтра -> return true;
перетащите новый узел Transformation...change originator
на холст
подключить новый узел преобразования к выходу узла фильтра
отредактируйте имя узла трансформации: Reassign to Customer
отредактируйте исходный код: Customer
перетащите новый узел Action...save timeseries
на холст
Соедините новый узел Action с выходом узла Transformation.
отредактируйте имя узла действия:Save Related Telemetry
Теперь ваша корневая цепочка правил должна выглядеть примерно так: