热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Z-StackDeveloper'sGuide-Zigbee&Addressing

ZigbeeFoundamentalDeviceTypeCoordinatorfirstdeviceinnetworkscanR

Zigbee Foundamental

Device Type

  • Coordinator
    • first device in network
    • scan RF env, choose a channel and a network identifier (PAN ID), then start network
    • also optionally to be used to assist in setting up security and application-level bindings
    • once start-up accomplished, Coordinator behaves like a Router node(or even go away)
  • Router
    • allow other devices to join the network
    • multi-hop routing
    • assisting in communication for its childs
    • general expected to be active all the time, have to be mains-powered
  • End-device
    • can sleep and wake up as chooses, battery-powered node
    • memory(RAM) requirements are lower
    • in Z-Stack, device type is usually determined at compile-time with compile options (ZDO-COORDINATOR and RTR_NWK)

Stack Profile

  • set of stack parameters that need to be configured to specific value. comprise the stack profile defiend by ZigBee Alliance
  • All devices in a network must conform to the same stack profile
  • 3 types
    • ZigBee
      • defined by ZigBee Alliance
    • ZigBee Pro
      • defined by ZigBee Alliance
    • network-specific profile
      • self defiend, closed network
      • ZigBee and ZigBee Pro profile device can not interoperate.
  • ID: 0 for network specified profile; 1 for ZigBee; 2 for ZigBee Pro.
    • configured by STACK_PROFILE_ID in nwk_globals.h
  • Normally, a device of 1 profile (ex. ZigBee PRO) joins a network with the same profile. If a router of 1 profile (ex. ZigBee PRO) joins a network with a different profile (ex. ZigBee-2007), it will join as a non-sleeping end device. An end device of 1 profile (ex. ZigBee PRO) will always be an end device in a network with a different profile. (这一段不是太看得懂)

Addressing

  • 2 types:
    • 64 bits IEEE(MAC address or Extended Address)
    • 16 bits network address(logical address or short address)
      • used on local network

Tree Addressing

  • uses a distributed addressing scheme: make sure unique; only has to communicate with its parent
  • defines: ZIgBee-2007 its(5, 20, 6)
    • MAX_DEPTH: max depth of network. coordinator=0,
    • MAX_CHILDREN;
    • MAX_ROUTERS: a subset of MAX_CHILDREN,
      • (MAX_CHILDREN-MAX_ROUTERS)= end devices
  • change tree addressing
    • ensure new value legal
    • ensure to use network-specific profile (change STACK_PROFILE_ID in nwk_globals.c to NETWORK_SPECIFIC), set MAX_DEPTH in nwk_global.s
    • set array’s CskipChldrn and CskipRtrs in nwk_globals.c

Stochastic(Random) Addressing – ZigBee PRO

  • random set a value, uses rest devices to unsure no duplicate
  • joins process
    • receives randomly addr from parent
    • the new network node generates “Device Announce” (contains short and extended addr) to others
    • if short addr confilct, a node(router) send out a broadcast “Network-Status - Address Conflict” to entire network
    • conflicted device change its short addr, then send its own “Device Announce” to check again
  • End device not participate “address conflict”, its parents do it for them
    • parent issue “Rejoin Response” to end device to change end devices short addr.
    • end device issues “Device Announce” to check new addr
  • “Device Announce” recieved, association and binding tables updates, routing table info not updated(new router must be established).

Addressing in Z-stack

  • AF_DataRequest() to send data to device. dest device is a type afAddrType_t(in zComDef.h)
  • defines in Z-Stack Developer’s Guide Sec 3.3 P10
  • send type
    • unicast: use Addr16Bit, dest addr is in packet
    • Indirect: use AddrNotPresent, dest addr is not specified. dest addr is looked up from “binding table”(in stack of sending device): its called Souce binding
    • when binding table looking up, it treated as a unicast packet.
  • Broadcast: use AddrBroadcast, dest addr sets as:
    • NWK_BROADCAST_SHORTADDR_DEVALL (0xFFFF) – to all devices(including sleeping one)
      • sleeping one, hold in its parents until wake up or time out(NWK_INDIRECT_MSG_TIMEOUT in f8wConfig.cfg)
    • NWK_BROADCAST_SHORTADDR_DEVRXON (0xFFFD) all devices when idle (RXONWHENIDLE). all devices except sleeping devices
    • NWK_BROADCAST_SHORTADDR_DEVZCZR (0xFFFC). to all routers(includes coordinator)
  • Group Addressing
    • send packet to a group of device: addr mode is afAddrGroup, addr.shortAddr=group identifier
    • group defination: aps_AddGroup() in the Z-Stack API doc
    • group used in conjunction with indirect addressing. dest in binding table can be unicast/group addr.

Addressing functions

  • NLME_GetShortAddr()
  • NLME_GetExtAddr()
  • NLME_GetCoordShortAddr() : get its parents addr
  • NLME_GetCoordExtAddr()

推荐阅读
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 该问题可能由守护进程配置不当引起,例如未识别的JVM选项或内存分配不足。建议检查并调整JVM参数,确保为对象堆预留足够的内存空间(至少1572864KB)。此外,还可以优化应用程序的内存使用,减少不必要的内存消耗。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
author-avatar
nikechen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有