我想通过websocket通过API从thingsboard CE获得与单个客户相关的所有设备的最新遥测信息。这样,当收到测量数据时,我可以实时更新jquery。
在通过GUI手动为customer->device
添加关系之后,最新的遥测数据现在正在流向Thingsboard中的客户entityType。
但是,返回的数据不包含任何设备属性信息,我可以使用这些信息将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: ");
};
如何使用设备属性丰富遥测时间序列数据?
发布于 2019-06-25 10:41:26
我发现的解决方案是更新GUI中的规则链,以便复制传入设备遥测数据的副本并将其保存到相关的客户实体中。
一步步地:
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
节点拖到画布上Save Related Telemetry
您的根规则链现在应该类似于以下内容:
https://stackoverflow.com/questions/56345204
复制相似问题