导言
Milight LED RGBW灯泡是一种类似于Phillips Hue灯泡的照明系统。两者都使用相同的模式工作: 它们可以通过您可以编写的软件通过无线网络进行控制。但是Milight比Hue便宜得多。Milight灯泡有两种类型: 白色和RGBW (红-绿-蓝-白)。我们决定使用RGBW版本,因为它比纯白色版本具有更大的潜力,并允许我们构建更高级和 “区分大小写” 的程序,如持续集成信号工具 (稍后会详细介绍)。所有这些都将基于我们将创建的这个简单的转向应用程序。我们在这个项目中的目标是创建一个.NET应用程序,可以通过控制此照明系统Wi-Fi桥 (Wi-Fi控制器)并最终持续集成 (CI)信令工具。
如何运作?
MiLight LED RGBW是无线电控制的灯泡,使用Wi-Fi桥接器作为 “介质”,将通过Wi-Fi网络发送的UDP数据包转换为灯泡本身可读的无线电信号。
图1。RGBW LED灯泡架构。
要在照明系统上执行命令,我们需要使用UDP并向Wi-Fi控制器发送包含2字节信息的数据包。Wi-Fi控制器将其转换为无线电信号并直接发送到灯泡。每个字节由8位十六进制代码中的值表示 (例如0 x00)。灯泡只能在一个方向上通信,因此它只能对命令做出反应,但无法查询其实际状态。
我们可以:
-配对我们的应用程序与灯泡,
-更改值的颜色或亮度,
-打开和关闭它。
设置
图1显示了我们的gear。一个Miligth RGBW灯泡,一个Milight WiFi网桥和一个用于网桥的电源线。
图2。完整的Milight无线灯泡设置与Wi-Fi控制器。
您可以连接设置并使用其中一个移动设备应用程序 (可在Google Play商店和Apple商店中使用) 来引导灯泡。但是,如果您想使用自己的软件来引导光线 (就像我们一样!),则需要将静态ip设置为它。一个伟大的文章如何做到这一点可以在这里找到。
在此设置中,网桥提供了自己的WiFi网络,称为milight或milight_“somthing”。您可以连接到此网络,并且可以将命令发送到默认网关。
您还可以将网桥连接到现有的WiFi网络 (STA模式)。为此,请打开浏览器,转到默认网关IP,并使用 “admin” 作为用户名和密码登录。设置STA模式。在这种情况下,你应该知道命令的IP是什么。
实施情况
为了创建我们的应用程序,我们使用了Microsoft Windows Presentation Foundation (WPF),对于颜色选择器,我们使用了Infragistics颜色选择器[1]。
1) 发送数据包通过UDP
为了将UDP数据包传输到Wi-Fi控制器,我们创建了UDP传输类:
类 Udp传输 {私人 const 智力端口 = 8899; 公共 静态 无效变速器 (字节[] 数据,字符串ip) {varserverAdd =IPAddress。解析 (ip); UdpClient udpClient = UdpClient的新 (port);udpClient.Connect(serverAdd, port); udpClient.Send(data, data.Length); System.Threading.螺纹睡眠 (100); udpClient.Close(); }}
的Udp传输类包含具有两个参数的传输方法,该参数仅接受一个字节数组和一个IP字符串。根据文档,UDP数据包需要在端口8899所以它被设置为常量。更重要的是,每个命令都需要以100毫秒的延迟发送,所以这就是为什么线程被置于睡眠状态100毫秒的持续时间。请注意,为了保持代码示例简短,没有提供错误处理。
2) 命令,代码灵活和可读性
为了代码的可读性,灯泡可以执行的每个动作都用Enum表示。此项目中有3种类型的枚举:
· 的活动 (连接)
·状态 (On、Off)
·DiscoMode (高级多色照明)
在每个命令 (包含2个字节)一个字节总是恒定的,因此在这种情况下,我们可以轻松地将命令字节附加到代表适当动作的等效项的枚举。例如:
公共 静态 字节[] 国家 (州状态) { 字节stateByte; 开关状态 (state) {案例 州。开: 的stateByte = 0 x42; 中断;案例 州。关: 的stateByte = 0 x41; 中断; 默认值: 引发 新 IndexOutOfRangeException exception ();} 返回 新 字节 [] { stateByte,0x1B }; 的}
这种结构增加了代码的灵活性,使程序员更容易阅读。
3) 配对应用与灯泡
注意: 我们的应用程序必须连接到由Milight Wi-Fi控制器创建的无线网络,才能执行配对和其他命令。
在发送任何命令之前,我们的应用程序需要与灯泡配对。我们可以通过发送一个2字节的数组来实现这一点,其中第一个字节由代码表示0x45后跟第二个字节,即常量0 x00。下面显示了一个代码片段。从现在开始,灯泡将对每个命令做出反应。
公共 静态 字节[] 活动 (活动活动) { 字节的activityByte; 切换开关 (活动) {案例 活动。连接: activityByte = 0x45; 中断; 默认值: 引发 新 IndexOutOfRangeException exception ();} 返回 新 字节 [] { activityByte,0 x00 };}
请记住,初始配对必须在灯泡获得电流后的两秒钟内完成。有关详细信息,请参阅文章末尾的无限LED开发文档。
4) 最有用的命令代码排序的行动
国家:实施: byte [] { stateByte, 0x00 };–
上- > stateByte = 0x42
–
关-> stateByte = 0x41
迪斯科模式控制:实施: byte [] { discoByte, 0x00 };–
开启/切换到下一模式- > discoByte = 0x4D
–
提高速度-> discoByte = 0x44
–
降低速度-> discoByte = 0x43
要关闭迪斯科模式,只需手动更改颜色即可。 更改颜色:实施: byte [] { 0x40, colorByte };Milight灯泡使用8位调色板,因此颜色范围从0开始,结束于FF。白光:实施: 字节 [] { 0 xc7,0 x00 };
5) 亮度
更改亮度值后,将更改附加到应用程序布局的滑块。亮度值在十进制2和27之间振荡,其中2是最小值,27是最大值。要形成一个命令,需要将滑块的值转换为字节并按如下所述传递它。
新建 字节 [] { 0 x4e,convertedBrightnessByte }
接口
图3。管理面板示例应用程序。
1. 控制面板与开/关开关。
2. ip地址文本框。
3.连接按钮-> 点击后,应用程序检查ip地址是否正确输入。如果是正确的,那么其余的按钮将被启用,如果不是,“不正确的IP号码!” 消息将被显示。
4. 颜色选择器-> Infragistics颜色选择器允许用户选择一个颜色从可用的调色板。
5. 切换模式按钮-> 在第一次点击时,应用程序将打开迪斯科模式; 每次下一次点击将切换到下一个编程照明。
6. 更改颜色为白光。
7. 加速或减速实际迪斯科模式程序。
8. 亮度滑块。
持续集成 (CI) 信号工具
有了关于这种照明系统内部工作原理的所有知识,就可以创建一个持续集成 (CI)[2]物理工具,将使用RGBW Wi-Fi灯泡作为构建状态的指示器。它应该简单地:
–的把灯泡变绿,如果所有的构建都通过,一切都很好,
–的把灯泡黄色/橙色,如果一个或多个构建的方式,
–的把灯泡红色,如果一个或多个构建失败。
这个应用程序可以工作,如图4所示。
图4。示例应用程序流。
有几种方法可以实现这种应用程序。因为它是仅显示CI服务器状态的应用程序,所以可以将其开发为图标颜色不断变化的系统托盘应用程序。它可能比普通的Windows窗体/WPF样式应用程序更容易用作查询生成服务器状态的Windows服务。但似乎实现它的最佳方法是编写一个现有CI服务器的插件,该插件将打开和关闭灯泡并使用正确的颜色。
为了不中断用户的工作流程,控制器需要直接连接到现有网络。不间断的网络切换可能非常烦人,因此以下是将Wi-Fi控制器连接到现有网络并为其分配固定ip地址的几个简单步骤:
1),连接到Milight Wi-Fi网络。
2) 转到管理面板, 通过web浏览器。
3),在工作模式下,将工作类型更改为STA。
4) 请在STA设置中更改SSID为您现有Wi-Fi网络的名称。
5),选择加密类型,您的网络正在使用现在。
6) 在密码框中输入您的Wi-Fi密码。
7) 将 “获取ip地址自动” 设置为禁用。
8) 将固定IP地址、子网掩码、网关地址和DNS服务器地址 (可能因网络配置而异) 输入到正确的框中。
9),点击 “保存” 并重新启动控制器使用重新启动按钮位于左侧菜单栏
等待一段时间,让控制器加入您现有的Wi-Fi网络,并通过在浏览器中键入分配的IP地址进行检查。如果出现问题并且控制器无法连接您现有的网络,请通过将回形针或针的末端插入位于micro USB端口左侧的重置孔来手动重置控制器。
对于每个持续集成 (CI) 解决方案,查询服务器的代码的实现可能不同。
图5。CI构建成功。
图6。CI构建失败。
图7。CI构建正在进行中。
结论
本文的主要目的是向您展示如何使用引导mitight RGBW灯泡。NET。这是一个简单的应用程序,可以使用RGBW light作为更大系统的基础,如持续集成服务器状态信号等。我们展示了最有用的命令模式以及这种照明系统的工作原理,希望您喜欢。快乐的黑客!
文档:
http://www.limitlessled.com/dev/
技术信息:
http://www.philippinestuffs.com/milight-wifi-控制-灯-灯泡/
[1]– https://www.infragistics.com/products/wpf/ 数据输入和显示/颜色选择器
[2] https://en.wikipedia.org/wiki/Continuous_integration
的带来大量的复杂信息的生活与Infragistics WPF强大的数据可视化功能! 下载免费试用吧!