【经验】关于NCP+Host架构接收不到IAS Zone设备状态上报的问题排查
SILICON LABS的EFR32MG21是一款多协议无线SoC ,是实现物联网设备能源友好型多协议、多频段网络的理想选择。笔者在实际项目中,实现了一套基于ZigBee3.0的智能家居系统,协调器模组使用的是EFR32MG21A20。下面就详细介绍项目中遇到的一个隐藏较深的问题以及排查和解决过程。
项目背景:
ZigBee协议在智能家居领域中应用非常广泛,至今已发展到3.0版本。本文背后的项目就是基于ZigBee3.0开发的智能家居产品。
项目概述:
项目方案的功能分层框图如下图所示。网关侧为安卓系统,ZigBee模组使用芯科的EFR32MG21系列,软件采用芯科的NCP+Host架构;设备侧有各种智能设备如开关、窗帘电机、灯光、传感器等,它们都是基于ZigBee3.0标准ZCL规范实现的,其中智能传感器使用了IAS Zone簇。
NCP+Host架构是一个非常实用且高效的架构,其中NCP(Network Co-Processor)位于硬件模组之上,运行着物理层PHY和EmberZNet PRO协议栈;而Host属于应用层,可运行于(遵循POSIX标准的)操作系统中。
IAS Zone是标准ZCL规范中规定的IAS(Intruder Alarm System)簇中的一类,此外还包括IAS ACE(Ancillary Control Equipment)和IAS WD(Warning Device)。
问题描述:
网关绑定IAS Zone设备门磁(下文简称门磁)后,门磁的开关门状态不能上报至App。这是一个很隐蔽的bug,默认情况下需要网关绑定41台以上不同设备才会暴露,因此该bug躲过了常规的开发测试和质量测试环节,而是在小批试产时发现的。
问题排查:
在分析问题时,不要盲目,比较好的方式是沿着数据流进行分析,先定位问题发生的环节,然后从问题环节切入剖析。从功能分层框图可知,设备上报状态需要经由设备(发起者)→网关(NCP→Host→网关应用)→IoT云平台→移动终端App。
分析流程如下:
1)先从发起者开始抓包诊断,抓包工具为Ubiqua和ZigBee USB Dongle,巧合的是,通过空口包可发现设备侧并没有上报状态。但由于该设备是第三方的标准ZigBee3.0设备,无法通过Debug手段进行分析。
2)于是采用替换法继续定位。分别替换不同设备和不同网关,快速定位出了问题环节在网关侧而非设备侧。从问题发生的现象来看,设备跟网关进行ZigBee组网之后,就不再上报状态,因此很可能是协调器(即Host+NCP)导致。
3)考虑到协调器只在组网阶段与设备有交互,因此尝试分析组网过程,看是否有不正常配置导致设备“哑火”。果然,如下图所示,在Enroll过程是有问题的,设备发起Enroll请求后,协调器回复的应答状态却为No Enroll Permit(不允许新Zone设备登记),由于网关应用不参与此过程,因此,可以断定问题节点就位于协调器侧!
问题分析:
在芯科的NCP+Host架构中,对于IAS设备的Enroll过程处理是位于Host的,也就是“功能分层框图”中的Ember Code中,因此,我们或许可以通过分析Host代码来找到问题所在。
通过打印log或者检索Enroll文字,可以快速找到相关函数emberAfIasZoneClusterZoneEnrollRequestCallback,Enroll的状态码就是在该函数中设置的。
从下图中代码片段可以看出,返回错误状态码是因为函数findIasZoneServerByNodeId返回了异常值。
这里需要先了解一下Host对IAS的维护机制,Host使用一个数组emberAfIasZoneClientKnownServers来保存当前已成功登记的IAS设备,其长度由宏EMBER_AF_PLUGIN_IAS_ZONE_CLIENT_MAX_DEVICES进行配置,默认为40(这也是为何只有绑定41个及以上的IAS设备才能引发bug)。该数组是系统运行时的内存镜像,如果深究可以找到其物理存储对象,例如可以存储在运行路径下的iaszone.txt文件中。
函数findIasZoneServerByNodeId返回异常值的原因是在数组中没有找到对应元素。通过查看文件iaszone.txt得知,emberAfIasZoneClientKnownServers数组中很多设备是已经退网了的,也就是说退网机制并不能保证及时清理数组项,这便是问题症结。
解决方法:
解决思路很简单,在每次处理IAS设备退网请求时,清理emberAfIasZoneClientKnownServers中的残留项。
至于在Host代码中何处添加清理逻辑,这是仁者见仁的。笔者是在文件device-table-discovery.c中进行修改的,函数emberAfTrustCenterJoinCallback(注意,此函数声明有多处定义,需要配合Makefile确认实际位置)中的分支EMBER_DEVICE_LEFT即是对退网请求的处理,相关代码片段如下图所示。
于是,在函数newDeviceLeftHandler中添加清理逻辑,代码片段如下图所示。
测试效果:
在下图所示的实例中,左侧为实际绑定了40个IAS设备的数组内容,尝试将编号为37的设备进行退网,则数组中的对应项清空为默认值,如右侧所示。至此,问题就解决了。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由Dexter提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】多协议无线 SOC EFR32MG实现ZigBee的OTA操作指南
EFR32MG系列是Silicon Labs公司推出支持多协议无线 SOC,可以单芯片支持私有协议、BLE5.0、BLE MESH、ZigBee和Thread协议,并且可以单芯片支持Sub-GHz和2.4GHz的频段。由于其超低功耗、高射频性能以及高集成度等特点被广泛应用于智能家居、安防、智能工业等市场。在ZigBee的实际应用中,OTA是必不可少的功能,由于选择的型号不同,配置OT
设计经验 发布时间 : 2018-09-24
【经验】创建ZigBee的无线SOC网关工程操作步骤
Silicon Labs公司的EFR32MG系列是针对智能家居市场应用的多协议无线SOC,单芯片支持蓝牙、ZigBee和Thread等协议,尤其是高性价比的系列2产品MG21、MG22,在ZigBee应用方面受到广大工程师的青睐。对于新手来说,使用SOC模式网关是最简单不过,本文就指导大家创建ZigBee的SOC网关工程操作步骤。
设计经验 发布时间 : 2020-04-09
【经验】EFR32MG21多协议无线SoC的SWO PA03如何复用为普通GPIO口呢?
EFR32MG21 系列是 Silicon Labs 推出的高性价比的多协议无线SoC,用户在进行产品开发时会遇到 GPIO 不够用的情况,此时我们可以通过复用 JTAG 管脚中的 SWO log 输出脚,作为普通 GPIO 使用。本文介绍把 PA03 配置成普通按键的方法。
设计经验 发布时间 : 2020-06-29
7个物联网关键布局-打造客户高忠诚度的智能家居业务
在这篇博客中,Silicon Labs (芯科科技)的Christopher Ince 解释了 ISP 和电信行业引领者要想构建客户忠诚度更高的智能家居业务,就必须考虑的物联网的七个方面。
行业资讯 发布时间 : 2024-09-23
【经验】多协议无线SoC EFR32MG的ZigBee开发之Token使用教程
EFR32MG系列是Silicon Labs公司针对多协议推出的无线SOC,单芯片可以支持Sub-G、蓝牙、Thread和Zigbee多种协议。Token是用来存储非易失性数据的即掉电后也能保存,本文档指导大家如何在EmberZNet PRO应用程序中自定义Token来存储非易失性数据。
设计经验 发布时间 : 2019-02-13
2.4GHz无线SoC MG21助力开发SONOFF微型Zigbee USB智能适配器支持路由和快充
SILICON LABS近日宣布,其EFR32MG21(MG21)2.4GHz无线SoC获SONOFF公司选用于开发新型“ZBMicro”智能开关。该产品是SONOFF最新的微型Zigbee USB智能适配器,也是智能家居技术领域的开创性产品。从作为USB设备的智能开关到作为Zigbee路由器和支持快速充电的功能,ZBMicro提供了无与伦比的用户体验,提升了现代智能家居的连接性和便利性。
原厂动态 发布时间 : 2024-08-17
芯科科技提供Matter一站式开发平台及适用于互联健康与可穿戴设备的超低功耗、多协议无线SoC和模块
Silicon Labs(亦称“芯科科技”)作为Matter和互联健康解决方案的领先供应商,正全力支持及推广健康与保健工作组的项目,通过为开发人员提供完善的Matter一站式开发平台,以及适用于互联健康与可穿戴设备的超低功耗、多协议无线SoC和模块,来加速实现此一愿景。
原厂动态 发布时间 : 2024-03-01
【经验】芯科多协议无线SoC EFR32MG21在使用PA端口时的注意事项
最近有用户在使用PA口时发现会出现一些异常,而且主要集中在PA01/PA02/PA03/PA04几个低端口,它们在使用时会出现一些异常的波形或无法控制。本文世强来介绍芯科多协议无线SoC EFR32MG21在使用PA端口时的注意事项。
设计经验 发布时间 : 2022-09-26
最新Matter智能家居参考设计打破生态藩篱—尽在深圳物联网展
随着智能家居市场的兴起,消费者对设备间的无缝互联与高效协同提出了更高要求。在这一情形下,Matter标准应运而生。连接标准联盟推出的Matter是一项全新的智能家居互联标准,旨在打破不同品牌、不同协议间的壁垒,实现智能家居设备的统一管理和互操作。自Matter标准发布以来得到了国内外众多厂商的支持,其功能不断增强,认证产品数量快速增长,覆盖品类更加多样化。本文介绍Matter 1.3带来哪些更新。
原厂动态 发布时间 : 2024-08-16
芯科科技全新xG26系列记忆体容量和GPIO翻倍,扩展Matter开发支持
SILICON LABS宣布推出新的xG26系列无线片上系统(SoC)和微控制器(MCU),这是迄今为止物联网行业领先企业性能最高的系列产品。该新系列产品包括多协议MG26 SoC、低功耗蓝牙(Bluetooth LE)BG26 SoC和PG26 MCU。这三款产品的闪存和RAM容量都是芯科科技其他多协议产品的两倍,旨在满足未来物联网(IoT)的需求,以应对一些要求严苛的新兴应用,如Matter。
原厂动态 发布时间 : 2024-04-11
【IC】芯科科技MG26多协议SoC功能全面提升,迎合Matter over Thread开发代码增长需求
SILICON LABS近期针对Matter开发的扩展需求发布了MG26多协议SoC新品,通过提升了两倍的闪存和RAM容量以及GPIO,同时添加了人工智能和机器学习(AI/ML)硬件加速器来帮助开发人员满足未来更严苛的Matter物联网应用需求,包括增加对新的设备类型和安全功能增强等的支持。
产品 发布时间 : 2024-04-25
完美结合无线连接、人工智能和安全性的智能家居解决方案
智能家居应用正在快速发展,其中推动智能设备的发展关键因素在于易于使用,而实现这一目标的最佳方法,便是让设备通过人工智能和机器学习技术进行自我思考。本文将为您介绍人工智能将如何强化智能家居设备的功能,以及由芯科科技(Silicon Labs)所推出的解决方案,将如何增强智能家居设备的功能性与安全性。
应用方案 发布时间 : 2024-06-23
【经验】EFR32多协议无线SoC radio configuration私有协议配置
EFR32系列是Silicon Labs公司针对物联网应用推出的多协议无线SoC,覆盖了私有协议、Blue Tooth 、ZigBee、Thread和Z-Wave等无线协议。本文介绍EFR32 radio configuration私有协议配置方法。
设计经验 发布时间 : 2020-03-19
EFR32MG21 Multiprotocol Wireless SoC Family Data Sheet
型号- EFR32MG21A020F512IM32-B,EFR32MG21B020F512IM32-D,EFR32MG21B020F512IM32-B,EFR32MG21A010F512IM32-B,EFR32MG21B010F512IM32-B,EFR32MG21A010F768IM32-D,EFR32MG21B020F1024IM32-B,EFR32MG21B010F1024IM32-B,EFR32MG21B010F768IM32-D,EFR32MG21B010F768IM32-B,EFR32MG21B010F1024IM32-D,EFR32MG21A010F768IM32-B,EFR32MG21B020F1024IM32-D,EFR32MG21B010F512IM32-D,EFR32MG21,EFR32MG21A010F512IM32-D,EFR32MG21B020F768IM32-B,EFR32MG21A020F768IM32-D,EFR32MG21B020F768IM32-D,EFR32MG21A020F768IM32-B,EFR32MG21A020F512IM32-D,EFR32MG21A010F1024IM32-B,EFR32MG21A020F1024IM32-D,EFR32MG21A020F1024IM32-B,EFR32MG21A010F1024IM32-D
芯科科技参加TUYA全球开发者大会深圳站,携手行业拓展AI、智慧能源和商业照明!
Silicon Labs在5月29日参加全球合作伙伴-涂鸦智能于深圳举办的“TUYA全球开发者大会”,芯科科技中国区总经理周巍先生带来题为“安全、绿色、高效的全域物联”的主题演讲,同时芯科科技团队也在现场的生态展区实际展示了最新发布的xG26多协议无线SoC产品家族,以及Matter智能家居网络的参考设计。
原厂动态 发布时间 : 2024-06-21
电子商城
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥27.0929
现货: 90,767
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥44.9692
现货: 14,980
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥15.3301
现货: 7,500
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥38.3724
现货: 6,500
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥19.4183
现货: 6,250
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥38.0003
现货: 4,327
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥15.3301
现货: 2,800
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥24.3427
现货: 2,500
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥38.3724
现货: 520
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
根据用户的接口模块,使用是德示波器及夹具查看实时眼图演示,测试USB/MIPI/DDR/SATA/HDMI协议,支持最高到1.2GHz的实时眼图协议测试。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论