本帖最后由 阿信 于 2025-5-15 17:57 编辑
机智云Airlink配网超时、数据上传延迟及更新不及时问题分析
前言:使用32单片机和esp8266-01S接入机智云,将传感器采集的数据上传到机智云APP,同时实现远程控制LED灯等执行器。 一.Airlink配网超时
可能原因一: 首先一定要确保ESP8266烧录有机智云的固件,我一开始就误认为ESP8266已经有固件了,但后续才发现是安信可的固件,判断ESP8266里是什么固件有个很好的区分办法,如果ESP8266闪烁频率很慢,就是安信可的,如果闪烁频率很快,就是机智云的。关于如何烧录固件网上有很多的办法,作者就不再赘述,只是提醒一下大家一定要检查一下固件。
可能原因二: 连接的WIFI一定要是2.4G频段的,5G是一定会失败的。大家可以在电脑的设置——网络和Internet——属性,查看WIFI的频段。
可能原因三: 使用单片机配网时最好用按键启动ESP8266的配网,一开始我将配网模式函数放在初始化后面,每次复位或上电都会执行,但实际确实连不上。
一开始我认为按键没那么重要,但奈何尝试了很多方法都不行,最终才尝试了按键启动配网,没想到就成功了。
顺便提醒一下,如果手机APP上点击配网时让你"please switch to wifi environment" ,是因为你的手机没有开启定位哈。
二.机智云不主动上传数据 问题描述:在历经千辛万苦终于配网成功后,打开APP界面发现数据全为0,当时的心情怎一个惨字了得。只有每次我改变其中一个布尔值后,数据才会更新。串口打印信息如下:
可能原因:不主动上报数据大概率就是定时器出了问题,建议大家详细排查定时器初始化或者配置有无问题。本人就犯了一个很马虎的错误,在定时器中断通道的配置中,将TIM3_IRQn错写成了USART3_IRQn,导致定时器其实一直无法进入中断,gizTimerMs()函数一直无法执行,自然无法主动上报数据。
将中断通道改正确后,就可以接收到实时数据啦,串口打印信息如下:
三.数据更新慢 问题描述:数据终于是可以实时上传了,但好像也没有那么“实时”,延迟非常高,离预想的效果还有点距离。 改进方法:在gizwits_protocol.h中找到#define REPORT_TIME_MAX 6000这条宏定义,这个定义决定了数值型变量上传的时间间隔,默认是6秒钟,将此处的6000改成500或者其他值,就可以使得数值型变量两次上传的间隔变短,及时更新至APP。
更改后问题得以解决:
|