Flutter物联网平台交互插件thingsboard_client的使用
Flutter物联网平台交互插件thingsboard_client的使用
ThingsBoard API客户端库为Dart开发者提供了一套模型对象和服务,用于通过RESTful APIs和WebSocket协议与ThingsBoard平台进行通信。当前客户端版本兼容从3.6.3版本开始的ThingsBoard。
使用方法
下面是一个简单的使用示例,展示了如何使用thingsboard_client
插件来登录、获取用户信息并登出。
示例代码
import 'package:thingsboard_client/thingsboard_client.dart';
void main() async {
try {
// 初始化ThingsBoard客户端
var tbClient = ThingsboardClient('https://demo.thingsboard.io');
// 登录到ThingsBoard平台
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');
}
}
步骤说明
- 初始化客户端:创建一个
ThingsboardClient
实例,传入你的ThingsBoard服务器地址。 - 登录:使用
login
方法并传入LoginRequest
对象来进行登录操作。 - 检查认证状态:调用
isAuthenticated()
方法来确认用户是否已经成功认证。 - 获取用户信息:使用
getAuthService().getUser()
方法来获取当前登录用户的详细信息。 - 登出:调用
logout()
方法来退出当前会话。
特性和问题报告
如果你有任何特性请求或发现了bug,请在GitHub issue tracker上提交。
完整示例Demo
以下是一个更完整的示例,包括了设备数据的获取和显示:
import 'package:thingsboard_client/thingsboard_client.dart';
import 'dart:convert';
void main() async {
try {
var tbClient = ThingsboardClient('https://demo.thingsboard.io');
await tbClient.login(LoginRequest('tenant@thingsboard.org', 'tenant'));
if (tbClient.isAuthenticated()) {
print('Successfully logged in!');
// 获取设备列表
var deviceService = tbClient.getDeviceService();
var devices = await deviceService.getTenantDevices(pageSize: 10, page: 0);
print('Devices: ${jsonEncode(devices)}');
// 假设我们有一个设备ID,尝试获取该设备的最新遥测数据
if (devices.data.isNotEmpty) {
var deviceId = devices.data.first.id.id;
var telemetryService = tbClient.getTelemetryService();
var latestTelemetry = await telemetryService.getLatestTimeseries(deviceId, ['temperature', 'humidity']);
print('Latest Telemetry: ${jsonEncode(latestTelemetry)}');
}
await tbClient.logout();
}
} catch (e, s) {
print('Error: $e');
print('Stack: $s');
}
}
更多关于Flutter物联网平台交互插件thingsboard_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter物联网平台交互插件thingsboard_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个使用 thingsboard_client
插件与 ThingsBoard 物联网平台交互的 Flutter 代码示例。这个示例将展示如何连接到 ThingsBoard 服务器、认证设备并发送数据。
首先,确保你已经添加了 thingsboard_client
插件到你的 Flutter 项目中。你可以在 pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
thingsboard_client: ^最新版本号
然后运行 flutter pub get
来获取依赖。
下面是一个简单的 Flutter 应用示例,展示如何使用 thingsboard_client
:
import 'package:flutter/material.dart';
import 'package:thingsboard_client/thingsboard_client.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'ThingsBoard Client Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ThingsBoardDemo(),
);
}
}
class ThingsBoardDemo extends StatefulWidget {
@override
_ThingsBoardDemoState createState() => _ThingsBoardDemoState();
}
class _ThingsBoardDemoState extends State<ThingsBoardDemo> {
final String serverUrl = "https://your-thingsboard-server.com";
final String accessToken = "your-device-access-token";
@override
void initState() {
super.initState();
_connectToThingsBoard();
}
void _connectToThingsBoard() async {
try {
// 创建 ThingsBoard 客户端
var tbClient = ThingsBoardHttpClient(serverUrl, accessToken);
// 示例:获取设备信息(替换为实际需要的 API 调用)
var device = await tbClient.getDevice();
// 打印设备信息
print("Device Info: ${device.toString()}");
// 发送数据到 ThingsBoard
var telemetry = TelemetryData.fromJson({
"temperature": 25.5,
"humidity": 60.0,
});
await tbClient.sendTelemetry(telemetry);
// 可以在这里更新 UI,例如显示成功消息
setState(() {
// 例如:显示成功发送数据的 Snackbar
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Telemetry data sent successfully!')),
);
});
} catch (e) {
// 处理错误
print("Error connecting to ThingsBoard: $e");
// 可以在这里更新 UI,例如显示错误消息
setState(() {
// 例如:显示错误消息的 Snackbar
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Failed to connect to ThingsBoard: $e')),
);
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ThingsBoard Client Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Connecting to ThingsBoard...',
style: TextStyle(fontSize: 20),
),
],
),
),
);
}
}
注意事项:
-
ThingsBoardHttpClient 初始化:
serverUrl
和accessToken
需要替换为你实际的 ThingsBoard 服务器地址和设备访问令牌。 -
API 调用:这个示例中只展示了如何获取设备信息和发送遥测数据。根据你的实际需求,你可能需要调用 ThingsBoard 提供的其他 API,比如控制设备、订阅事件等。
-
错误处理:在生产环境中,请确保添加适当的错误处理和日志记录,以便能够诊断和处理可能遇到的问题。
-
UI 更新:在
setState
中更新 UI 是一种简单的状态管理方法。对于更复杂的应用,你可能需要使用 Flutter 的状态管理库,如 Provider、Riverpod 或 BLoC。 -
ThingsBoard API 文档:建议查阅 ThingsBoard 的官方文档,了解所有可用的 API 及其使用方法。
这个示例提供了一个基本的框架,你可以在此基础上扩展和定制以满足你的具体需求。