【经验】Z3GatewayHost Mqtt 如何正确处理 string 类型上报数据?

2018-12-31 世强
SoC,多协议SoC芯片,EFR32MG,Silicon Labs SoC,多协议SoC芯片,EFR32MG,Silicon Labs SoC,多协议SoC芯片,EFR32MG,Silicon Labs SoC,多协议SoC芯片,EFR32MG,Silicon Labs

EFR32MG多协议SoC芯片 SILICON LABS 专门针对 IOT 推出的 ZigBee 方案,高达19.5dbm的发射功率,-102.7dbm的接收灵敏度,在业界内拥有最佳的RF射频性能,具有最全的Zigbee网络协议,被广泛应用在智能家居,工业控制等行业。


在开发 Zigbee Gateway Mqtt时,Gateway 需要将所有设备上报数据给到 Server 端,在现有的 Z3HostGatewayMqtt 工程中没有正确的处理 String Characteristic 类型的数据上报。

 

bool emberAfReportAttributesCallback(EmberAfClusterId clusterId,

                                     uint8_t * buffer,

                                     uint16_t bufLen)

{

    EmberEUI64 nodeEui64;

    EmberNodeId nodeId = emberAfCurrentCommand()->source;

    emberAfDeviceTableGetEui64FromNodeId(nodeId, nodeEui64);

    uint8_t * bufferTemp;

    uint8_t * bufferPtr = buffer;

    uint8_t i, bufferSize;

 

    if (bufLen == 0)

    {

        emberAfAppPrintln("Report attributes callback: zero length buffer");

        return false;

    }

 

    // Buffer [0] is low bits, Buffer [1] is high bits, Buffer [2] is dataType,

    // Buffer [3+] is data

    emberAfAppPrintln("Reporting attributes for cluster: 0x%2x", clusterId);

    for (i = 0; i < bufLen; )

    {

        // Get Length of Attribute Buffer

        bufferSize = emberAfGetDataSize(

                         bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_TYPE]);

         //add by sven

#define ATTRIBUTE_BUFFER_REPORT_DATA_LENGTH 3

        if(bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_TYPE] == 0x42)        // character string

        {

            bufferSize = bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_LENGTH];

        }

 

        // Add 3 bytes for header size

        bufferSize += 3;

 

        //Copy buffer to attributeBufferI

        bufferTemp = (uint8_t*)malloc(bufferSize);

        memcpy(bufferTemp, bufferPtr, bufferSize);

 

        //add by sven

        if(bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_TYPE] == 0x42)       // character string

        {

            memcpy(bufferTemp+3, bufferPtr+ATTRIBUTE_BUFFER_REPORT_DATA_LENGTH+1, bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_LENGTH]);

        }

 

        // Set i to point to:

        // [attrLSB,attrMSB,dataT,buffer,nAttrLSB,nAttrMSB,nextDataT,nextBuffer]

        // [       ,       ,     , ..n  ,   X    ,        ,         ,  ..n     ]

        bufferPtr = bufferPtr + bufferSize;

        i = i + bufferSize;

 

        //add by sven

        if(bufferPtr[-bufferSize + ATTRIBUTE_BUFFER_REPORT_DATA_TYPE ] == 0x42) // character string

        {

            bufferPtr = bufferPtr +1;

            i = i +1;

        }

 

        emberAfAppPrintln("Reported attribute: 0x%02X%02X, Type: %02X",

                          bufferTemp[ATTRIBUTE_BUFFER_ATTRIBUTEID_HIGH_BITS],

                          bufferTemp[ATTRIBUTE_BUFFER_ATTRIBUTEID_LOW_BITS],

                          bufferTemp[ATTRIBUTE_BUFFER_REPORT_DATA_TYPE]);

 

        publishMqttAttributeReport(nodeEui64,

                                   clusterId,

                                   bufferTemp,

                                   bufferSize);

        free(bufferTemp);

    }

 

    return false;

}

修改过的处理函数增加了对 string 类型的判断及长度截取

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由xiaoyangfengle提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

【经验】ZigBee 3.0 网络 : 使用由install code 生成的 link key 入网

在ZigBee 3.0之前,install code只用于Smart Energy网络。现在,为了提升 Zigbee 的安全性,所有的ZigBee 3.0设备都需要支持install code,但是否在网络中使用由 Trust Center 决定。本文将讲述使用 install code 的方式把 Z3 Light 加入到 Z3 Gateway 中。

设计经验    发布时间 : 2018-10-12

【经验】多协议无线 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

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

芯科科技多协议无线SoC助力控客开发智能家居解决方案,为杭州亚运村打造智能舒适、便捷安全的生活体验

SILICON LABS MG21多协议无线SoC获杭州控客信息技术有限公司采用于开发全套智能家居解决方案,并提供予杭州亚运会媒体村打造智能、舒适、便捷、安全的生活体验。控客于近期采用了芯科科技MG21多协议无线片上系统(SoC)的控客智能家居解决方案于先前落地杭州亚运会媒体村,用创新性设计和高品质产品,为入住人员提供了智能、舒适、便捷、安全的生活体验。

应用方案    发布时间 : 2023-12-07

【经验】如何使用railtest测量EFR32MG Zigbee SoC性能?

许多公司正在调研或已经研发Silicon Labs的EFR32MG Zigbee SoC的Zigbee方案,那么怎么来进行EFR32MG的性能测量呢?本文介绍使用railtest固件测量EFR32MG性能指标的方法。

设计经验    发布时间 : 2020-04-02

【经验】多协议无线SoC EFR32MG的ZigBee开发之Token使用教程

EFR32MG系列是Silicon Labs公司针对多协议推出的无线SOC,单芯片可以支持Sub-G、蓝牙、Thread和Zigbee多种协议。Token是用来存储非易失性数据的即掉电后也能保存,本文档指导大家如何在EmberZNet PRO应用程序中自定义Token来存储非易失性数据。

设计经验    发布时间 : 2019-02-13

Silicon Labs(芯科科技) Wi-Fi 芯片和模块选型指南

目录- Wi-Fi SoC and Module Selector Guide    Wi-Fi Lineup    Wi-Fi Development Kits    IoT Wi-Fi Technology Leader    Wi-Fi Applications    Company Profile   

型号- SLEXP8022A,SIWX915,RS9116,WF200,SIWX917,RS9116X-DB-EVK1,RS9116X-SB-EVK1,RS9116X-SB-EVK2

选型指南  -  SILICON LABS  - 2023/10/3 PDF 英文 下载

【经验】如何创建 Z3GatewayHost 网关?

EFR32MG多协议SoC芯片是 Silicon Labs 专门针对 IOT 推出的 ZigBee 方案,高达19.5dbm的发射功率,-102.7dbm的接收灵敏度,在业界内拥有最佳的RF射频性能,具有最全的Zigbee网络协议,被广泛应用在智能家居,工业控制等行业。在开发 Zigbee 产品时网关是重要的一个部分,本文详细介绍了创建一个 GatewayHost 的方法。

设计经验    发布时间 : 2019-01-01

芯科科技BG27/MG27 SoC系列产品荣获2023年维科杯芯片技术突破奖,专为尺寸极小的物联网设备设计

Silicon Labs的BG27蓝牙SoC以及支持Zigbee及其他专有协议的MG27 SoC系列产品获颁“维科杯OFweek 2023物联网行业创新技术产品奖-芯片技术突破奖殊荣”。

原厂动态    发布时间 : 2023-09-12

【经验】教你如何修改EFR32MG系列SOC ZigBee工程的CCA阈值

Silicon Labs公司的EFR32MG系列SOC单芯片已被广泛应用于智能家居市场产品中。对于ZigBee协议栈,无论单播还是广播,数据包在发送之前MAC层会检测CCA(Clear Channel Assessment ),如果检测到接收信号强度低于阈值,数据包就不发送。因此需要根据实际情况来设置合理的CCA阈值,本文就指导大家来设置EFR32MG系列SOC的CCA阈值。

设计经验    发布时间 : 2019-01-31

【经验】如何使用树莓派开发 ZigBee 网关?

在 Zigbee 系统中,网关是一个非常重要的设备,为了能容纳更大的网络及更复杂的应用逻辑,一个强大的主机是不可或缺的,树莓派就是这样一个强大的开发平台,非常适合用来构建 host application,这个文章将描述如何设置树莓派来开发 Silicon Lbas EmberZNet ZigBee Gateway。

设计经验    发布时间 : 2018-10-12

芯科小型、低功耗无线SoC EFR32MG22专为Zigbee Green Power优化,有助于实现能量收集参考设计

EFR32MG22(MG22)系列产品是专为Zigbee Green Power应用而优化的小型、低功耗无线SoC平台,扩展了Silicon Labs的Zigbee产品组合。MG22 SoC是使用纽扣电池或通过能量收集供电的Zigbee设备的理想选择,其目标应用包括智能家居传感器、照明控制以及楼宇和工业自动化等。

原厂动态    发布时间 : 2023-05-28

【经验】如何在Gateway Soc (internal flash)中实现 Ota Server?

EFR32MG多协议SoC芯片是Silicon Labs专门针对 IOT 推出的ZigBee方案,高达19.5dbm的发射功率,-102.7dbm的接收灵敏度,在业界内拥有最佳的RF射频性能,具有最全的Zigbee网络协议,被广泛应用在智能家居,工业控制等行业。本文介绍在开发 Zigbee Gateway 时如何在Gateway Soc (internal flash)中实现 Ota Server

设计经验    发布时间 : 2019-01-03

展开更多

电子商城

查看更多

品牌:SILICON LABS

品类:Mighty Gecko Multi-Protocol Wireless SoC

价格:¥27.0929

现货: 98,034

品牌:SILICON LABS

品类:Wireless Gecko SoC

价格:¥8.1764

现货: 109,878

品牌:SILICON LABS

品类:Wireless SoC

价格:¥9.1982

现货: 88,300

品牌:SILICON LABS

品类:Wireless SoC

价格:¥21.5556

现货: 83,597

品牌:SILICON LABS

品类:Wireless SoC

价格:¥19.9760

现货: 74,309

品牌:SILICON LABS

品类:Wireless Gecko SoC

价格:¥10.4994

现货: 66,784

品牌:SILICON LABS

品类:Wireless Gecko SoC

价格:¥11.5212

现货: 59,367

品牌:SILICON LABS

品类:Wireless SoC

价格:¥15.0516

现货: 29,122

品牌:SILICON LABS

品类:Wireless SoC

价格:¥20.4401

现货: 24,827

品牌:SILICON LABS

品类:Wireless SoC

价格:¥25.9222

现货: 24,433

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:SILICON LABS

品类:Wireless SoC

价格:¥15.1400

现货:1,455

品牌:海思

品类:IC

价格:¥61.6424

现货:39,900

品牌:海思

品类:IC

价格:¥60.3549

现货:6,500

品牌:海思

品类:IC

价格:¥63.7125

现货:3,425

品牌:地平线

品类:SOC

价格:¥81.0470

现货:1,804

品牌:CellWise

品类:电源管理芯片

价格:¥1.5840

现货:1,783

品牌:君正

品类:SOC

价格:¥23.3900

现货:1,268

品牌:TE connectivity

品类:汽车连接器

价格:¥35.8800

现货:940

品牌:联咏

品类:IC

价格:¥34.4000

现货:907

品牌:SKYWORKS

品类:Dual-Channel Analog Interface ProSLIC®

价格:¥18.6975

现货:240

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

物联网天线方案设计/虚拟天线芯片方案设计

Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。

最小起订量: 2500 提交需求>

蓝牙资格认证(BQB)

提供蓝牙BLE芯片协议、蓝牙模块、蓝牙成品测试认证服务;测试内容分Host主机层,Controller控制器层,Profile应用层测试。支持到场/视频直播测试,资深专家全程指导。

实验室地址: 深圳 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面