0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机智云SDK Logs分析教程

Dtzl_SCAnalytic 来源:机智云开发者 作者:机智云开发者 2021-07-27 11:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、概述

机智云SDK日志中包含了大量的信息,极大的方便开发者定位问题,但很多开发者都看不懂这些日志,因此该份教程讲述如何从SDK的日志中找到自己需要的信息以及定位问题。

该份文档的阅读前提是开发者已经具备获取Android日志的条件和能力,并且已经熟悉机智云SDK相关使用方法。如不具备这些前提,请先参考网络上的相关资料。

二、设置SDK级别

要查看SDK的日志,首先需要调用SDK设置日志级别的方法,将其设为所有级别,以及设置在后台输出二进制数据。

调用方法:

XPGWifiSDK.setLogLevel(XPGWifiLogLevel logLevel, String logFile, boolean bPrintDataInDebug);

参数说明:

f980da5a-e41f-11eb-a97a-12bb97331649.png

三、过滤日志

SDK的日志主要有两个“TAG”,一个是“xpgc”,一个是“XPGWifiSDK”。一般情况下,LogCat的Log Tag 设置为“xpg”即可。

如图:

f9d813f6-e41f-11eb-a97a-12bb97331649.png

“xpgc”代表该日志属于SDK底层逻辑所打印的日志。

“XPGWifiSDK”代表该日志属于SDK外部公共接口所打印的日志。

如图:

fa282210-e41f-11eb-a97a-12bb97331649.png

四、日志分析

SDK在执行每一步操作的时候,都会打印出相关信息,具体信息课参考如下说明:

云端请求

SDK里包含的大量的云端交互操作,其中与云端交互部分,会以“W”(警告)级别打印,在Eclipse的Log Cat中会以橘黄色来标记。如下图:

fa5f783c-e41f-11eb-a97a-12bb97331649.png

该日志包含了请求的相关信息,如请求的Header以及Body。

其中Header包含了AppID以及Token等比较重要的信息,App发布的时候请注意关闭日志输出。

SDK内部使用的网络接口都是使用机智云OpenAPI的相关接口,接口的详情可参考官网的文档。

根据该日志,可以看出发出自己的接口调用是否正确,例如缺少token或者缺少AppID等;同时也可以判断自己的网络质量,是否发起请求以后长时间未收到云端回复。

一些常见的问题分析会在该文档后面再详细描述。

云端响应

SDK发起请求后,在网络正常的情况下,SDK会收到云端的响应,响应结果也会打印在日志中。如图:

fa9980e0-e41f-11eb-a97a-12bb97331649.png

具体的reponse会以“W”级别标出。上图是获取账号下绑定的设备的请求响应。一般情况下,开发者无需理会具体的网络请求和响应,SDK会自行处理并作出回调。只有在网络情况不好的情况下,开发者才需要从日志中分析网络请求是否正常。

发现设备

SDK发现本地设备的过程实际上是UDP的收发过程。SDK会往路由器发送一个UDP广播,烧写了机智云模块的设备在收到改广播后,会回复一个响应帧到SDK端。具体的过程可由下图看出来:

fae376e6-e41f-11eb-a97a-12bb97331649.png

“xpgBroadcast(),port = 12414”该日志说明SDK向路由器的12414端口发送了一个UDP广播,具体的指令内容可参考协议文档。如果发送成功,SDK会打印“udp package send success”。

当设备收到了指定的UDP广播以后,会回复相关响应帧,该响应帧包含了设备的Productkey、Did、IP地址、MAC地址等信息。具体的指令内容可参考协议文档。

SDK收到设备的回复以后,会回调didDiscoverd接口。

从该日志可以看出SDK发出广播后,是否有设备回复。如果没有收到回复,说明有几点原因:

本地没有设备

路由器不支持UDP广播

可根据实际情况定位问题和解决问题。

小循环登录设备

小循环登录即是手机与设备在同一路由器内,通过设备IP建立TCP连接。登录的过程如下图:

fb00590a-e41f-11eb-a97a-12bb97331649.png

由图中的“Connected to server 192.168.1.102:12416”可以看出SDK发起的是小循环登录,连接的是设备的IP地址,端口号为12416。

登录成功后,SDK内部会打印“OnLogin(int): 0”,返回值0说明登录成功了,会回调“didLogin”接口通知UI进行处理。

通过该日志,可以判断设备是进行大循环还是小循环连接,并且可以看出连接成功或者失败,以及失败的原因。具体失败的原因会在本文档后面进一步描述。

大循环登录设备

大循环登录即是手机与设备不在同一路由器(网段)内,通过机智云云端建立MQTT连接。登录的过程如下图:

fb13391c-e41f-11eb-a97a-12bb97331649.png

由图中的“Connected to server m2m.gizwits.com:1883”可以看出SDK发起的是大循环登录,连接的是机智云云端域名地址,端口号为1883。

登录成功后,SDK内部会打印“OnLogin(int): 0”,返回值0说明登录成功了,会回调“didLogin”接口通知UI进行处理。

通过该日志,可以判断设备是进行大循环还是小循环连接,并且可以看出连接成功或者失败,以及失败的原因。具体失败的原因会在本文档后面进一步描述。

小循环收发指令

小循环发送指令通过TCP/IP进行收发。开发者调用SDK方法,传入JSON格式的指令,由SDK内部解析成为二进制指令,并发送给设备。设备收到后做出状态改变,按照机智云串口协议要求,把自己的状态用二进制指令返回,SDK收到后再封装为JSON格式,回调给相关接口。详见下图:

fb25c686-e41f-11eb-a97a-12bb97331649.png

其中“writePi()”说明是通过IP的方式发送的指令,也即是小循环发送。

通过该日志,可以看出二进制指令是否按照协议文档收发,是否能正常解析为JSON格式,解析的JSON格式是否正确。具体的分析过程会在本文档后面进一步描述。

大循环收发指令

小循环发送指令通过MQTT方式进行收发。开发者调用SDK方法,传入JSON格式的指令,由SDK内部解析成为二进制指令,并发送给设备。设备收到后做出状态改变,按照机智云串口协议要求,把自己的状态用二进制指令返回,SDK收到后再封装为JSON格式,回调给相关接口。详见下图:

fb7a30c2-e41f-11eb-a97a-12bb97331649.png

其中“writePm()”说明是通过MQTT的方式发送的指令,也即是大循环发送。

“readPm()”说明时通过MQTT的方式接收到指令,也就是大循环接收。

通过该日志,可以看出二进制指令是否按照协议文档收发,是否能正常解析为JSON格式,解析的JSON格式是否正确。具体的分析过程会在本文档后面进一步描述。

收发指令详解

SDK收发指令的过程,均在SDK中打印显示,App的调试,也可以从日志中获得大量很有用的信息。一个收发指令的过程如下图:

fd0da496-e41f-11eb-a97a-12bb97331649.png

一次指令的收发,具体经过了以下几个步骤:

1.调用SDK的“write()”方法发送JSON指令

如上图日志中的JSON指令,包含了“fan_speed”这个数据点。通过该日志,可以看出发送的JSON格式是否正确,数据点是否正确,数据点的key跟value是不是目标数据。

2.SDK把JSON指令解析为原始业务指令

“writeP0()”代表了SDK把JSON格式的指令解析为二进制指令,下面会打印出字节格式的指令。

3.SDK把二进制指令小循环发往设备或大循环发往云端

“writePm()”代表了SDK加入了机智云协议的包头后把指令发往云端。

如果是“writePi()”,则说明是小循环发送指令。

通过该日志,可以看出当前发送的指令属于大循环还是属于小循环。

4.SDK接收到本地或云端的二进制指令

“readPm()”代表了SDK接收到了云端返回的二进制指令,如果是”readPi()”,则说明SDK接收到了本地设备返回的二进制指令。

通过该日志,可以看出当前接收的指令属于大循环还是属于小循环。

5.SDK把二进制指令去除包头后变为原始业务指令

如果SDK接收到了云端的指令,会去除机智云协议的包头,保留原始的字节业务指令并打印在控制台中。

6.SDK把原始业务指令封装为JSON格式

SDK获取到二进制指令后会根据自动加载的配置文件解析为JSON格式指令。如上图的“receive data”中打印出的JSON指令。通过该日志,可以看出解析是否正常以及具体每个数据点的key和value。

7.SDK把JSON格式指令通过接口回调给UI层

SDK解析结束后会通过回调接口把数据回调到UI层,TAG为“XPGWiFiSDK”,接口名一般是”did”开头,例如图中的”didReceiveData”。

通过该日志可以看出SDK是否已经成功调用了回调接口,以及调用的回调接口具体的接口名。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1093

    浏览量

    51182

原文标题:Android logs 分析 :机智云SDK Logs 分析教程

文章出处:【微信号:SCAnalyticsPlatform,微信公众号:IBM大数据技术团队】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32项目分享:智能语音台灯(机智)

    01—项目简介1.功能详解STM32智能语音台灯(机智)功能如下:STM32F103C8T6单片机作为主控单元按键切换模式,支持自
    的头像 发表于 07-24 18:03 1037次阅读
    STM32项目分享:智能语音台灯(<b class='flag-5'>机智</b><b class='flag-5'>云</b>)

    机智配网教程 第二期:生成MCU代码包与调试

    在上一期中,我们介绍了机智GAgent固件的烧录过程,并在测试中完成了机智开发者账号的注册及数据点的创建。接下来,我将继续为大家讲解如何生成MCU代码包。数据点创建登录
    的头像 发表于 06-28 10:02 601次阅读
    <b class='flag-5'>机智</b><b class='flag-5'>云</b>配网教程 第二期:生成MCU代码包与调试

    机智配网教程第一期:GAgent固件烧录与调试指南

    前言本文主要总结了我在使用机智的过程中积累的经验,特别是针对初学者,旨在帮助大家少走弯路。
    的头像 发表于 06-27 19:06 699次阅读
    <b class='flag-5'>机智</b><b class='flag-5'>云</b>配网教程第一期:GAgent固件烧录与调试指南

    机智亮相字节豆包AIoT开源生态沙龙

    近日,字节跳动火山引擎2025原动力大会在北京隆重召开,同期由机智、火山引擎、扣子发起,联合CSDN、GitCode、广和通、奕斯伟、爱湾学院共同参与的“开源智联·具身同行”字节豆包AIoT开源
    的头像 发表于 06-16 09:50 746次阅读

    开源智联·具身同行:机智推出基于豆包的 OpenEmbodied AI技术、产品及开源方案

    6月11日机智携手火山引擎、扣子发起,联合CSDN、GitCode、广和通、奕斯伟、爱湾学院举办的“开源智联·具身同行”字节豆包AIoT开源生态沙龙圆满成功,正式推出基于豆包
    的头像 发表于 06-13 19:19 716次阅读
    开源智联·具身同行:<b class='flag-5'>机智</b><b class='flag-5'>云</b>推出基于豆包的 OpenEmbodied AI技术、产品及开源方案

    物联网智能家居方案-基于Nucleo-STM32L073&amp;机智实例项目打包下载

    物联网智能家居方案-基于Nucleo-STM32L073&机智实例项目打包,推荐下载!
    发表于 05-29 21:50

    基于STM32 HAL库与标准库的esp8266接入机智方案(二)

    在《基于STM32HAL库与标准库的esp8266接入机智方案(一)》中,我们详细介绍了硬件连接和机智客户端的创建。本篇将重点讲解如何下载代码、
    的头像 发表于 05-28 18:02 1109次阅读
    基于STM32 HAL库与标准库的esp8266接入<b class='flag-5'>机智</b><b class='flag-5'>云</b>方案(二)

    基于STM32 HAL库与标准库的ESP8266接入机智方案(一)

    最近在项目中需要进行物联网平台对接,之前我找到了一些资料,发现机智是一个不错的平台。机智的资料丰富,且操作简便,可以根据MCU自动生成
    的头像 发表于 05-28 18:02 817次阅读
    基于STM32 HAL库与标准库的ESP8266接入<b class='flag-5'>机智</b><b class='flag-5'>云</b>方案(一)

    机智Airlink配网超时、数据上传延迟及更新不及时问题分析

    本教程旨在分析并解决在使用32单片机和ESP8266-01S接入机智时可能遇到的配网超时、数据上传延迟及更新不及时的问题。通过将传感器采集的数据上传至机智
    的头像 发表于 05-26 18:03 759次阅读
    <b class='flag-5'>机智</b><b class='flag-5'>云</b>Airlink配网超时、数据上传延迟及更新不及时问题<b class='flag-5'>分析</b>

    物联网智能家居方案-基于Nucleo-STM32L073&amp;机智 项目实例

    物联网智能家居方案-基于Nucleo-STM32L073&机智 项目实例下载! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-23 21:01

    STM32与机智连接实现步骤与技巧(下篇):机智代码移植与优化

    机智SDK,集成API,实现数据传输和设备状态同步,并分享移植过程中的常见问题及解决方法,帮助开发者顺利实现云端连接。机智相关代码开始移
    的头像 发表于 05-23 18:10 795次阅读
    STM32与<b class='flag-5'>机智</b><b class='flag-5'>云</b>连接实现步骤与技巧(下篇):<b class='flag-5'>机智</b><b class='flag-5'>云</b>代码移植与优化

    STM32与机智连接实现步骤与技巧(上篇)

    通过STM32与机智的连接,开发者可以实现设备的远程控制和数据管理,提升物联网应用的智能化水平。本文将介绍STM32与机智连接的具体步骤,涵盖硬件连接、通信协议配置、数据传输及
    的头像 发表于 05-23 18:10 846次阅读
    STM32与<b class='flag-5'>机智</b><b class='flag-5'>云</b>连接实现步骤与技巧(上篇)

    HarmonyOS5服务技术分享--存储SDK文章整理

    在HarmonyOS ArkTS应用中集成华为存储SDK指南 大家好呀!今天咱们来聊聊如何将华为存储SDK集成到基于ArkTS(API 9-11)的HarmonyOS应用中。这篇指
    发表于 05-22 19:09

    STM32项目分享:智能台灯(机智)系统

    01—项目简介1.功能详解STM32智能台灯(机智)系统功能如下:1.检测功能:系统检测周围温湿度数据、距离、人体信号、光照强度L
    的头像 发表于 03-10 08:03 1463次阅读
    STM32项目分享:智能台灯(<b class='flag-5'>机智</b><b class='flag-5'>云</b>)系统

    STM32项目分享:机智智慧农业系统

    01—项目简介1.功能详解基于STM32的机智智慧农业系统。功能如下:温湿度采集:使用DHT11温湿度传感器采集环境温湿度土壤湿度
    的头像 发表于 12-19 18:40 1900次阅读
    STM32项目分享:<b class='flag-5'>机智</b><b class='flag-5'>云</b>智慧农业系统