【经验】关于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
【经验】EFR32MG21多协议无线SoC的SWO PA03如何复用为普通GPIO口呢?
EFR32MG21 系列是 Silicon Labs 推出的高性价比的多协议无线SoC,用户在进行产品开发时会遇到 GPIO 不够用的情况,此时我们可以通过复用 JTAG 管脚中的 SWO log 输出脚,作为普通 GPIO 使用。本文介绍把 PA03 配置成普通按键的方法。
【经验】创建ZigBee的无线SOC网关工程操作步骤
Silicon Labs公司的EFR32MG系列是针对智能家居市场应用的多协议无线SOC,单芯片支持蓝牙、ZigBee和Thread等协议,尤其是高性价比的系列2产品MG21、MG22,在ZigBee应用方面受到广大工程师的青睐。对于新手来说,使用SOC模式网关是最简单不过,本文就指导大家创建ZigBee的SOC网关工程操作步骤。
SILICON LABS ZIGBEE 无线 Gecko SoC选型表
EFR32MG无线 Gecko SoC 是在 IoT 设备上实现节能多协议连网的理想之选。芯片解决方案结合了 76.8MHz ARM和高性能 2.4GHz 无线电,旨在为 IoT连接应用提供行业领先的节无线 SoC。
产品型号
|
品类
|
Protocol Stack
|
Frequency Band @ Max TX Power(GHz@dBm)
|
Flash(kB)
|
RAM(kB)
|
GPIO(个数)
|
Operating Temperature(℃)
|
Storage Temperature(℃)
|
Pin Count
|
AVDD Supply Voltage(V)
|
EFR32MG12P433F1024GL125-C
|
Gecko Multi-Protocol Wireless SoC
|
Bluetooth LE Zigbee Thread Proprietary, Wi-SUN
|
2.4GHz @ 19dBm, Sub-GHz @ 20dBm
|
1024kB
|
256kB
|
65
|
-40℃~85℃
|
-50℃~150℃
|
BGA125
|
1.8V~3.8V
|
选型表 - SILICON LABS 立即选型
【IC】芯科科技xG26系列产品为多协议无线设备性能树立新标准
SILICON LABS宣布推出新的xG26系列无线片上系统(SoC)和微控制器(MCU),这是迄今为止物联网行业领先企业性能最高的系列产品。该新系列产品包括多协议MG26 SoC、低功耗蓝牙(Bluetooth LE)BG26 SoC和PG26 MCU,旨在满足未来物联网(IoT)的需求,以应对一些要求严苛的新兴应用,如Matter。
EFR32MG14 Mighty Gecko多协议无线SoC系列产品介绍
描述- 该资料详细介绍了EFR32MG14 Mighty Gecko多协议无线SoC系列产品的特性、应用领域和订购信息。该系列SoC适用于物联网设备,具有低功耗、高性能、多协议支持等特点,适用于智能家居、照明、健康与健身、计量、家庭和楼宇自动化及安全等领域。
型号- EFR32MG14P732F256IM32-B,EFR32MG14P733F256IM48-B,EFR32MG14,EFR32MG14P632F256GM48-B,EFR32MG14P632F256GM32-B,EFR32MG14P733F256GM48-B,EFR32MG,EFR32MG14P732F256IM48-B,EFR32XG14P733F256GM48-AR,EFR32MG14P732F256GM32-B,EFR32MG14P732F256GM48-B
【经验】芯科多协议无线SoC EFR32MG21在使用PA端口时的注意事项
最近有用户在使用PA口时发现会出现一些异常,而且主要集中在PA01/PA02/PA03/PA04几个低端口,它们在使用时会出现一些异常的波形或无法控制。本文世强来介绍芯科多协议无线SoC EFR32MG21在使用PA端口时的注意事项。
芯科科技提供Matter一站式开发平台及适用于互联健康与可穿戴设备的超低功耗、多协议无线SoC和模块
Silicon Labs(亦称“芯科科技”)作为Matter和互联健康解决方案的领先供应商,正全力支持及推广健康与保健工作组的项目,通过为开发人员提供完善的Matter一站式开发平台,以及适用于互联健康与可穿戴设备的超低功耗、多协议无线SoC和模块,来加速实现此一愿景。
2.4GHz无线SoC MG21助力开发SONOFF微型Zigbee USB智能适配器支持路由和快充
SILICON LABS近日宣布,其EFR32MG21(MG21)2.4GHz无线SoC获SONOFF公司选用于开发新型“ZBMicro”智能开关。该产品是SONOFF最新的微型Zigbee USB智能适配器,也是智能家居技术领域的开创性产品。从作为USB设备的智能开关到作为Zigbee路由器和支持快速充电的功能,ZBMicro提供了无与伦比的用户体验,提升了现代智能家居的连接性和便利性。
【经验】多协议无线SoC EFR32MG的ZigBee开发之Token使用教程
EFR32MG系列是Silicon Labs公司针对多协议推出的无线SOC,单芯片可以支持Sub-G、蓝牙、Thread和Zigbee多种协议。Token是用来存储非易失性数据的即掉电后也能保存,本文档指导大家如何在EmberZNet PRO应用程序中自定义Token来存储非易失性数据。
【经验】如何配置多协议无线SoC EFR32的SPI外设驱动端口映射?
Silicon Labs公司针对物联网应用推出的多协议无线SoC,客户在开发时通常会通过基于开发板的例程代码来修改成自己的产品功能,本文基于开发板的SPI例程指导如何修改客户自定义的SPI的引脚,从而实现客户自己产品的SPI功能。
最新Matter智能家居参考设计打破生态藩篱—尽在深圳物联网展
随着智能家居市场的兴起,消费者对设备间的无缝互联与高效协同提出了更高要求。在这一情形下,Matter标准应运而生。连接标准联盟推出的Matter是一项全新的智能家居互联标准,旨在打破不同品牌、不同协议间的壁垒,实现智能家居设备的统一管理和互操作。自Matter标准发布以来得到了国内外众多厂商的支持,其功能不断增强,认证产品数量快速增长,覆盖品类更加多样化。本文介绍Matter 1.3带来哪些更新。
【经验】EFR32多协议无线SoC radio configuration私有协议配置
EFR32系列是Silicon Labs公司针对物联网应用推出的多协议无线SoC,覆盖了私有协议、Blue Tooth 、ZigBee、Thread和Z-Wave等无线协议。本文介绍EFR32 radio configuration私有协议配置方法。
【经验】高性能多协议无线SoC Series 2 EFR32MG21作为BLE的几个发送功率设置方法
Silicon Labs 的EFR32MG21是高性能多协议无线SoC Series2,蓝牙协议栈使用的默认发送功率为+8dBm,所有广告包和数据包都将使用此功率级别进行传输(如果设备具有较低的发送功率能力将会降低)。实际发射功率也可由用户配置和实际情况决定。主要包括如下几种功率配置情况
完美结合无线连接、人工智能和安全性的智能家居解决方案
智能家居应用正在快速发展,其中推动智能设备的发展关键因素在于易于使用,而实现这一目标的最佳方法,便是让设备通过人工智能和机器学习技术进行自我思考。本文将为您介绍人工智能将如何强化智能家居设备的功能,以及由芯科科技(Silicon Labs)所推出的解决方案,将如何增强智能家居设备的功能性与安全性。
电子商城
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥27.0929
现货: 90,767
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥44.9692
现货: 12,980
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥38.3724
现货: 6,500
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥15.3301
现货: 2,800
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥19.4183
现货: 2,500
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥24.3427
现货: 2,500
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥38.0003
现货: 1,827
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥38.3724
现货: 520
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥15.3301
现货: 500
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
可定制无线位移传感器量程范围10~600mm,采用了无线传输方式,可远程自动实时检(监)测位移量值,准确度级别(级):0.2、0.5;内置模块:无线传输模块、供电模块;传输距离L(m):可视距离1000 (Zigbee、 LORA)。
最小起订量: 1pcs 提交需求>
可定制4G PCB内置天线的尺寸、连接器种类、电缆类型;支持频率700-960 MHz/1710-2700 MHz;支持协议4G;电压驻波比:860 MHz≦1.5;1710-2700MHz≦2.5。
最小起订量: 500 提交需求>
登录 | 立即注册
提交评论