You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编程实现Phillips Hue灯带在指定时段自动变色?

实现飞利浦Hue灯带时段自动变色方案

前置准备

  • 安装NuGet包 Q42.HueApi(目前较常用的Hue第三方.NET库)
  • 提前获取Hue桥接器的IP地址、已注册的用户凭证,以及3条灯带的设备ID(可通过Hue官方APP或库的API扫描获取)

核心实现代码

using Q42.HueApi;
using Q42.HueApi.Models;
using System;
using System.Timers;

public class HueLEDController
{
    // 替换成你的Hue桥接IP和用户凭证
    private const string BridgeIp = "你的桥接IP";
    private const string AppKey = "你的用户凭证";
    // 替换成你的3条灯带ID
    private static readonly string[] LightIds = { "灯带ID1", "灯带ID2", "灯带ID3" };
    // 指定变色时段:8:00-9:30
    private static readonly TimeSpan StartTime = new TimeSpan(8, 0, 0);
    private static readonly TimeSpan EndTime = new TimeSpan(9, 30, 0);
    // 定时检查的定时器(每分钟触发一次)
    private readonly Timer _checkTimer;
    private readonly LocalHueClient _hueClient;

    public HueLEDController()
    {
        _hueClient = new LocalHueClient(BridgeIp, AppKey);
        // 初始化定时器,每分钟检查一次时间
        _checkTimer = new Timer(60000);
        _checkTimer.Elapsed += OnTimerElapsed;
        _checkTimer.Start();
    }

    // 定时器触发时执行的方法
    private void OnTimerElapsed(object sender, ElapsedEventArgs e)
    {
        ColorChangeLED();
    }

    public void ColorChangeLED()
    {
        DateTime now = DateTime.Now;
        TimeSpan currentTime = now.TimeOfDay;

        // 判断当前是否在指定时段内
        if (currentTime >= StartTime && currentTime <= EndTime)
        {
            // 设置灯带为目标颜色(示例为红色,可自行调整HSB参数)
            LightCommand colorCommand = new LightCommand
            {
                Hue = 0, // 色相,0-65535,0=红,46920=蓝,25500=绿
                Saturation = 254, // 饱和度,0-254,254为最饱和
                Brightness = 254 // 亮度,0-254,254最亮
            };

            // 给3条灯带发送颜色指令
            _hueClient.SendCommandAsync(colorCommand, LightIds).Wait();
        }
        else
        {
            // 时段外设置默认暖白色
            LightCommand defaultCommand = new LightCommand
            {
                ColorTemperature = 340 // 色温,2000K(暖黄)-6500K(冷白),对应数值153-500
            };

            _hueClient.SendCommandAsync(defaultCommand, LightIds).Wait();
        }
    }
}

关键说明

  • 时间判断:代码直接对比当前时间的TimeOfDay和设定时段,若需跨天时段(比如22:00-次日6:00),可调整逻辑为currentTime >= StartTime || currentTime <= EndTime
  • 颜色参数:Hue灯带支持HSB或色温控制,可按需修改Hue、Saturation、Brightness或ColorTemperature参数
  • 定时器:用System.Timers.Timer每分钟检查一次时间,确保时段切换时及时变色,也可根据需求调整检查间隔
  • 异步处理:SendCommandAsync是异步方法,这里用Wait()同步处理,若在异步上下文(如ASP.NET Core)中可直接用await

内容的提问来源于stack exchange,提问作者Kake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:50:25