LIFXKit 0.6.1

LIFXKit 0.6.1

测试测试通过
Lang语言 Obj-CObjective C
许可 MIT
Released最新版本2014年12月

Nick ForgeAnthony MittazNick Forge 维护。



LIFXKit 0.6.1

  • Nick Forge

LIFXKit 是 Objective-C 的 LIFX SDK。LIFXKit 支持 iOS 和 OS X。

安装

有各种安装方法可供选择。选择最适合您的项目的安装方式

框架安装

  1. 为您的项目平台(iOS 或 OS X)下载 LIFXKit.Framework
  2. LIFXKit.Framework 添加到您的项目中。
  3. 配置您的 App Target 以链接到以下 Framework 和库
    • LIFXKit.framework
    • SystemConfiguration.framework
    • libz.dylib
  4. 仅限 iOS
    • 确保您的目标已正确配置为链接到静态库的类别。为此,请确保您的应用目标的“其他链接器标志”构建设置包含 -ObjC
  5. 仅限 OS X
    • 打开您的目标的“构建阶段”,并添加一个“复制文件”构建阶段(通过菜单 编辑/ 添加构建阶段/ 添加复制文件构建阶段
    • 展开新添加的“复制文件”构建阶段,将目标更改为 Frameworks
    • LIFXKit.framework 添加到“复制文件”构建阶段。

Xcode 子项目安装

  1. LIFXKit.xcodeproj 作为子项目拖动到您的 Xcode 项目中。
  2. 在 LIFXKit 子项目中转到 Products 源组,然后将 iOS (或 OS X 的 libLIFXKitMac.a) 的 libLIFXKit.a 拖到您的 App Target 的链接框架和库列表中。
  3. 配置您的 App Target 以链接到以下系统 Framework 和库
    • SystemConfiguration.framework
    • libz.dylib
  4. 确保您的目标已正确配置为链接到静态库的类别。为此,请确保您的应用目标的“其他链接器标志”构建设置包含 -ObjC
  5. 在 OS X 上,您的项目的发布配置可能需要额外的 Header Search Path $(OBJROOT)/UninstalledProducts/include 以产生存档构建。

一旦您使用任何上述方法中的任何一种配置了您的 Xcode 项目,请在您的源文件中添加 #import <LIFXKit/LIFXKit.h> 并开始编码!

快速示例

关闭所有灯光

LFXNetworkContext *localNetworkContext = [[LFXClient sharedClient] localNetworkContext];
[localNetworkContext.allLightsCollection setPowerState:LFXPowerStateOff];

打开名为 "Hallway" 的灯光

LFXNetworkContext *localNetworkContext = [[LFXClient sharedClient] localNetworkContext];
LFXLight *hallway = [localNetworkContext.allLightsCollection firstLightForLabel:@"Hallway"];
[hallway setPowerState:LFXPowerStateOn];

打开所有标记为 "Kitchen" 的灯光

LFXNetworkContext *localNetworkContext = [[LFXClient sharedClient] localNetworkContext];
LFXTaggedLightCollection *kitchen = [localNetworkContext taggedLightCollectionForTag:@"Kitchen"];
[kitchen setPowerState:LFXPowerStateOn];

将所有灯光设置为随机颜色

LFXNetworkContext *localNetworkContext = [[LFXClient sharedClient] localNetworkContext];
for (LFXLight *aLight in localNetworkContext.allLightsCollection)
{
    LFXHSBKColor *color = [LFXHSBKColor colorWithHue:arc4random()%360 saturation:1.0 brightness:1.0];
    [aLight setColor:color];
}

示例代码

示例代码可以在 /Examples 下找到。

LIFX 浏览器

LIFX浏览器 示例代码项目展示了如何进行设备发现、灯光操作、标记灯光集合、灯光状态和灯光控制。它还演示了如何与LIFXKit中的观察者回调API集成。这是编写自己的LIFX兼容应用程序的最佳起点。

公共与私有头文件和类

在Xcode源列表中名为“私有”的组中的任何源应被视为非公开API,随时可能更改,恕不另行通知。

LIFX SDK术语快速概览

网络上下文

网络上下文(LFXNetworkContext)表示你访问LIFX设备的环境。当前SDK仅支持“本地网络上下文”,这指的是可在你的局域网中访问的设备。我们计划添加通过即将推出的云服务访问LIFX设备时的网络上下文。

灯光、灯光集合和寻址

LIFX底层系统有三种内部寻址类型:设备、标签和广播。设备寻址将定位单个设备,标签寻址将定位具有特定标签的所有设备,广播寻址将定位所有设备。由于底层LIFX二进制协议的工作方式,通过目标标签(使用标记灯光集合)而不是单独定位该标签中的每个设备,你可以看到更高的性能。在针对网络上下文中的所有灯光进行操作时也同样适用——如果你想改变所有灯光的状态,定位-[LFXNetworkContext allLightsCollection]将比单独定位每个设备快得多。

灯光

LFXLight 对象表示单个LIFX灯光,网络上下文中每个设备只会对应一个LFXLight

灯光集合

灯光集合(LFXLightCollection)是封装一组LIFX灯光的类。它们的状态可以像单个灯光一样操作。你可以通过.lights属性访问灯光集合中的灯光。因为LFXLightCollection遵循NSFastEnumeration,所以你可以使用for (LFXLight *aLight in lightCollection) {…}对灯光集合中的灯光进行枚举。

所有灯光集合

每个LFXNetworkContext都有一个.allLightsCollection属性,你可以通过它获取灯光列表。如果你想以相同的方式操作每个灯光(例如,将每个灯光关闭),你应该直接使用所有灯光集合属性,而不是单独定位每个设备。

标记灯光集合

标记灯光集合(LFXTaggedLightCollection)表示包含特定标签的灯光。如果你想操作一个标签内的所有设备,你应该始终使用标记灯光集合,而不是单独处理每个灯光。标记灯光集合在网络上下文中是唯一的。

HSBK颜色

LIFX 使用“HSBK”颜色表示方式。其中,“HSB”部分指的是HSB颜色空间,而“K”部分则指的是白色点的色彩温度(单位为开尔文)。在完全饱和的状态下,HSBK颜色将与可实现的色域边缘相对应,而在零饱和的状态下,HSBK颜色将与K组件中描述的色彩温度相对应的颜色相匹配。