【问题标题】:How to use sunset and sunrise data如何使用日落和日出数据
【发布时间】:2023-08-19 22:16:01
【问题描述】:

我看到 Hue API 在“日光”传感器上提供了地理位置字段和日出/日落偏移量。

具体来说:

lat
long
sunriseoffset
sunsetoffset

目前发布的 API 没有提供任何关于如何使用日出/日落的信息。

如果我使用更新传感器 API 设置纬度和经度,日出/日落偏移量是否会自动填充数据,并且我可以查询这些数据以相应地调整我的光照时间表?我想做例如“每天,日落点灯 + 20 分钟”。

我打算自己实现必要的算法,但鉴于这些领域,我需要吗?

在测试时,我更新了传感器配置上的纬度和经度,这里是更新后查询传感器结果的转储:

{
  "state": {
      "daylight":false,
      "lastupdated":"2014-11-06T19:19:31"
  },
  "config": {
      "on":true,
      "long":"1.5333W",
      "lat":"56.2442N",
      "sunriseoffset":30,
      "sunsetoffset":-30
  },
  "name":"Daylight",
  "type":"Daylight",
  "modelid":"PHDL00",
  "manufacturername":"Philips",
  "swvversion":"1.0"
}

您可以看到我设置的纬度和经度值(默认为“无”)。

现在很明显,日出和日落偏移量不是计算值。相反,它们用于配置传感器值何时从日光切换到非日光,反之亦然 - 例如,日光在日出后几分钟变为真正的“日出偏移”。

桥梁是否知道给定地理位置的日出和日落时间?

如果是这样,我是否可以可靠地查询此传感器以确定日光或非日光,同时考虑日出和日落?

【问题讨论】:

  • 可能不是您所需要的,但您可以将 IFTTT 与 HUE 结合使用并在日落/日出时触发而无需任何代码行,但我想您想要更具体的东西(日落后 20 分钟)...
  • 这座桥确实知道日出和日落时间。这就是地理位置的用途。偏移量以分钟为单位。我没有找到任何文档,但lastupdated 时间正好是太阳落山前的sunsetoffset 分钟。您还必须确保地理坐标或多或​​少匹配。你的指向北海的某个地方。
  • 我已经成功地测试了使用日光传感器在日落时打开我的灯。请给我几个小时,我会发布一个例子(作为答案)。

标签: philips-hue


【解决方案1】:

Supported sensors 页面有日光传感器的描述,Sensors 页面有传感器的描述,您需要Rules 才能充分利用传感器。

日光传感器将在有日光时将状态值 daylight 设置为 true,在没有日光时将状态值设置为 false,当然要考虑您在传感器配置中指定的偏移量(以分钟为单位)。

要更改您的日光传感器配置,请在 /api/<username>/sensors/1/config 上使用 PUT 和以下正文:

{
    "long": "1.5333W",
    "lat": "56.2442N",
    "sunriseoffset": 30,
    "sunsetoffset": -30
}

这意味着状态 daylight 值将在日落前 30 分钟更改为 false,在日出后 30 分钟更改为 true,其中日落/日出时间是根据您的 long(经度)和 @ 987654334@(纬度)值。

为了例如日落时开灯,你需要指定一个规则,条件是daylight的值必须等于false

/api/<username>/rules 上使用POST 和以下正文:

{
    "name": "Daylight rule",
    "conditions": [
        { 
            "address": "/sensors/1/state/daylight",
            "operator": "eq",
            "value": "false"
        }
    ],
    "actions": [    
        {
            "address": "/groups/0/action",
            "method": "PUT",
            "body": { "on":true, "bri":254 }
        }
    ]
}

规则的条件是状态daylight 值必须是eq(等于)值false

【讨论】:

  • 我仍然是一个糟糕的色调系统初学者,但我还添加了另一个条件{"address": "/sensors/1/state/lastupdated", "operator": "dx"}。否则,我担心在没有日光的情况下,这条规则会一直亮着灯。通过为lastupdated 添加“OnChange”事件,可以确保它只被触发一次。只是一个想法。
  • 我明白你的意思,但我已经测试了上述规则数周,它只触发一次。我不确定如果您添加该条件会发生什么,但不需要它:)
  • 完全正确,可以通过规则的“lasttriggered”时间戳和“timestriggered”属性来验证。