Как получить телеметрию для всех клиентских устройств с Thingsboard через веб-сокет

Я хочу получить самую последнюю телеметрию для всех устройств, связанных с одним клиентом, с thingboard 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

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

$( 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: ");
        };

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


person windsor    schedule 28.05.2019    source источник


Ответы (1)


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

Шаг за шагом:

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

  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

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

person windsor    schedule 25.06.2019