ZDO层的优化
另请教,在多个网络并存的情况下,节点怎么判断自己要加入哪个协调器,协调器的PANID是随机的
PANID一定要随机,不能写死,如果在程序里面写死,协调器会跳到另一个PANID。我以前搞过别人破坏,在截获别人PANID后,我启动了一个与之相同PANID的协调器,他的节点全部加到我的协调器里面来了。
ZMAC_CB.C里面有个事件MAC_MLME_ASSOCIATE_IND,协调器可以看到入网申请的节点物理地址。
能大概解释一下组网的过程么,从协调器开始还是子节点发起
在协调器端输入节点的物理地址,我们的节点传感器全部用杰士邦包死的,不留任何接口。
"在协调器端输入节点的物理地址,我们的节点传感器全部用杰士邦包死的,不留任何接口"
楼主是做什么设备的,协调器上设置白名单,是可以区分哪个节点可以加入,可是这样做岂不是操作很麻烦。
节点传感器封死了,以后程序升级怎么办?考虑过OTA吗?
您有什么好的办法么?请指教
指教谈不上,我采取的办法是固定PANID,每个网络的设备的PANID设置成相同,协调器只接收属于该网络的设备。OTA功能正在实验中。
这样的话不是每组网都要分开下载程序,有办法通过跳线或其他什么指定PANID么
程序是一样的,PANID等网络参数可以通过像你所说的用跳线来选择的方式,我是采用的串口设置来实现的。
TI例子里是在那个文件参数里面配置的?能给个例子么?
找到了,在cfg文件,我想说的是,那是个宏定义,我应该修改那个变量呢
/* Define the default PAN ID.
*
* Setting this to a value other than 0xFFFF causes
* ZDO_COORD to use this value as its PAN ID and
* Routers and end devices to join PAN with this ID
*/
-DZDAPP_CONFIG_PAN_ID=0xFFFF
ZDAPP_CONFIG_PAN_ID这个数值在程序启动时赋值给了变量zgConfigPANID :
uint16 zgConfigPANID = ZDAPP_CONFIG_PAN_ID;
利用串口通信修改变量zgConfigPANID ,并保存在NV区中,以后程序每次启动都从NV区中读这个参数就可以了。
我们的产品,要考虑批量生产的。而且生产线上的工人和最终用户的文化程度都不高。录入白名单的方式很简单,贴一张写有IEEE地址的RFID就可以了。
你这种方法容易受到攻击,别人也设置一个和你PANID相同的协调器,你的协调器就没法用了。
你说的攻击的情况确实有可能发生,但是多数情况下是用户使用不当造成的,比如设置了两个相同网络参数的设备。但是只要使用好了,还没有人闲着没事来攻击你的设备,毕竟不是用在什么特关键的场合。
比较感兴趣您说的设置白名单的方法,不知道你的协调器端是如何操作的,按键录入?还是有上位机软件?另外,你说的IEEE地址是芯片中的Primary地址吗,如果是的话,是不是设备生产出来后还需要手动读出设备的这个IEEE地址?
协调器有串口,接一个读卡器。
修改烧写软件,在烧写hex的时候把物理地址读出来,写到RFID卡上面。
你那种又是怎么去设置PANID的?PANID不可靠,用Ext PANID可靠。我们先前用过这种方法,不过缺点是节点上面要保留串口或者其它输入口,一不方便生产,二不方便使用。
不太了解你的应用环境,所以不好评论你的读卡器的使用方法。
对于你说的extendedPANID,这个我没有用过,在协议栈中搜索了一下,发现也是一个8字节的数组,感觉跟设备的IEEE地址类似,这个是指的是Zigbee网络中协调器的IEEE地址吗?新加入网络的设备会判断协调器的IEEE地址是否是自己已设定的extendedPANID数值,是则加入,不是则拒绝加入?是这样子的吗?请指教。
节点设置参数的问题,我们采用了串口数据传输的方式,考虑采用无线通信的方式,这个正在实验中,不知你有什么好的办法没有?
我们是做消费电子产品,可能和你实验室产品不一样。
另外我们要为售后服务考虑,我们不会向负责售后服务的代理商提供源代码,也不会派出程序员去用户那里(用户可能是阿拉胡阿克吧)
学习
学习
这个有TI 官方的更新吗
学习学习
学习了,谢谢分享