Flutter智能家居控制插件dart_ewelink_api的使用

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

Flutter智能家居控制插件dart_ewelink_api的使用

eWeLink API for Dart (Flutter) 是一个允许你直接通过eWeLink API进行交互的包。你可以使用你的常规凭据来与API通信。

这个项目是从 JavaScript eWelink API 移植过来的。

⚠️ 这是一个正在进行的工作,并不是所有功能都可用。 目前只有登录、获取设备列表和切换设备的方法被实现。

使用方法

这个包是一个纯Dart包,应该可以在任何支持Dart或Flutter的平台上运行。

import 'package:dart_ewelink_api/dart_ewelink_api.dart';

//...

const ewelink = Ewelink({
  email: '<你的eWeLink邮箱>',
  password: '<你的eWeLink密码>',
  region: '<你的eWeLink区域>',
});
await ewelink.getCredentials();

List<EwelinkDevice> devices = await ewelink.getDevices();
await ewelink.toggleDevice(deviceId: devices.first.deviceid);

示例代码

以下是在 example/main.dart 文件中的示例代码:

import 'dart:developer';

import 'package:dart_ewelink_api/dart_ewelink_api.dart';

void main() async {
  Ewelink ewelink = Ewelink(
    email: 'myemailaaddress@gmail.com',
    password: 'mypassword',
    region: 'us',
  );

  try {
    // 获取凭证
    await ewelink.getCredentials();

    // 获取设备列表
    List<EwelinkDevice> devices = await ewelink.getDevices();

    // 打印设备名称
    devices.forEach((device) => print(device.name.toString()));

    // 切换第一个设备的状态
    await ewelink.toggleDevice(deviceId: devices.first.deviceid);
  } on EwelinkInvalidAccessToken {
    print('错误:无效的访问令牌');
  } on EwelinkOfflineDeviceException {
    print('错误:设备离线');
  } catch (e) {
    print('错误:${e.toString()}');
  }
}

更多关于Flutter智能家居控制插件dart_ewelink_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter智能家居控制插件dart_ewelink_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 dart_ewelink_api 插件来控制智能家居设备的 Flutter 应用示例代码。这个插件允许你与 eWeLink API 交互,从而控制智能设备。

首先,确保你已经在 pubspec.yaml 文件中添加了 dart_ewelink_api 依赖:

dependencies:
  flutter:
    sdk: flutter
  dart_ewelink_api: ^最新版本号  # 请替换为实际最新版本号

然后,运行 flutter pub get 来获取依赖。

接下来,我们编写一个 Flutter 应用来演示如何使用这个插件。

主文件 main.dart

import 'package:flutter/material.dart';
import 'package:dart_ewelink_api/dart_ewelink_api.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final eWeLinkApi _eWeLinkApi = eWeLinkApi();
  String _deviceStatus = '未连接';
  String _deviceId = '你的设备ID'; // 替换为你的设备ID

  @override
  void initState() {
    super.initState();
    _initializeEWeLink();
  }

  Future<void> _initializeEWeLink() async {
    // 在这里添加你的 eWeLink API 密钥
    String apiKey = '你的API密钥'; // 替换为你的API密钥
    String email = '你的邮箱'; // 替换为你的eWeLink账号邮箱
    String password = '你的密码'; // 替换为你的eWeLink账号密码

    try {
      await _eWeLinkApi.login(apiKey, email, password);
      print('登录成功');
      
      // 获取设备状态
      Device device = await _eWeLinkApi.getDeviceById(_deviceId);
      setState(() {
        _deviceStatus = device.state == 1 ? '开' : '关';
      });
    } catch (e) {
      print('登录失败: $e');
    }
  }

  Future<void> _toggleDevice() async {
    try {
      bool newState = (_deviceStatus == '开') ? false : true;
      await _eWeLinkApi.toggleDevice(_deviceId, newState);
      Device device = await _eWeLinkApi.getDeviceById(_deviceId);
      setState(() {
        _deviceStatus = device.state == 1 ? '开' : '关';
      });
    } catch (e) {
      print('控制设备失败: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('智能家居控制'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                '设备状态: $_deviceStatus',
                style: TextStyle(fontSize: 24),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: _toggleDevice,
                child: Text((_deviceStatus == '开') ? '关闭设备' : '打开设备'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意事项

  1. API 密钥:你需要从 eWeLink 开发者平台获取 API 密钥。
  2. 设备ID:确保你替换为实际的设备ID。
  3. 安全性:在实际应用中,避免在代码中硬编码密码和API密钥。可以考虑使用安全存储或环境变量。
  4. 错误处理:在生产环境中,请添加更完善的错误处理机制。

这个示例代码展示了如何使用 dart_ewelink_api 插件登录 eWeLink 账户、获取设备状态以及控制设备开关。你可以根据需要进一步扩展功能,比如获取更多设备信息、处理不同类型的设备等。

回到顶部