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 控制器有一个称为“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
此处介绍的技术并非针对一般 Z-Wave 用户,而是针对 Hub 开发人员和终端设备开发人员。由于这些是低级命令,而不是用户通常可以访问的东西,因此您必须迫使 Hub 开发人员遵循这些建议。
每当在两个节点之间建立关联时,集线器开发人员必须分配返回路线,特别是在包含和分配生命线后立即返回集线器。如果网络拓扑发生变化,例如添加或删除节点时,可能需要将所有路由重新分配给所有节点,以利用新路由或消除不再存在的节点。分配优先级路由时要小心,尤其是在优先级路由中的节点从网络中删除的情况下。如果现在不存在的 NodeID 在 APR 中,该节点将在最终放弃使用 LWR 之前非常努力地使用缺少节点的 APR。这将导致交付命令或状态更新时出现烦人的延迟。Z-Wave 仍会传递信息,
「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」
上一篇:Silicon Labs Zigbee EZSP-UART 入门
下一篇:Z-Wave 射频干扰