Flutter物联网平台交互插件thingsboard_pe_client的使用
Flutter物联网平台交互插件thingsboard_pe_client的使用
ThingsBoard PE API客户端库简介
ThingsBoard PE API客户端库是为Dart开发者提供的模型对象和服务,用于通过RESTful API和WebSocket协议与ThingsBoard PE平台进行通信。当前客户端版本兼容ThingsBoard PE从3.6.3PE开始。
使用示例
下面是一个简单的的使用示例:
import 'package:thingsboard_pe_client/thingsboard_client.dart';
main() async {
try {
var tbClient = ThingsboardClient('https://thingsboard.cloud');
await tbClient.login(LoginRequest('tenant@thingsboard.org', 'tenant'));
print('isAuthenticated=${tbClient.isAuthenticated()}');
print('authUser: ${tbClient.getAuthUser()}');
var currentUserDetails = await tbClient.getUserService().getUser();
print('currentUserDetails: $currentUserDetails');
await tbClient.logout();
} catch (e, s) {
print('Error: $e');
print('Stack: $s');
}
}
特性和bug
请在issue tracker中提交功能请求和bug报告。
示例代码
下面是一个完整的Flutter项目示例,展示了如何使用thingsboard_pe_client
插件:
import 'package:thingsboard_pe_client/thingsboard_client.dart';
const thingsBoardApiEndpoint = 'http://localhost:8080';
void main() async {
try {
var tbClient = ThingsboardClient(thingsBoardApiEndpoint);
await tbClient.login(LoginRequest('tenant@thingsboard.org', 'tenant'));
print('isAuthenticated=${tbClient.isAuthenticated()}');
print('authUser: ${tbClient.getAuthUser()}');
var currentUserDetails = await tbClient.getUserService().getUser();
print('currentUserDetails: $currentUserDetails');
await tbClient.logout();
} catch (e, s) {
print('Error: $e');
print('Stack: $s');
}
}
更多关于Flutter物联网平台交互插件thingsboard_pe_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter物联网平台交互插件thingsboard_pe_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter应用中使用thingsboard_pe_client
插件与ThingsBoard物联网平台进行交互的代码案例。请注意,这个示例假设你已经有一个ThingsBoard实例在运行,并且已经创建了一个设备以及相应的API密钥。
首先,确保你已经在pubspec.yaml
文件中添加了thingsboard_pe_client
依赖:
dependencies:
flutter:
sdk: flutter
thingsboard_pe_client: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来获取依赖。
接下来,是一个简单的Flutter应用示例,展示如何使用thingsboard_pe_client
插件与ThingsBoard进行交互:
import 'package:flutter/material.dart';
import 'package:thingsboard_pe_client/thingsboard_pe_client.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
ThingsBoardClient? _thingsBoardClient;
String _status = "未连接";
@override
void initState() {
super.initState();
// 替换为你的ThingsBoard服务器URL和API密钥
final String tbUrl = "https://your-thingsboard-server.com";
final String accessToken = "your-device-access-token";
_thingsBoardClient = ThingsBoardClient(tbUrl, accessToken);
// 尝试连接到ThingsBoard服务器
_connectToThingsBoard();
}
Future<void> _connectToThingsBoard() async {
try {
await _thingsBoardClient!.connect();
setState(() {
_status = "已连接";
});
// 可以在这里添加更多逻辑,例如订阅设备数据等
} catch (e) {
setState(() {
_status = "连接失败: ${e.message}";
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('ThingsBoard Flutter 示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'连接状态: $_status',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
if (_thingsBoardClient!.isConnected) {
// 发送数据到ThingsBoard
final telemetry = Telemetry(
keys: ['temperature', 'humidity'],
values: [22.5, 60.0],
ts: DateTime.now().millisecondsSinceEpoch,
);
try {
await _thingsBoardClient!.sendTelemetry(telemetry);
print("Telemetry sent successfully.");
} catch (e) {
print("Failed to send telemetry: ${e.message}");
}
} else {
print("Not connected to ThingsBoard.");
}
},
child: Text('发送Telemetry数据'),
),
],
),
),
),
);
}
@override
void dispose() {
_thingsBoardClient?.disconnect();
super.dispose();
}
}
class Telemetry {
List<String> keys;
List<dynamic> values;
int ts;
Telemetry({required this.keys, required this.values, required this.ts});
}
注意事项:
- ThingsBoard服务器URL和API密钥:确保替换
tbUrl
和accessToken
变量中的值为你自己的ThingsBoard服务器URL和设备API密钥。 - Telemetry数据格式:Telemetry数据是通过
keys
和values
列表发送的,确保你的ThingsBoard服务器期望的数据格式与此匹配。 - 错误处理:在实际应用中,你可能需要更复杂的错误处理逻辑,以处理连接失败、数据发送失败等情况。
- 依赖版本:请确保使用的是
thingsboard_pe_client
的最新版本,并查阅其官方文档以获取最新的API和用法信息。
这个示例展示了如何初始化ThingsBoard客户端、连接到ThingsBoard服务器,并发送Telemetry数据。你可以根据实际需求扩展此示例,例如添加接收设备数据、处理RPC调用等功能。