Z-Wave 是一种无线网状协议,在最新版本中内置了超过 20 年的实际应用经验。虽然其他新的无线协议仍在为其网状网络编写规范,但 Z-Wave 在过去 20 年中学到了一两件事。Z-Wave 是一种源路由协议,其中网络的主控制器跟踪通过网络到/从任何点到任何其他点的最佳路径。

Z-Wave 将通过网格的跳数限制为四跳,以将路由计算绑定到便宜的微处理器可以处理的东西。随着网络规模增长到几十个节点,这四跳迅速爆发成大量的路由组合。诀窍是选择从一个节点到下一个节点的最佳路由集。事实证明,这两年的学习是 Z-Waves 稳健交付的关键所在。

源路由介绍

500 系列应用程序指南第 3.4 节描述了 Z-Wave 中使用的“路由原则”。虽然这是一个 500 系列文档,但 700 系列使用相同的算法并进行了一些小的改进。源路由的关键是主控制器(PC)计算从节点 A 到节点 B 的路由。沿途的每个节点都不需要知道路由的任何信息,它只是遵循主控制器包头中的路由。当一个终端节点需要与主控制器(PC)或任何其他节点通信时,主控制器(PC)会向终端节点发送4条从节点A到节点B的路由。作为最终的备份路由,节点A可以发送一个Explorer Frame询问所有节点如果他们可以帮助将消息发送到节点 B,则在无线电范围内。如果节点能够提供帮助并且消息被传递,则该路由将成为所谓的最后工作路由 (LWR)。

在任何节点中总共存储了 5 条路线,以到达任何其他节点。请注意,仅当一个节点与另一个节点关联时,才会计算和存储路由。由于大多数节点通常只与主控制器(PC) 通信(通过生命线 - 关联组 1 关联),因此这是它存储的唯一一组路由。主控制器具有完整的网络拓扑,但在向节点发送消息时仍遵循相同的基本算法。这五条路线保存在每个目的地的列表中。如果消息成功传递,则该路由将移至列表顶部,称为最后工作路由 (LWR)。LWR 将从现在开始使用,直到由于某种原因失败。RF 通信充满了故障,并且它们偶尔会发生,因此 LWR 经常会随着时间而变化,当 LWR 路由失败时。

应用程序优先级路由 (APR) 是应用程序可以分配给节点以从节点 A 到节点 B 获取消息的特殊路由。它们被称为“应用程序”优先级路由,因为协议从不分配 APR,只有应用程序可以分配 APR。通常,该应用程序是直接与 主控制器(PC)对话的软件 - 一个集线器应用程序,如 SmartThings 或 Hubitat 或许多其他集线器应用程序之一。该协议假设比它更聪明的人(意味着具有大量内存的昂贵的强大 CPU)可以找出比它更好的从 A 到 B 的路线。该协议将 APR 置于列表中 5 条路由的顶部,并始终将其保留在那里。甚至领先于 LWR。虽然这为应用程序提供了强大的功能,但这也意味着应用程序可能会弄乱路由并无意中导致大量延迟。大型 Z-Wave 网络往往具有动态路由,这就是为什么 LWR 一直是路由算法的关键——一旦找到有效的路由,请继续使用它!

我一般不推荐使用 APR,因为路由往往是动态的,通常最好让协议找到最佳路由。但是,添加 Direct Route APR,其中节点将直接与 Hub 对话,而不是通过其他节点进行路由,可以减少延迟。这有时可以解决当集线器可以直接到达时 LWR 被多跳路由卡住的问题。直接路由是传递消息的最快方式,多跳消息通常会对它们产生明显的延迟。当运动传感器检测到暗室中的运动时,速度和低延迟对于保持高WAF 系数和快速打开灯至关重要。

使用 PC 控制器分配 APR

PC 控制器有一个称为“Setup Route”的部分,它有多种设置各种路由的方法。

PCC 可以设置 5 种不同类型的路由:

# 路线 描述 串行 API 命令
1 Return Route 在 2 个节点之间分配 4 个控制器计算的路由 ZW_AssignReturnRoute() (0x46)
2 Priority Return Route 在 2 个节点之间分配应用程序优先级路由 ZW_AssignPriorityRoute() (0x4F)
3 Set Priority Route 分配从控制器到节点的应用程序优先级路由 ZW_SetPriorityRoute() (0x93)
4 SUC Return Route 将 4 个控制器计算的路由从端节点分配给控制器 ZW_AssignSUCReturnRoute() (0x51)
5 Priority SUC Return Route 分配从控制器到端节点的应用程序优先级路由 ZW_AssignPrioritySUCReturnRoute() (0x58)

1. Return Route

Return Route 将四个路由分配给源节点(左)以到达目标节点(右)。每当从一个节点到另一个节点建立关联时,必须有返回路由被分配,以便源知道如何到达目的地。最常见的应用是运动传感器在不通过集线器的情况下打开灯。例如; 一个运动传感器(节点 10)与光(节点 20)相关联,然后调用 ZW_AssignReturnRoute(10,20,SessionID) 将向节点 10 发送四个消息,其中有四个不同的路线到达节点 20。在这种情况下,应用程序没有指定要使用的路由,而是让主控制器计算最好的 4 条路由。如果四个都失败,源节点仍然可以使用 Explorer Frames 来查找路由。在包含过程中,控制器应始终将返回路径分配给端节点返回给 PC,以便端节点具有任何未经请求的消息的路径(或使用下面的 SUC 返回路径)。如果网络拓扑发生显着变化(添加或删除节点),

2. Priority Return Route

优先返回路由用于在两个节点之间分配应用程序优先路由。我建议使用此命令的唯一一次是将优先级路由分配回控制器以不使用路由,假设节点位于控制器的直接范围内。使用此命令很容易弄乱路由,因此一般我不建议使用它。

3. Get/Set Priority Route

获取或设置主控制器用于到达节点的应用程序优先级路由 (APR)。由于节点将使用相同的路由返回 ACK,这将成为端节点的 LWR,因此双方将首先使用此路由。注意这个路由不是在端节点设置的,只有控制器会使用这个路由。如果终端节点需要向控制器发送消息,它将使用该路由(如果它是 LWR),否则它将使用它自己分配的路由之一。请注意,您可以在此命令中设置速度。注意不要盲目地将速度设置为 100kbps。如果路径中的节点较旧或目标是 FLiRS 设备,则它们可能仅支持 40kbps。旧的 100 系列节点只能达到 9.6kbps,但它们仍然可以成为网格的一部分。请注意,如果已分配一个,您可以使用此命令获取优先级路由 (0x92)。

我推荐的设置优先级路由的唯一应用是强制靠近控制器的节点始终首先尝试直接通信。在这种情况下,您将在路线中设置全零的优先路线。这往往会使打开大量灯光的场景快速运行,从而减少爆米花效果。如果具有大量照明节点的场景无法传递到其中一个节点,则 PC 会搜索路由以找到新的路由,路由的路由成为 LWR,控制器将继续使用 LWR,直到该路由失败一些理由。通过分配优先级直接路由,控制器将始终首先尝试直接路由。由于 700 系列设备通常具有出色的 RF,如果控制器与所控制的灯在同一房间或至少在同一楼层,那么直接路线将最大限度地减少爆米花延迟。但是,如果灯光不在直接范围内,它只会延迟一切,让爆米花变得更糟!所以在分配 APR 时要小心!不要让事情变得更糟。

将应用程序优先级路由设置为节点 2 以 100kbps 的速度定向(无跃点)

上面的示例显示了如何将 APR 直接路由分配给节点 2。对此的函数调用将是:ZW_SetPriorityRoute(2, 0, 0, 0, 0, 3); 每次 PC 向节点 2 发送消息时,它总是首先尝试这条直接路由,如果 ACK 失败,那么它将使用 LWR,然后使用它计算的其他返回路由。

APR 到节点 6 到 5->4->3->2 以 100kbps

上面的示例显示了一个极端示例,我们强制路由的最大跳数为四。这是通过大量路由测试产品的便捷方式!一条消息的 zniffer 跟踪如下所示:

节点 1 通过 1->5->4->3->2->6 向节点 6 发送Basic set

对此的函数调用是:ZW_SetPriorityRoute(6, 5, 4, 3, 2, 3); PC 将始终使用该路由向节点 6 发送消息,如果失败,它将尝试 LWR,然后尝试其他返回路由,最后是 Explorer Frame。

4. SUC Return Route

SUC 返回路由是分配返回路由(上面的 1.)的较短版本,它只是将目标节点 ID 设置为 SUC,在大多数情况下是主控制器。

5. Priority SUC Return Route

优先级 SUC 返回路由再次是分配优先级返回路由(以上 2.)的一个简短版本,它自动将目标节点 ID 设置为 SUC。通常简单地使用普通的 Return Route 命令(上面的 1.aan 2.)并将 Destination NodeID 填写为 PC(通常是 SUC)比使用这两个命令更容易。

结论

此处介绍的技术并非针对一般 Z-Wave 用户,而是针对 Hub 开发人员和终端设备开发人员。由于这些是低级命令,而不是用户通常可以访问的东西,因此您必须迫使 Hub 开发人员遵循这些建议。

每当在两个节点之间建立关联时,集线器开发人员必须分配返回路线,特别是在包含和分配生命线后立即返回集线器。如果网络拓扑发生变化,例如添加或删除节点时,可能需要将所有路由重新分配给所有节点,以利用新路由或消除不再存在的节点。分配优先级路由时要小心,尤其是在优先级路由中的节点从网络中删除的情况下。如果现在不存在的 NodeID 在 APR 中,该节点将在最终放弃使用 LWR 之前非常努力地使用缺少节点的 APR。这将导致交付命令或状态更新时出现烦人的延迟。Z-Wave 仍会传递信息,

Z-Wave Mesh 优先路由机制说明相关推荐

  1. asp.net MVC 路由机制 Route

    1:ASP.NET的路由机制主要有两种用途: -->1:匹配请求的Url,将这些请求映射到控制器 -->2:选择一个匹配的路由,构造出一个Url 2:ASP.NET路由机制与URL重写的区 ...

  2. WebApi路由机制详解

    随着前后端分离的大热,WebApi在项目中的作用也是越来越重要,由于公司的原因我之前一直没有机会参与前后端分离的项目,但WebApi还是要学的呀,因为这东西确实很有用,可单独部署.与前端和App交互都 ...

  3. WebApi路由机制详解——看完不会用你打我

    随着前后端分离的大热,WebApi在项目中的作用也是越来越重要,由于公司的原因我之前一直没有机会参与前后端分离的项目,但WebApi还是要学的呀,因为这东西确实很有用,可单独部署.与前端和App交互都 ...

  4. php控制器和路由机制,自制PHP框架之路由与控制器

    我们为什么要使用路由?原因1:一个更漂亮的URI 1.URI的改进 刚刚开始学PHP时,我们一定写过blog.php?id=1之类的URI,使用GET方式获取参数.这样的URI有两个缺点,一是容易被S ...

  5. 【ASP.NET MVC】 路由机制:命名路由

    首先看一下命名路由和没有命名的差别: 命名路由: routes.MapRoute(name: "Test", // Route nameurl: "code/p/{act ...

  6. C#WebApi路由机制详解

    随着前后端分离的大热,WebApi在项目中的作用也是越来越重要,可单独部署.与前端和App交互都很方便,既然有良好的发展趋势,我们当然应该顺势而为--搞懂WebApi!Restful相当于给Http请 ...

  7. ASP.NET MVC3 学习心得------路由机制

    9.1 理解URL URL满足的要求: l 域名易于记忆和拼写 l 简短.易输入 l 可以反应出站点的结构 l 可破解,用户可以通过移除URL的末尾,进而达到更高层次的信息体系结构 l 持久.不能变化 ...

  8. VBS 请求WebAPI接口_C#进阶系列——WebApi 路由机制剖析:你准备好了吗?

    正文 前言:从MVC到WebApi,路由机制一直是伴随着这些技术的一个重要组成部分. 它可以很简单:如果你仅仅只需要会用一些简单的路由,如/Home/Index,那么你只需要配置一个默认路由就能简单搞 ...

  9. 无线自组网AODV路由机制matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 无线自组网按需平面距离向量路由协议(Ad hoc On-Demand Distance Vector ...

最新文章

  1. butter滤波器是iir吗_如何快速设计一个IIR滤波器
  2. 《MINECRAFT我的世界 新手完全攻略(第3版)》一1.4 关于快照版
  3. 恒安嘉新面试题java_面了三个大厂,终于拿到offer,数年Java最经典的面试题总结...
  4. 剑指Offer #13 调整数组顺序使奇数位于偶数前面 | 图文详解
  5. 统计学习方法的三要素
  6. js动态创建两个div 把其中一个添加到另一个的里面_我开发了一个鸿蒙在线教育APP!...
  7. Golang面向API编程-interface(接口)
  8. activity 点击后传递数据给fragment_Fragment 新特性 : Fragment Result API 使用以及源码分析
  9. 逻辑回归 数据_数据科学中的逻辑回归
  10. Sass @at-root 指令用法示例
  11. oracle表空间的创建、修改、删除及一些参数解释
  12. hibernate id生成策略 mysql_Hibernate中ID生成策略
  13. LeetCode(257)——二叉树的所有路径(JavaScript)
  14. 力扣每日一刷--验证回文串
  15. linux安装mysql菜鸟教程_[新手教程]Linux环境部署MYSQL过程
  16. 新概念第二册 Lesson 1 句子 结构 分析
  17. hdu 2079 选课时间(题目已修改,注意读题)
  18. 用FPGA产生正弦信号
  19. 科技感十足五款APP软件,让你的手机不再低调!
  20. Node+Vue实现高校公寓管理系统设计与开发

热门文章

  1. Properties 文件中字符串加了引号
  2. EPC概念、EPC编码、EPC标签
  3. 目标Zookeeper未授权访问(漏洞验证)
  4. UVM TLM FIFO通信 示例
  5. 1 Java语言概述
  6. Oracle 计算两日期间隔月数
  7. STM32(1)跑马灯
  8. trac 经验谈之(3)工作流篇
  9. JS小练习:使用JavaScript实现点击‘上一张’,‘下一张’循环播放图片
  10. 关于上传资源的最新公告