---
title: 高级-生物节律
summary: 模拟自然光变化，支持默认、自然、自定义三种模式，含人因照明与生物节律协议说明。
---

## 高级-生物节律

### 功能介绍
- 生物节律：将自然光的概念通过设备带到室内：将一天设为N个时刻(1≤N≤8)，并设置各自对应的亮度和色温。设备一天内模拟太阳自动按照这N个时刻来渐变。
- 涂鸦人因照明（高级功能）：可以选择精确到具体经纬度的目的地定位。点击保存地址后，经纬度生物节律功能开启。功能开启后，智能照明设备将会根据时间变化，自动调整其色温和亮度，来模拟定位地区的自然光照情况。自然的光环境，不仅可以帮助平衡人眼的视觉感受，还能够调节激素水平和生物钟，进而正向地影响人体心理和情绪健康。
**目前只有单设备有此功能，群组屏蔽。路数 只支持二路和五路**
#### 生物节律默认模式
- 默认模式展示4个节点，WIFI协议：实际dp下发6个节点，sigMesh协议：下发4个节点。
  - 其中下发的颜色、时间均不可调节，点击色盘置灰，默认为展示功能。
<Image src='/images/extended/lamp-rhythm-normal.png' style={{ width: '300px'}} />

#### 生物节律自然模式
- 自然模式展示3个节点，WIFI协议时：实际下发5个节点，sigMesh协议：下发3个节点。
首次进入【自然模式】，默认值为与【默认模式】一样。色环上方提示选择城市，点击跳转至地图页面选择经纬度，如果手机没有开启定位功能需要提醒开启定位功能。  
进入地图，如果没有打开GPS，默认定位到北京；如果打开了GPS，默认定位到手机所在地的经纬度
只要选择过经纬度，不管是否保存，下次进入【自然模式】会记忆上次选择的经纬度。
选择经纬度后，会通过接口根据经纬度获取到日出、正午、日落三个时间节点，并根据这三个节点补充剩余两个隐藏节点并进行下发。
<Image src='/images/extended/lamp-rhythm-natural.png' style={{ width: '300px'}} />

#### 生物节律自定义模式
- 自定义模式展示4个节点，WIFI协议时：实际dp下发6个节点，sigMesh协议：下发4个节点。
  - 点击时间下方的颜色圆圈，可以自定义时间和色温。
<Image src='/images/extended/lamp-rhythm-custom.png' style={{ width: '300px'}} />

### DP 协议

#### 默认数据：
```html
0、隐藏节点：
    hour: 6,
    minute: 0,
    hue: 0,
    saturation: 0,
    value: 0,
    brightness: 0,
    temperature: 100,
1、唤醒/日出 
    hour: 6,
    minute: 30,
    hue: 0,
    saturation: 0,
    value: 0,
    brightness: 100,
    temperature: 50,
2、正午
    hour: 11,
    minute: 30,
    hue: 0,
    saturation: 0,
    value: 0,
    brightness: 100,
    temperature: 100,
3、日落
    hour: 17,
    minute: 0,
    hue: 0,
    saturation: 0,
    value: 0,
    brightness: 70,
    temperature: 50,
4、隐藏节点
    hour: 20,
    minute: 30,
    hue: 0,
    saturation: 0,
    value: 0,
    brightness: 70,
    temperature: 50,
5、入睡
    hour: 21,
    minute: 0,
    hue: 0,
    saturation: 0,
    value: 0,
    brightness: 0,
    temperature: 0,
0号节点早于1号节点(起床)半小时
4号节点早于5号节点(入睡)半小时
当协议为Wi-Fi时，需要下发隐藏节点，否则不用。
```

#### 具体协议
- 版本 0x00

|版本号	|任务开关	|模式选择|	日期设定|	节点数|	节点1|	…….|	节点N|
| ----|---- | ------- |---|---- |---|---- |---|
|1byte:0x00|	1byte|	1byte|	1byte|	1byte|	9byte|		|9byte|


- 版本 0x01

|版本号	|任务开关|	模式选择|	日期设定	|参数模式	|节点数	|节点1|	…….	|节点N|
| ----|---- | ------- |---|---- |---|---- |---|----|
|1byte:0x01	|1byte	|1byte	|1byte	|1byte: 0x01:仅含BT 0x02:仅含HSV 0x03:含HSVBT |1byte|	5-9byte  5byte/7byte/9byte	|	5 - 9byte|

- 字段说明

|字段||序号	|长度（byte）|	数据代表|说明|
| ----|---|---- | ------- |---|---- |
|版本号 ||1	|1|	0x00：初始版本|
|任务开关|| 2|	1|	0x00：任务关闭 0x01：任务打开|
|模式选择 ||3|	1|	0x00：两节点之间一直渐变 0x0F:到达节点时间后开始渐变，渐变完成时间为该字段值。最小允许值15. 如：0x0F表示节点时间到达后15分钟完成渐变|
|日期设定||4|	1	|解析具体的字节位，某天生效，相应位置1，见后文五说明|
|节点个数||5|	1|	0x01:1个节点。范围允许值1~8|
|节点参数|节点开关|	|1|	节点开关优先级低于任务开关，只有任务开关开启的情况下才判断节点开关的状态 0x00:节点禁能，不生效 0x01:节点使能，生效|
||	小时|		|1|	0x10：hex码，16点，范围允许值0~23。|
||	分钟|		|1|	0x10:hex码，16分，范围允许值0~59|
||	色调|		|2|	0x03, 0x10：hex码。大端格式，第一个字节表示百位，第二个字节表示十位，个位。实际值表示316。范围允许值0~360。|
||	饱和度百分比|	|	1|	0x10：hex码，16%；范围允许值0~100|
||	明度百分比|		|1|	0x10：hex码，16%，范围允许值1~100|
||	亮度百分比|		|1|	0x10：hex码，16%，范围允许值1~100|
||	色温百分比|		|1|	0x10：hex码，16%.范围允许值0~100|

- 目前的生物节律无法选择日期，默认全1
  - 如果全0，表示单次模式，只生效一次；否则为循环模式，判断相应位是否置1，位置1表示当天生效。如0x42表示任务在星期六和星期一生效（注意必须保证相应的任务开关是处于开启状态）

|保留|	星期六|	星期五|	星期四|	星期三|	星期二|	星期一|	星期日|
| ----|---- | ------- |---|---- |---|---- |---|
|bit7	|bit6	|bit5	|bit4	|bit3	|bit2	|bit1	|bit0|

#### 生物节律接口
- [接口详情](/cn/miniapp/develop/ray/api/light/light-rhythms)

### 如何开发
- 根据 UI 交互进行 DP 的监听上报与下发
  - [具体监听与下发示例](/cn/miniapp/solution-panel/ability#dp-上报监听)

- 组件引用示例
```ts
import RhythmCircle from '@ray-js/lamp-rhythm-circle';

export default function Home() {
  // 每一个时间节点 8>节点个数>2
  const [rhythmNode, setRhythmNode] = useState([
    {
      activeColor: '#CE8040', //节点对应的渐变颜色
      icon: res.icon1_colour, //节点对应展示的icon
      time: 390, //节点对应的时间数据 单位为分钟
      valid: true, //节点是否可以拖动
    },
    {
      activeColor: '#CEECFE',
      icon: res.icon2_colour,
      time: 690,
      valid: true,
    },
    {
      activeColor: '#B3ABA8',
      icon: res.icon3_colour,
      time: 1020,
      valid: true,
    },
    {
      activeColor: '#1E272C',
      icon: res.icon4_colour,
      time: 1260,
      valid: true,
    },
  ]);

  const handleChange = v => {
    // 当滑动时，会返回当前的所有节点数据，以及当前拖动的节点index
    const { value, activeIndex } = v;
    setRhythmNode(value);
  };

  const handleRelease = v => {};
  return (
    <View className={styles.view}>
      <DemoBlock title="基础用法">
        <Text className={styles.demoBlockTitleText}>生物节律</Text>
        // 详细文档见 https://developer.tuya.com/material/library_oHEKLjj0/component?code=ComponentsTyLamp&subCode=LampRhythmCircle
        <RhythmsCircle
          // 外圈半径
          innerRadius={107.5}
          // 内圈背景
          radius={147.5}
          // 节点最小时间间隔
          timeOffset={30}
          // 节点数据
          data={rhythmNode}
          // move时触发的事件
          onChange={handleChange}
          // end释放时触发的事件
          onRelease={handleRelease}
        />
      </DemoBlock>
    </View>
  );
}
```

### 注意事项
- Wi-Fi和zigbee设备若生物节律启用时开启开关，需要再次下发生物节律使其生效

### 相关物料
- 【功能页】：无
- 【组件】：
  1. [生物节律色环](/cn/miniapp/solution-ai/ability/lamp-solution/lamp/ability-set/component#通用生物节律色环)
- 【教程】：无
- 【SDK】：无
- 【API】：
  1. [生物节律接口能力](/cn/miniapp/develop/ray/api/light/light-rhythms)
