随着新一代信息技术和制造业的融合发展加速,从消费者熟悉的智能家电家居、到工厂的生产设备,越来越多的行业开始积极拥抱物联网。物联网云平台成为其中不可或缺的关键枢纽和数据承载,其对设备的实时远程控制、数据采集存储、大数据运算、智能决策等能力,可以帮助企业实现设备全生命周期数字化管理,提高生产率和效率,支撑决策优化。
云通过的大数据处理能力、性价比极高的算力,开启了消费互联网时代,带动了其他行业“云化”的变革,随着物联网在各行业的广泛应用,我们已看到物联网技术在智能家居、能源、零售、物流、交通出行、工业设备制造、安全、租赁等领域的应用给社会生产、生活已带来了积极改变。越来越多的企业在尝试进行物联网产品的研发以及商业模式的创新。
机智云部署方案
1.化方案介绍
为满足机智云客户销售到海外的的硬件和硬件产品的消费者能更好的体验机智云物联网平台带来的便利性,机智云AIoT在国外设有独立部署平台,以期从网络距离上缩短销售到海外的设备连接到国内长距离的网络延时问题,提供更好的交互体验。
目前机智云海外部署节点分布在美国东部、欧洲中部(法兰克福),都使用AWS云计算服务。如下图所示:
美东节点覆盖范围:北美、南美地区;
欧洲节点覆盖范围:欧洲地区
关于各节点的服务器的响应速度报告可以参阅《机智云联网报告》(本文主要介绍开发者接入机智云化方案流程。)
2.前期准备工作
2.1.确认模组使用固件版本
目前支持一体化方案模组固件如下
WIFI模组上烧录的固件为上图中发布时间之后的固件版本均可使用一体化方案,建议使用版本
的固件来开发一体化的设备。
如果开发者无法确认模组的固件是否支持一体化方案,可咨询机智云FAE确认。
2.2.确认APP使用的SDK版本
APP支持一体化建议使用以下及其之后发布的SDK版本。
2.3.一体化方案产品数据同步部署
确定产品使用一体化方案后,开发者需要联系机智云技术支持,提供产品如下的对应信息。
获取《产品名称》和《Productkey》如下图:
获取《安卓与iOSAPPID》如下图:
3.设备端开发
设备要支持一体化,除了需要使用支持的固件外,还需要在《3.1获取设备信息》协议中,回复一个ProductSecret,具体协议如下图所示:
上图所需产品密钥获取如下:
4.APP开发
一体化方案的APP开发分两种方案:
方案一:只开发一套APP适应设备
方案二:根据机智云的服务器划分,分别开发相对应的APP,也就是总共三套APP。
下面先介绍一下一体化使用到的启动接口。
4.1.Andriod端
启动方法:
publicvoidstartWithAppID(Contextcontext,StringappID,StringappSecret,List<String>
specialProductKeys,ConcurrentHashMap<String,String>cloudServiceInfo,boolean
autoSetDeviceDomain)
复制代码
参数解析:
注意:cloudServiceInfo和autoSetDeviceDomain是没有任何关联的,当autoSetDeviceDomain设置为true的时候,启动SDK以后,APP需要能连上外网,让SDK去云端获取当前APP的APPID与ProudctKey列表的关联关系,只有与APPID关联的ProductKey,APP才有权限去修改其设备的域名。当APP需要实现一体化的功能时,ProudctKey参数必填,SDK才可拿到参数值,去云端核对APPID和ProductKey的关联关系。
APP去修改设备域名的时机是:当设备与APP连到同一个局域网内时,APP发现局域网的设备与APP连的服务器不同,就会通过TCP给设备发送域名信息,切换设备连接的服务器。
4.2.iOS端
启动接口:
+(void)startWithAppID:(NSString*)appIDappSecret:(NSString*)appSecretspecialProductKeys:(NSArray*)specialProductKeyscloudServiceInfo:(NSDictionary*)cloudSeviceInfoautoSetDeviceDomain:(BOOL)autoSetDeviceDomain;
复制代码
4.3.一套APP适配设备
该方案是让SDK自动根据时区切换连接的服务器域名,此时的启动接口调用方式如下:
安卓端:
GizWifiSDK.sharedInstance().startWithAppID(this,AppID,AppSecret,ProductKeyList(),null,true);
复制代码
iOS端:
[GizWifiSDKstartWithAppID:APPIDappSecret:APPSECRETspecialProductKeys:ProductKeyListcloudServiceInfo:nilautoSetDeviceDomain:YES];
复制代码
该方案的优点:只需要一套APP就可适应所有地区的设备
缺点:SDK自动根据时区去切换对应服务器,用户会较为被动,当APP与设备不是处于同一网络下,APP切换到另一个服务器,可能会导致找不到原来的账号和设备。
4.4.三套APP适配设备
该方案是根据机智云的服务器划分对应的APP。
机智云主要划分出三大服务器:服务器,美东服务器、欧洲服务器
APP也按这三大服务器划分为三套:APP,美东APP,欧洲APP
这三大APP基本内容相同,只在启动接口这里有差别,下面以iOS为例:
APP的启动接口:
[GizWifiSDKstartWithAppID:APP_IDappSecret:APP_SECRETspecialProductKeys:[GosCommonsharedInstance].productKeycloudServiceInfo:@{@"openAPIInfo":@"api.gizwits.com",@"siteInfo":@"site.gizwits.com",@"pushInfo":@"push.gizwitsapi.com"}autoSetDeviceDomain:YES];
复制代码
美东APP的启动接口:
[GizWifiSDKstartWithAppID:APP_IDappSecret:APP_SECRETspecialProductKeys:[GosCommonsharedInstance].productKeycloudServiceInfo:@{@"openAPIInfo":@"usapi.gizwits.com",@"siteInfo":@"ussite.gizwits.com",@"pushInfo":@"us.push.gizwitsapi.com"}autoSetDeviceDomain:YES];
复制代码
欧洲APP的启动接口:
[GizWifiSDKstartWithAppID:APP_IDappSecret:APP_SECRETspecialProductKeys:[GosCommonsharedInstance].productKeycloudServiceInfo:@{@"openAPIInfo":@"euapi.gizwits.com",@"siteInfo":@"eusite.gizwits.com",@"pushInfo":@"eupush.gizwits.com
"}autoSetDeviceDomain:YES];
复制代码
使用该方式的优点:用户根据所在位置相对应的APP,之后设备就是固定连接相对应的服务器了,运行相对稳定,APP和设备都不会出现在各个服务器之间切换的问题。
缺点:较繁琐,需要开发和上架三套APP。
5.问题说明
1、APP有消息推送功能,使用一体化方案的时候该怎么处理?
解答:待机智云在服务器上同步好产品的数据信息后,开发者需要使用同一登录国外服务器,找到对应的产品,申请开通D3服务,并创建与国内一致的规则。
2、如果发现APP有权修改非关联ProductKey的设备连接的域名,要怎么做?
解答:更换2017年8月1**后发布的SDK,也就是从2.07.07.2开始的SDK版本才做了设备域名切换的限制。
具体限制:在SDK启动之后,SDK会去云端确认APPID和ProductKey数组的关联关系,只有跟APPID关联的ProductKey下的设备,SDK才有权去修改设备的域名。
3、如果APP开启了域名修改功能,发现局域网的设备都无法根据APP去自动切换到相应的服务器,该怎么做?
解答:
a.确认启动接口的ProductKey参数是否有传,不可传空。
b.确认APP是否能连上外网,因为从2.07.07.2版本开始的SDK需要去云端确认APPID和Productkey的关联关系之后,才会去修改设备域名。
c.上机智云确认,APPID是否和ProductKey关联了。
4、当在测试化设备时,若出现设备列表的设备出现闪烁状态,一会出现,一会消失的状态,会是什么原因导致的?
解答:查看同一个局域网下,是否开启了多个有权设置设备域名的APP,并且各自连的不同的服务器。
在测试化的设备时,同一局域网下的APP,必须连的相同服务器。否则,会出现多个APP在来回切换设备的服务器。
5、已经在化APP中创建了账号,之前登陆绑定设备一切正常,后来登陆报没有该账户、账户错误,这可能是什么问题导致的?
解答:确认一下之前创建账号时,APP连到的是机智云的哪个服务器,登陆报错时,APP连到的又是哪个服务器。很可能是连接的是不同服务器导致的报错,只需要切换到原来的服务器下即可正常登陆。