This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ZLL做冷暖灯

Other Parts Discussed in Thread: Z-STACK

HI:

我打算用Z-Stack Lighting做冷暖灯,有一些疑问,

1、我应该在哪里去设置我的设备ID ,改为Color temperature light

2、因冷暖灯只需两路PWM,而Zlight默认为4路,我应该用RGBW中的哪2路呢

  • 1, 对的,就是Color temperature light

    2, 具体选择那两路没有关系,看你的实际硬件接口

  • HI VV,

    我应该在Z-STACK的哪里去修改呢,

    1、我并不知道Device ID在协议栈的哪个位置

    2、在zll_simplelight_data.c中有一些宏

    uint8 zclColor_ColorMode = COLOR_MODE_CURRENT_X_Y;
    uint8 zclColor_EnhancedColorMode = ENHANCED_COLOR_MODE_CURRENT_HUE_SATURATION;
    uint16 zclColor_ColorCapabilities = ( COLOR_CAPABILITIES_ATTR_BIT_HUE_SATURATION |
    COLOR_CAPABILITIES_ATTR_BIT_ENHANCED_HUE |
    COLOR_CAPABILITIES_ATTR_BIT_COLOR_LOOP |
    COLOR_CAPABILITIES_ATTR_BIT_X_Y_ATTRIBUTES );

    是需要修改这些内容吗

    3、我是不是也应该通过配置一些内容来告诉协议栈我用的哪两个PWM,并且哪个是冷光哪个是暖光

  • 1,

    // Zigbee Light Link Profile Identification
    #define ZLL_PROFILE_ID 0xc05e

    // ZLL Basic Lighting Device IDs
    #define ZLL_DEVICEID_ON_OFF_LIGHT 0x0000
    #define ZLL_DEVICEID_ON_OFF_PLUG_IN_UNIT 0x0010
    #define ZLL_DEVICEID_DIMMABLE_LIGHT 0x0100
    #define ZLL_DEVICEID_DIMMABLE_PLUG_IN_UNIT 0x0110

    // ZLL Color Lighting Device IDs
    #define ZLL_DEVICEID_COLOR_LIGHT 0x0200
    #define ZLL_DEVICEID_EXTENDED_COLOR_LIGHT 0x0210
    #define ZLL_DEVICEID_COLOR_TEMPERATURE_LIGHT 0x0220

    // ZLL Lighting Remotes Device IDs
    #define ZLL_DEVICEID_COLOR_CONTORLLER 0x0800
    #define ZLL_DEVICEID_COLOR_SCENE_CONTROLLER 0x0810
    #define ZLL_DEVICEID_NON_COLOR_CONTORLLER 0x0820
    #define ZLL_DEVICEID_NON_COLOR_SCENE_CONTROLLER 0x0830
    #define ZLL_DEVICEID_CONTROL_BRIDGE 0x0840
    #define ZLL_DEVICEID_ON_OFF_SENSOR 0x0850

    2,

    这些是针对RGB的灯的,如果只是单色的色温灯,就不需要了

    3, 当然

  • void zclColor_init( byte taskID); void zclColor_process( uint16 *events );

    void zclColor_processColorLoop( uint16 *events );

    ZStatus_t zclColor_MoveToColorCB( zclCCMoveToColor_t *pCmd );

    void zclColor_MoveColorCB( zclCCMoveColor_t *pCmd );

     ZStatus_t zclColor_StepColorCB( zclCCStepColor_t *pCmd );

     ZStatus_t zclColor_MoveToSaturationCB( zclCCMoveToSaturation_t *pCmd );

     ZStatus_t zclColor_MoveSaturationCB( zclCCMoveSaturation_t *pCmd );

    ZStatus_t zclColor_StepSaturationCB( zclCCStepSaturation_t *pCmd );

     ZStatus_t zclColor_MoveToHueCB( zclCCMoveToHue_t *pCmd );

     ZStatus_t zclColor_MoveHueCB( zclCCMoveHue_t *pCmd );

    ZStatus_t zclColor_StepHueCB( zclCCStepHue_t *pCmd );

    ZStatus_t zclColor_MoveToHueAndSaturationCB( zclCCMoveToHueAndSaturation_t *pCmd );

     ZStatus_t zclColor_StopCB( void );

     ZStatus_t zclColor_EnhMoveToHueCB( zclCCEnhancedMoveToHue_t *pCmd );

     ZStatus_t zclColor_MoveEnhHueCB( zclCCEnhancedMoveHue_t *pCmd );

    ZStatus_t zclColor_StepEnhHueCB( zclCCEnhancedStepHue_t *pCmd );

     ZStatus_t zclColor_MoveToEnhHueAndSaturationCB( zclCCEnhancedMoveToHueAndSaturation_t *pCmd );

    ZStatus_t zclColor_SetColorLoopCB( zclCCColorLoopSet_t *pCmd );

    1、在协议栈中并没有ZLL标准定义的MoveToColorTemprature/MoveColorTemprature/StepColorTemprature等函数,是要自己去实现吗?

  • 接口函数是有的

    zclLighting_ProcessInCmd_ColorControl_MoveToColorTemperature 

    你可以自己定义callback函数做处理。

  • ZLight 每15秒都会广播一条命令,请问这条命令是哪个层哪个任务广播的,有什么作用呢

    1.psd
  • 这个每隔15s一条发出来的是Link Status消息,只有Coordinator和Router会发这个消息,主要目的是用于维护邻居表的,这个消息是广播发送的,但是广播半径=1,也就是其他节点收到了,也不会转发。能够收到的节点,就认为自己在它的邻居范围内,保存在邻居表里面去了。

    如果一个节点连续几次没有收到邻居节点的Link status,那么认为这个邻居节点已经断了,或者不存在了,之后在发数据的时候可能就不通过该邻居节点发了,或者有数据要发给该邻居节点的时候,就需要通过路由发现,先找到这个节点了。

     

    TI的协议栈的软件实现,完全按照标准的ZigBee Specification文档来的。所以你们也可以参考下ZigBee Specification,全文搜索Link Status就可以了。

  • 请问你成功加入了色温调节吗?