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
更多关于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('设置颜色为绿色'),
),
],
),
),
);
}
}