GAgent详解
GAgent是运行在各种通讯模组上的一款应用程序(固件),可以提供上层应用(手机APP等控制端、云端)到产品设备的双向数据通讯,此外,还提供对设备的配置入网、发现绑定、程序升级等功能。产品开发者使用GAgent后,只需要关心产品的业务逻辑开发,不用关心数据的通讯功能开发,大大降低了开发的难度。该固件遵循以下协议《机智云平台标准接入协议之MCU与WiFi模组通讯》、《机智云平台标准接入协议之设备与云端通讯》、《机智云平台标准接入协议之App与设备通讯》。GAgent功能概述GAgent主要的作用是数据转发,是设备数据、机智云、应用端(APP)的数据交互桥梁。可将GAgent移植到WiFi模组、GPRS模组、PC端等。目前机智云提供由机智云移植的WiFi模组对应固件有:汉枫LPB100、乐鑫8266、汉枫LPT120、高通4004 、RealTek 8711AM 、庆科3162等。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478078696133.pngGAgent接入机智云流程1.设备上电A、GAgent请求设备信息
B、回复GAgent设备信息
C、设备正常工作,需回复GAgent发出的心跳包
D、GAgent网络状态发生变化通知mcu。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478078706996.png2.配置入网配置入网:使设备连接路由器,目前主要有3种配网方式airkiss(微信)、airlink、softap。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478078715473.pnghttp://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478078724982.pnghttp://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478078734580.png3.搜索绑定设备控制设备前必须绑定设备,WIFI普遍采用局域网发现绑定设备方式,而gprs模组由于没有局域网,只能采用扫码绑定。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478078743019.pnghttp://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478078749230.png4.下发、上报设备数据下发设备数据:一般指的是APP、云端控制设备。局域网内APP可以选择是否经过云端再下发给GAgent或者不经过云端直接下发给GAgent。
上报设备数据:一般指的是设备主动上报当前状态,当设备MCU收到WiFi模组控制产生的状态变化,设备MCU应立刻主动上报当前状态,发送频率不受限制。但如设备的状态的变化是由于用户触发或环境变化所产生的,其发送的频率不能快于6秒每次。建议按需上报,有特殊上报需求请联系机智云。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478076808590.pnghttp://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478076831961.png5.GAgent OTA流程GAgent OTA是指通过机智云官网创建远程推送GAgent固件规则后,通知当前模组更新到对应新固件。GAgent OTA有两种触发动作:云端主动通知OTA动作;GAgent连接云端检查是否需要OTA。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478077165960.pnghttp://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478077171725.png6.MCU OTA流程MCU OTA是指通过机智云官网创建远程推送MCU固件规则后,通知当前MCU更新到对应新固件。MCU OTA过程,即GAgen向MCU进行大文件传输。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478077185915.png7.MCU上传大文件至机智云设备采集的数据过大时,MCU可以通过GAgent向机智云传输大文件。上传到机智云后,可通过相应接口接收。目前APP暂不支持获取MCU上传的大文件。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478077205085.png8.产测流程产测主要应用在设备生产检测过程中,对设备检测的一种方法。目前产测适用于WiFi模组,不适用GPRS模组。http://docs.gizwits.com/assets/zh-cn/deviceDev/GAgent/1478077224022.pngGAgent关键策略1.重启与重置命令什么时候用?当GAgent在正常工作中因为某些因素而长时间无法连接云端,需要重启模组,可以由设备使用者手动重启设备,也可以由MCU主动发送命令重启Wifi模组。此外,GAgent有异常处理策略,当出现异常时,会自动重启。重置指擦除GAgent保存的DID、SSID、密码等信息。发送置命命令后,Wifi模组会自行重启。主要应用场景:当设备从A用户转移到B用户,B用户不希望A用户控制设备。2.可绑定时间怎么用?机智云设备绑定机制:APP与设备在同一局域网,如果GAgent没有设定绑定时间,则任意装有相关APP用户随时都能绑定设备,存在一定安全隐患。设备绑定时间,用户在可绑定时间内可以绑定设备,提高了安全性。3.局域网、广域网心跳及离线判断条件。局域网:
APP与GAgent心跳:4s一次,三次超时离线。广域网:
APP与云端心跳:55s一次,三次超时离线。
GAgent与云端心跳:55s一次,三次超时离线。4.WiFi模组配网网络环境要求
[*].部分WiFi模组无法识别路由器ssid为中文,建议将路由器ssid设置为英文。
[*].路由器加密方式建议采用AES加密
[*].关闭AP隔离
5.WiFi模组连接路由器策略
[*].缓存最近一次连接成功的路由热点(不关心是否连接外网成功)
[*].使用当前的ssid和pwd连接路由器,失败后立即重试,如果重试超过30S都连接不成功,则尝试连接最近一次连接成功的路由热点(当前热点与最近一次连接成功热点不同)。如果仍然失败,则交替尝试连接当前热点和最近一次成功连接的热点。
[*].连接路由超过2分钟,仍然失败时,以STA模式重启模组,重新开始上一步动作。
[*].连接成功,当前ssid/pwd和连接成功ssid/pwd更新。备注:当前ssid和最近连接成功的ssid可能是同一个
6.配网策略说明
[*].收到配置入网命令后,进入配置(softAP/AirLink)模式,等待接收ssid和pwd;
[*].成功获取到ssid和pwd,则自动连接路由器,连接路由策略见上;
[*].如果使用获取到的ssid和pwd成功连上路由,则发送配置成功包(可能会重启);
[*].airlink超时自动进入softAP配置模式,softAP也超时,才认为是配置超时退出;
[*].获取ssid/pwd超时退出,则连接最近一次连接成功的路由热点,连接路由策略见上;
[*].若没有缓存热点,则进入无网模式(STA & disconnect)。无网模式不保存,下次启动后不进入无网模式。
7.上电入网策略
[*].上电后,若没有指定工作模式,则以STA模式启动,自动连接路由器,连接路由器策略见上;
[*].如果没有ssid信息,则进入softAP配置模式,配置策略见上;
8.掉线重连策略
[*].在连接路由正常情况下,掉线后立即重连。
[*].若连接失败,第一次立即重连,之后每次重连间隔每次累加10秒,即10秒,20秒,30秒……。
[*].连接10次仍然失败时,重新通过机智云获取设备连接域名。获取域名成功后,进行DNS解析
[*].解析成功后,若ip地址相较之前ip有变化,立即重连云端,重连时间从0开始重新累加。
[*].解析成功后,若ip地址相较之前ip无变化,继续按照之前的重连间隔进行累加重连;
[*].当重连间隔增加到10分钟时,不再累加,以后每次重连间隔保持在10分钟;
[*].累积1个小时没连上云端,则重启(无小循环连接情况下,2分钟后重启)
[*].如果连接路由器不成功,不尝试重连云端。
[*].恢复连接路由器后,立即重连云端,重连时间从0开始。
[*].若连接失败,遵循上面连接路由正常的重连策略。
备注:云端掉线的重启策略可定制,需要考虑小循环的优先级。若小循环优先级高,云端掉线重启理解重启;若小循环优先级中,云端掉线重启仅在无小循环客户端连接持续10分钟的情况下重连;若小循环优先级低,云端掉线重启可以立即重启。9.路由断连恢复策略
[*].路由断连后,模组进入本地模式(小循环、大循环不可用);
[*].重连路由成功后进入正常工作模式(小循环、大循环可用),重启小循环服务,重启大循环服务;
[*].断开路由连接超过2分钟仍然没有恢复路由器连接,模组重启自身。
10.OTA策略GAgent OTA:包括下载、存储、校验、更新4个过程。
[*].下载:获取下载链接并判断是否需要下载(硬件版本号一致,软件版本号大于当前软件版本号),进行下载,目前不支持断点续传。下载失败后不再下载。
[*].存储:下载过程中进行分片存储到flash中缓存区域
[*].校验:进行md5值校验,确认文件传输正确
[*].更新:有主、备两个区域。替换进行更新,确认如果更新失败,程序仍然可以从另一区域正常启动。
MCU OTA:包括下载、存储、校验、传输4个过程。
[*].下载、存储、校验同GAgent OTA一样;
[*].传输:通知MCU有固件传输,并分片传输给MCU,每片需要进行sum校验,传输完成后mcu需要进行md5校验。MCU成功后重启GAgent,以让GAgent重新握手获取更新后的MCU信息。
11.云端OTA通知推送云端只会给当时在线设备推送;对于当时不在线,或者没升级成功的设备,云端会每天推送一次12.GPRS模组流量的基本要求设备与机智云数据交互主要采用MQTT协议。设备与机智云数据交互的最小数据量是设备与机智云通讯的心跳。mqtt心跳是2个字节,tcp协议头是40字节,50秒一次,需要包括心跳和心跳回复。所以每50秒流量是:(40+2)*2=84 Bytes。一个月按30天算流量大概是:72K。所以GPRS模组至少需要每个月有72K流量,以保证GPRS可以正常上网。
github上的GAgent一直都没有更新吗?
GAgent怎么支持网关类设备? 进入配对模式,是否会有60秒绑定时间? Rock110 发表于 2017-7-3 12:10
进入配对模式,是否会有60秒绑定时间?
是的,第一次绑定等待时间比较长。
从第二次开始就在几秒钟内 能把协议发出来吗?代码可以开源吗? nicklgw 发表于 2017-8-15 23:19
能把协议发出来吗?代码可以开源吗?
最初版源码下载地址https://github.com/gizwits/Gizwits-GAgent 目前没有更新计划了
页:
[1]