-
传感网sensor network
-
Sensor(收集数据)
-
MobileSensor
- SENSOR_SELECT_SINK
set up a binding to the Sink
- SleepSensor
- common Sensor
-
Sink(存储数据)
- multicast message:SINK_ADVERTISE
向周围sensor广播自己的地址:EUI64
-
ST实例逻辑
-
Ember Handler
-
emberMessageSentHandler
- 消息发送完后可通过它检查是否成功
-
emberIncomingMessageHandler
-
据ClusterID划分
- MSG_SINK_ADVERTISE
- MSG_SENSOR_SELECT_SINK
- MSG_SINK_READY
- MSG_SINK_QUERY
- EmberNodeId emberGetSender(void);
获取发送者的node id
- MSG_DATA
- MSG_MULTICAST_HELLO
- emberStackStatusHandler
- emberSwitchNetworkKeyHandler
-
JIT(just in time)相关
-
appAddJitForAllChildren
但父节点收到的消息需要转为jit消息时
-
1)createAndStoreJitMessage
- 被appAddJitForAllChildren调用
父节点收到后处理
- 2)emberSetMessageFlag
-
emberPollHandler
子节点向父节点poll时,父节点调用
- appSendJitToChild
给指定编号NodeID发送Jit消息
- sleep sensor睡醒后
appPoll
-
Zigbee概念
-
APS:应用支持子层
(网络层NWK和应用层APL间的接口)
- APSDE数据实体
- APSME管理实体
-
APS帧格式
-
APS头:帧控制,寻址信息
- APDU 帧格式
- 字节:1
- 0/1
- 0/2
- 0/2
- 0/2
- 0/1
- 1
- 变量
- 0/变量
- 子主题 9
- 名称:帧控制
- 目标地址
- 组地址
- Cluster标识符
- Profile标识符
- 源端点
- APS计数器
- 扩展头
- 帧负载
- Topic
- APS负载
- 帧头--帧控制字节
- 位
- 0-1
- 2-3
- 4
- 5
- 6
- 7
- 含义
- 帧类型
00:数据
01:命令
10:确认
11:保留
- 传送模式
00:正常单播传送
01:间接寻址
10:广播
11:组寻址
- ACK.格式
表明帧头中寻址域是否存在
数据帧设置0,命令帧设置为1
- 安全
- ACK.请求
1:接收者需要发送ACK确认帧
0:不需要确认
- 扩展头存在
1:包含扩展头
0:不包含
- 目标地址:
目标端点域
(组寻址模式时无效)
- 如果是0x00:则送到zigbee设备的ZDO端点
- 0x01~0xf0送到运行在该端点上的一个应用程序
- 0xff,送到除0x00端点外的所有活动端点
- 组地址域:长度16位
仅当使用组寻址时有效,
目标端点不存在
- 将传送给所有端点
- APS负载,长度可变
-
应用架构
- 最多240个应用对象
0:ZDO数据接口
255:给所有应用对象做广播数据接口
241~254 保留
-
应用Profile
由ZigBeeAlliance定义
- 应用的分类:
* Smart Energy
* Home Automation
* Telecom Applications
* Commercial Building Automation
* Personal Home and Hospital Care
- 子主题 4
-
协调器Coordinator
-
创建网络
-
1)USE_HARDCODED_NETWORK_SETTINGS(参数预先设定好了)
- #define APP_CHANNEL (26) //0x1A
#define APP_PANID (0x01ff)
#define APP_EXTENDED_PANID {'s','e','n','s','o','r',0,0}
#define APP_POWER (3)
- 2)SINK_USE_SCAN_UTILS(通过扫描信道强弱,动态 获取可用的信道和网络标号)
- 安全设定
sensorCommonSetupSecurity()
-
地址表管理
- SINK_ADDRESS_TABLE
- SINK_TRUST_CENTER_ADDRESS_CACHE
- (sink功能)接收到信息后更新地址表中的记录,对长时间无响应的节点删除
-
安全
- 设置networkKey
- 设置preconfiguredLinkKey
-
每30秒切换一次密钥
- int8u sendNetworkKeyUpdateTimer;
#define SENSORAPP_NETWORK_KEY_UPDATE_TIME 120
- 作为sink时,广播地址(并非协调器的作用)
-
Multicast
- addMulticastGroup
- sendMulticastHello
- 子主题 3
- sinkAdvertise
- handleSensorSelectSink
- findFreeAddressTableLocation
- sinkAppSwitchNetworkKey
-
路由Router
- 子主题 1
-
终端EndDevice
- SleepSensor
- MobileSensor