Thingsboard的数据订阅,使用websocket提供支持,用于完成数据可视和实时数据分析。
官方说明:https://thingsboard.io/docs/user-guide/telemetry/#websocket-api
一、Websocket API
ThingsBard Web UI正在积极的使用WebSocket。websocket api提供订阅设备数据变更的功能。
使用以下URL可以通过websocket链接到遥测服务。
ws(s)://host:port/api/ws/plugins/telemetry?token=$JWT_TOKEN
建立链接后,可以发送 [ 订阅命令 ],并接受 [ 订阅数据 ]。
1. 订阅命令
后端对应的java实现:TelemetryPluginCmdsWrapper.java
发送的各种订阅命令为json格式数据,如下:
{
"attrSubCmds": [],
"tsSubCmds": [],
"historyCmds": [],
"entityDataCmds": [],
"entityDataUnsubscribeCmds": [],
"alarmDataCmds": [],
"alarmDataUnsubscribeCmds": []
}
其中tsSubCmds命令构成大致如下:
- cmdId - 在websocket链接内唯一命令id
- entityType - 唯一的实体类型。支持的有:TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM
- entityId - 唯一的实体ID。
- keys - 数据Key,以逗号分割的列表
- timeWindow - 时间窗口,获取订阅的时序数据的间隔(毫秒)。获取[now()-timeWindow, now()]时间内数据
- startTs - 获取历史数据的开始时间(milliseconds)
- endTs - 获取历史数据的结束时间(milliseconds)
- agg - 集合函数,例如:AVG,MAX,MIN
- unsubscribe - 是否取消订阅,默认为false
每种命令的数据格式可能会稍有不同,具体请参看其java实现。
2. 订阅数据
后端对应的java实现:TelemetrySubscriptionUpdate.java
二、html实例
官方提供的sample:
-
token - JWT token,通过http://xxxxxx/api/auth/login登录后取得。
请求数据:{“username”:“tenant@thingsboard.org”, “password”:“tenant”}
返回数据:{“token”:"$YOUR_JWT_TOKEN", “refreshToken”:"$YOUR_JWT_REFRESH_TOKEN"} -
entityId - 具体实体id,这里使用的是设备id
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function WebSocketAPIExample() {
var token = "YOUR_JWT_TOKEN";
var entityId = "YOUR_DEVICE_ID";
var webSocket = new WebSocket("ws://127.0.0.1:8080/api/ws/plugins/telemetry?token=" + token);
if (entityId === "YOUR_DEVICE_ID") {
alert("Invalid device id!");
webSocket.close();
}
if (token === "YOUR_JWT_TOKEN") {
alert("Invalid JWT token!");
webSocket.close();
}
webSocket.onopen = function () {
var object = {
tsSubCmds: [
{
entityType: "DEVICE",
entityId: entityId,
scope: "LATEST_TELEMETRY",
cmdId: 10
}
],
historyCmds: [],
attrSubCmds: []
};
var data = JSON.stringify(object);
webSocket.send(data)

这篇博客介绍了如何使用WebSocket API与Thingsboard平台进行交互,实现实时数据订阅和分析。首先,详细解释了WebSocket API的用法,包括订阅命令的结构和不同类型的订阅数据。接着,提供了HTML和C#的示例代码,展示如何建立连接、发送订阅命令以及接收和处理数据。最后,C#实例展示了用户登录和订阅设备数据的完整流程。
最低0.47元/天 解锁文章
1430

被折叠的 条评论
为什么被折叠?



