Flutter照明控制插件onyx_lighting的使用

Flutter照明控制插件onyx_lighting的使用

Onyx Lighting for Dart

此软件包提供了对Onyx Lighting控制器API的Dart接口。

目前,仅支持Telnet API,但OSC实现也在开发中。

特性

此软件包通过Onyx Telnet API向Dart暴露了以下功能。这是发送help命令到telnet端点后得到的输出:

100 {列表中的telnet命令(省略方括号[ ])
ACT
  [ACT #] - 动作组 =  其中#是动作组编号

ActList
  [ActList] - 将返回Maxxyz管理器的动作列表

ActName
  [ActName #] - 将返回Maxxyz管理器动作名称

BYE
  [Bye] - 断开与服务器的连接

CLRCLR
  [CLRCLR] - 清除+清除(清除编程器)

CMD
  [CMD #] - 内部命令 其中#是命令编号

CmdList
  [CmdList] - 将返回Maxxyz管理器的命令列表

CmdName
  [CmdName #] - 将返回Maxxyz管理器命令名称#

GQL
  [GQL #] - 转到Cuelist 其中#是Cuelist编号

GSC
  [GSC #] - 转到计划表 其中#是计划表编号(设置此计划表为默认计划表)
  若要返回日历规则,请使用SchUseCalendar命令

GTQ
  [GTQ #,#] - 转到Cuelist 其中第一个#是Cuelist编号,第二个#是提示编号

Help
  显示服务器支持的命令。

IsMxRun
  [IsMxRun] - 将返回Maxxyz的状态(是或否)

IsQLActive
  [IsQLActive #] - 将返回Qlist #的状态(是或否)

IsSchRun
  [IsSchRun] - 将返回调度程序状态(是或否)

Lastlog
  [LastLog #] - 返回从最后一条开始指定数量的日志行
  例如,LastLog 10 将返回最后10条记录。
  最多300条

PQL
  [PQL #] - 暂停Cuelist 其中#是Cuelist编号

QLActive
  [QLActive] - 将返回当前活动Cuelist的列表

QLList
  [QLList] - 将返回可用的Cuelist列表

QLName
  [QLName #] - 将返回Maxxyz Cuelist名称#

RAO
  [RAO] - 释放所有覆盖

RAQL
  [RAQL] - 释放所有Cuelist

RAQLDF
  [RAQLDF] - 释放所有Cuelist 并优先考虑调光器

RAQLO
  [RAQLO] - 释放所有Cuelist 和覆盖

RAQLODF
  [RAQLODF] - 释放所有Cuelist 和优先考虑调光器覆盖

RQL
  [RQL #] - 释放Cuelist 其中#是Cuelist编号

SchList
  [SchList] - 将返回Maxxyz管理器的计划表列表

SchName
  [SchName #] - 将返回Maxxyz管理器计划表名称#

SchUseCalendar
  设置调度程序使用日历规则

SetDate
  设置远程计算机日期(setdate YYYY,MM,DD)
  例如 setdate 2006,07,30 将设置2006年7月30日的日期

SetPosDec
  设置地理坐标的小数值(setposdec 纬度N或S,经度E或W)
  例如 setposdec 45.5,N,34.3,E

SetPosDMS
  设置地理坐标的度分秒值(setposdms DD,MM,SS,N或S,DD,MM,SS,E或W)
  例如 setposdms 45,30,00,N,34,15,00,W

SetQLLevel
  [SetQLLevel #,#] - 设置Cuelist级别 其中第一个#是Cuelist编号,第二个#是一个介于0和255之间的级别



SetTime
  设置远程计算机时间(settime HH,MM,SS)为24小时制
  例如 settime 19,13,30 将设置时间为7:13:30 PM

SetTimepreset
  设置时间预设 No,H,M,S(24小时制)
  例如 timepreset 1,16,55,30 将设置时间为预设1 @ 4:55:30 PM



Status
  [Status] - 将返回状态报告

TimePresetList
  返回时间预设列表

WhoIAm
  [WhoIAm] - 将返回登录到该服务器的IP地址

</code></pre>

## 开始使用

在您的项目文件夹内,在`pubspec.yaml`文件中添加此库:

```dart
dart pub add onyx_lighting

或者在flutter项目中:

flutter pub add onyx_lighting

使用示例

以下是如何使用onyx_lighting插件的示例代码:

import 'package:onyx_lighting/onyx.dart';

void main() async {
  final onyx = Onyx(
    OnyxSettings(
      ip: '192.168.50.13',
      port: 2323,
      useTelnet: true,
    ),
  );

  onyx.sortCueListsBy = OnyxSortPreference.byNumber;
  if (await onyx.connect()) {
    print('AVAILABLE CUELISTS --- ');
    if (onyx.cueLists.isNotEmpty) onyx.cueLists.first.isFavorite = true;
    for (var cl in onyx.cueLists) {
      print(cl);
      cl.updates.listen((_) {
        print(cl);
      });
    }
  }
}

一旦连接成功,Onyx类将暴露一个更新流,可以监听这些更新:

onyx.updates.listen(listener);

此外,在连接完成后,所有可用的cue列表将通过以下对象访问:

List<OnyxCueList> cueLists; // 按照sortCueListsBy的值排序
Map<int, OnyxCueList> cueListsByNumber;

更多关于Flutter照明控制插件onyx_lighting的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


onyx_lighting 是一个用于控制照明的 Flutter 插件,它允许开发者通过 Flutter 应用程序来控制各种照明设备。以下是如何使用 onyx_lighting 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 onyx_lighting 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  onyx_lighting: ^1.0.0  # 使用最新版本

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

2. 导入包

在你的 Dart 文件中导入 onyx_lighting 包:

import 'package:onyx_lighting/onyx_lighting.dart';

3. 初始化照明控制

在使用 onyx_lighting 之前,你需要初始化照明控制。通常,你可以在 initState 方法中进行初始化:

OnyxLighting _onyxLighting;

[@override](/user/override)
void initState() {
  super.initState();
  _onyxLighting = OnyxLighting();
  _onyxLighting.initialize();  // 初始化照明控制
}

4. 控制照明设备

你可以使用 OnyxLighting 实例来控制照明设备。以下是一些常见的操作:

打开照明设备

_onyxLighting.turnOn();

关闭照明设备

_onyxLighting.turnOff();

设置亮度

_onyxLighting.setBrightness(50);  // 设置亮度为50%

设置颜色

_onyxLighting.setColor(Color(0xFF00FF00));  // 设置颜色为绿色

5. 处理事件

你还可以监听照明设备的状态变化,例如亮度变化或颜色变化:

_onyxLighting.onBrightnessChanged.listen((brightness) {
  print('亮度已改变: $brightness');
});

_onyxLighting.onColorChanged.listen((color) {
  print('颜色已改变: $color');
});

6. 释放资源

在不再需要使用 OnyxLighting 时,记得释放资源:

[@override](/user/override)
void dispose() {
  _onyxLighting.dispose();
  super.dispose();
}

示例代码

以下是一个完整的示例代码,展示了如何使用 onyx_lighting 插件来控制照明设备:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: LightingControlPage(),
    );
  }
}

class LightingControlPage extends StatefulWidget {
  [@override](/user/override)
  _LightingControlPageState createState() => _LightingControlPageState();
}

class _LightingControlPageState extends State<LightingControlPage> {
  OnyxLighting _onyxLighting;

  [@override](/user/override)
  void initState() {
    super.initState();
    _onyxLighting = OnyxLighting();
    _onyxLighting.initialize();

    _onyxLighting.onBrightnessChanged.listen((brightness) {
      print('亮度已改变: $brightness');
    });

    _onyxLighting.onColorChanged.listen((color) {
      print('颜色已改变: $color');
    });
  }

  [@override](/user/override)
  void dispose() {
    _onyxLighting.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('照明控制'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () => _onyxLighting.turnOn(),
              child: Text('打开照明'),
            ),
            ElevatedButton(
              onPressed: () => _onyxLighting.turnOff(),
              child: Text('关闭照明'),
            ),
            ElevatedButton(
              onPressed: () => _onyxLighting.setBrightness(50),
              child: Text('设置亮度为50%'),
            ),
            ElevatedButton(
              onPressed: () => _onyxLighting.setColor(Color(0xFF00FF00)),
              child: Text('设置颜色为绿色'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部