繁体   English   中英

我正在尝试制作一个 flutter 应用程序来控制我的飞利浦 Hue 灯,但我遇到了 hue_dart 问题

[英]I am trying to make a flutter app to control my Philips Hue lights and I'm having problems with hue_dart

我有飞利浦 Hue 灯,我希望能够使用 Dart 和 Flutter 更改颜色。 我曾尝试使用名为hue_dart的库,但是当我将其作为 Dart 文件运行时,它只能控制一盏灯,我每次都必须单击 Bridge 上的按钮。

这是我的代码:

import 'package:http/http.dart';
import 'package:hue_dart/hue_dart.dart';

main(List<String> arguments) async {
  final client = Client();

  final discovery = BridgeDiscovery(client);

  List<DiscoveryResult> discoverResults = await discovery.automatic();
  final discoveryResult = discoverResults.first;

  var bridge = Bridge(client, discoveryResult.ipAddress);

  final whiteListItem = await bridge.createUser('dart_hue#example');

  bridge.username = whiteListItem.username;

  List<Light> lights = await bridge.lights();

  final light = lights.first.changeColor(red: 1.0, green: 0, blue: 1.0);
  LightState state = lightStateForColorOnly(light);
  state = state.rebuild(
    (s) => s
      ..on = true
      ..brightness = 10,
  );
  await bridge.updateLightState(light.rebuild(
    (l) => l..state = state.toBuilder(),
  ));
}

我将如何让用户持续存在? 还有一个可以控制一组灯,而不仅仅是它返回的第一个灯?

每次创建需要物理授权的用户时,您都必须单击 Bridge 按钮。 打印创建的用户名以显示 Bridge 创建的随机生成的用户名。

final whiteListItem = await bridge.createUser('dart_hue#example');
print(whiteListItem);
bridge.username = whiteListItem.username;

然后您可以摆脱 createUser 步骤,并使用该随机字符串作为用户名,因为它现在是 Bridge 上的授权用户。

//final whiteListItem = await bridge.createUser('dart_hue#example');
bridge.username = 'the printed value'

至于控制一个灯光方面,您只需要更改从 GET 返回的第一个灯光的 state 和lights.first 我还没有尝试过,但迭代将是一个很好的下一步:

Set<Light> set = Set.from(lights);
set.forEach((element) => 
  changeState(element)
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM