Z-Wave Mesh 优先路由机制说明

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 命令
1Return Route在 2 个节点之间分配 4 个控制器计算的路由ZW_AssignReturnRoute() (0x46)
2Priority Return Route在 2 个节点之间分配应用程序优先级路由ZW_AssignPriorityRoute() (0x4F)
3Set Priority Route分配从控制器到节点的应用程序优先级路由ZW_SetPriorityRoute() (0x93)
4SUC Return Route将 4 个控制器计算的路由从端节点分配给控制器ZW_AssignSUCReturnRoute() (0x51)
5Priority 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 仍会传递信息,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Smartlabs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值