Flutter物联网平台交互插件thingsboard_pe_client的使用

发布于 1周前 作者 sinazl 来自 Flutter

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

1 回复

更多关于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});
}

注意事项:

  1. ThingsBoard服务器URL和API密钥:确保替换tbUrlaccessToken变量中的值为你自己的ThingsBoard服务器URL和设备API密钥。
  2. Telemetry数据格式:Telemetry数据是通过keysvalues列表发送的,确保你的ThingsBoard服务器期望的数据格式与此匹配。
  3. 错误处理:在实际应用中,你可能需要更复杂的错误处理逻辑,以处理连接失败、数据发送失败等情况。
  4. 依赖版本:请确保使用的是thingsboard_pe_client的最新版本,并查阅其官方文档以获取最新的API和用法信息。

这个示例展示了如何初始化ThingsBoard客户端、连接到ThingsBoard服务器,并发送Telemetry数据。你可以根据实际需求扩展此示例,例如添加接收设备数据、处理RPC调用等功能。

回到顶部