ZLL做冷暖灯
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就可以了。