Как получить телеметрию для всех пользовательских устройств из Thingsboard через websocket - PullRequest
2 голосов
/ 28 мая 2019

Я хочу получить новейшую телеметрию для всех устройств, связанных с одним клиентом, с вещевого щита CE через API через веб-сокет.Так что я могу обновлять данные jquery в режиме реального времени при получении измерений.

после добавление вручную отношения для customer->device через графический интерфейс пользователя. Последние данные телеметрии теперь передаются в CUSTOMER entityType.в 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

thisКод работает и возвращает последнее обновление телеметрии, но не указывает, какое устройство в возвращенном результате.

$( 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.log("Message is sent: " + data);
            console.log("socket open: ");
        };

Как обогатить данные временных рядов телеметрии атрибутом устройства?

1 Ответ

0 голосов
/ 25 июня 2019

Решение, которое я нашел, состояло в том, чтобы обновить цепочку правил в графическом интерфейсе, чтобы копия входящих данных телеметрии DEVICE дублировалась и сохранялась в связанный объект CUSTOMER.

Шаг за шагом:

  1. войти в систему как администратор клиента

  2. нажмите на Root Rule Chain

  3. найти узел Save timeseries в ветви Post telemetry

  4. перетащите новый узел filter...script на холст

  5. подключить новый узел сценария к выходу узла Save timeseries в ветви Post Telemetry

  6. изменить имя сценария фильтра: -> Should Duplicate

  7. редактировать функцию сценария фильтра -> return true;

  8. перетащите новый Transformation...change originator узел на холст

  9. подключить новый узел преобразования к выходу узла фильтра

  10. изменить имя узла преобразования: Reassign to Customer

  11. изменить источник источника: Customer

  12. перетащите новый узел Action...save timeseries на холст

  13. Подключить новый узел Action к выходу узла Transformation

  14. изменить имя узла действия: Save Related Telemetry

Ваша цепочка корневых правил должна выглядеть примерно так:

...