微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZLL做冷暖灯

ZLL做冷暖灯

时间:10-02 整理:3721RD 点击:

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秒都会广播一条命令,请问这条命令是哪个层哪个任务广播的,有什么作用呢

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

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

 

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top