一丶开发者应了解基本知识
本次教程为连载教程,教程将介绍如何从零去实现
机智云各类产品的开发。
首先在正式进入教程之前,我们对机智云的构架进行介绍,从下图我们可以看出,站在一个开发者的角度上来看,一般开发者只需要掌握设备接入,手机应用,企业应用三大部分即可,如果需要更多的服务,可以对数据进行云分析以及处理,如D3 Engine,RTBD大数据,ECE雾计算等,同时可以通过产品互联对接小爱,天猫精灵,Google Home音箱,亚马逊Echo音箱等。
关于开发者如何根据自己的需求去选择合适的单片机以及通讯模组,如果产品是在室外,周围没有wifi网络的,可以选择 移动网络和NB方案,如果产品在室内使用,可以选择wifi方案,如果产品是在室内使用,但是又不希望家里面wifi模块过多,可以采用网关wifi方案,同样的室外可以选择移动网络网关方案。本次教程我们将对这些方案一一进行产品的开发介绍。
接下来我们将介绍独立MCU方案和SOC方案。
2.SOC方案:将乐鑫的
esp8266作为单片机加通讯模组使用,可应用在一些对尺寸比较严格的环境当中,例如插座,球灯之内的产品中,但是由于其GPIO不是特别丰富,对于驱动彩屏之内的引脚就不够用了,如果只是单纯的开关输出,也可以采用74HC595之类的扩展引脚,使其达到少引脚控制多输出的效果。SOC方案集成了GAgent协议代码,同时机智云支持8Mbit,16Mbit,32Mbit的flash的ESP8266模组。
其余的介绍我们将通过实际开发介绍去进行详细讲解。
首先,我们先来讲一下如何在开发者中心创建一个合适自己的新产品,进入开发者中心
按钮,将会进入产品创建页面
产品分类,选择最贴近自己产品的,选错了也不会影响你的产品开发,此处以开发一个插排为例。
产品名称将会决定你的产品默认的名称,包括APP绑定设备之后默认的显示名称。可以再通过绑定之后修改设备别名进行修改。
技术方案,此处的选择将会决定产品的通讯方式,以及数据传输方式和功耗等。
首先我们来介绍一下wifi/移动网络方案,此方案为我们最常用的方案,
选择通讯方式:在这个地方我们将会选择我们的通讯模组,比如我们需要创建一个室内使用的wifi插座或者其他的wifi产品,那我们就选择wifi方案,数据传输方式:(“定长”指在功能数据点上报下发时一并传输,“变长”指在功能数据点上报下发时指传输改变的功能数据点。比如一个灯有开关、亮度两个功能数据点,触发改变亮度这个功能时,定长是两个功能数据点的状态数据传输,变长则只会传输亮度这个功能数据点。两者各有优势,定长对于开发更方便,变长则更节省传输资源。)此处我的推介就是如果数据点过多就选择变长,数据点不多就选择定长。选择功耗类型:此处如果不是特殊场合和产品尽量选择正常。
移动网络:移动网络和wif的区别在于一个使用移动网络模块上网作为数据传输(可选2G或者4G模块,适合室外产品),一个用wifi模块连接路由器进行联网通讯。
Nb-iot:此处需要注意,通讯网络请选择电信或者联通,选择移动网络会导致设备无法删除。命令下发模式:PSM(power saving mode):终端非业务期间深度休眠,不接收下行数据,只有 终端主动发送上行数据(MO Data)时可接收IoT平台缓存的下行数据 ,适合对下行数据无时延要求的业务。DRX(Discontinuous Reception)<br>可以认为下行业务随时可达终端设备,在每个DRX周期( 1.28s,2.56s,5.12s 或者10.24s ),终端都会检测一次是否有下行业务到达,适用于对时延有高要求的业务。eDRX(extended Discontinuous Reception)<br>终端设备兼顾低功耗和对时延有一定要求的业务,在每个eDRX周期内,只有在设置的寻呼时间窗口内,终端可接收下行数据,其余时间终端处于休眠状态,不接收下行数据,该模式可在下行业务时延和功耗之间取得平衡。
选择合适自己的参数之后点击保存,即可完成产品的创建。
接下来我们对开发页面进行一一介绍,后续产品开发我将不在进行功能介绍,只作应用的介绍,所以对此部分需要进行了解,以及各个名词的作用。
基本信息:产品名称,产品类型,技术方案,通讯方式前面已经做了详细介绍,此处不在累说明,Product Key:通常我们称为PK,产品标识码,一个32位字符串作为产品唯一识别号,这个标识码是唯一的,作为产品区分用的,同时也会集成在协议里面。Product Secret:通常我们称为PS,机智云产品授权的证明,用以确认用户的身份和使用权限。请注意痴迷要不要随意泄露。设备分享功能:开启后,App才能使用设备分享的功能。需要注意的是,一旦开启就不能关闭(默认关闭,如果需要打开,点击基本信息页面底部的修改进行修改)。
数据点:数据点是一套机智云设备通信协议,用于描述设备功能及其参数。点击右上角创建数据点可以创建新的数据点
标识名:数据点及其参数传输时的变量名,支持英文字母,数值和下划线,以英文字母开头。
读写类型:只读类型:用于设备状态信息的查询或主动上报,APP不能控制,可以用于APP不需要操作的数据点,比如设备温度采集,湿度采集等;可写类型:接受设备写操作以改变,控制设备状态,比如控制一个LED的开关,控制电机速度等;报警类型:当设备发生指定的状态改变或者达到指定值时,上报报警信号,选择此选项数据类型将只能选择布尔值,注意此类型可用只读布尔值代替;故障类型:当设备发生指定的状态改变或者达到指定值时,上报故障信息,选择此选项数据类型将只能选择布尔值,注意此类型可用只读布尔值代替。
数据类型:布尔值:值为正确或者错误,也就是0和1,可用于开关变量或者报警故障信号,比如一个继电器开关,LED开关等;枚举值:自定义的有限集合值,此数据点可用于设备状态的显示,比如要表示一个电机的5种状态:高速运行,中速运行,低速运行,停止,故障,可以创建一个只读枚举类型,枚举范围为(高速运行,中速运行,低速运行,停止,故障)状态之间用英文逗号分开,可写类型举例,比如要设置一个LED的颜色:红,黄,绿,蓝,紫,就可以创建一个可写的枚举类型,枚举范围(红,黄,绿,蓝,紫);扩展类型:二进制字符,可用于自定义数据类型或接入扩展元器件,可用于有数据点透传非特殊情况不推介使用;数值型:比如采集一个温度或者湿度就可以采用只读数值类型,比如控制电机速度或者LED亮度,就可以使用可写数值类型。数据范围也就是数值的范围,按需设置即可,分别率,将会决定小数的位数,如果设置0.01就是小数点后2位,0.1就是小数点后1位。1就是没有小数点。有小数的时候位float类型,单片机内存比较小的慎用此类型。
虚拟设备:通过虚拟设备模拟真实设备上报数据的行为,可以快速验证接口功能的开发。在手上没有设备的时候可以模拟设备和APP,openapi进行通讯,方便APP和其他控制页面的开发。
设备日志:查看设备在线状态以及是通讯数据
开发向导:MCU 开发资源:里面包含了soc文档以及MCU开发协议文档,可以自行下载查看,此文档是根据当前产品生成的。不可跨产品使用。
APP开发资源和微信开发资源可自行查看。
应用配置:创建应用时,系统会自动分配App ID与App Secret,在开发app或微信应用时,把App ID和AppSecret写进去你的App和Web应用中,授权App控制设备。注意在开发web的时候需要用填写安卓的APP ID。要使用apicloud开发需要创建安卓和苹果应用,微信开发需要创建微信应用。点击右上角添加新应用,填写相关参数之后即可完成创建。
绑定其他产品:绑定其它产品的应用是为了实现一个App可以控制多款产品的需求而必须进行的操作。例如公司Q有多个产品,分别是A、B、C,但他不想每个产品都单独一个App,而是希望三个产品都用同一个app。现在提供了「绑定其它产品的应用」功能,选择其中一个为中心,如产品A为中心,产品B与产品C绑定产品A,开发App时使用产品A的App ID就行。
应用开发:此处可以生成APP的源代码,安卓(Ashe ES项目),苹果,apicloud,需要提前在应用配置里面创建应用,其中apicloud需要同时创建安卓应用和苹果应用。选择应用之后输入PS(前面有介绍是啥玩意)即可生成代源代码,可以直接编译或者二次开发修改UI之后再编译。
生成代码之后下载解压即可。
MCU开发:通过选择您的硬件使用的方案指定类型,可以自动生成MCU开发过程中必须的代码,从而实现不用学习通讯协议,快速开发硬件程序。
独立MCU方案:也就是单片机加通讯模组方案,所以需要生成单片机代码,比如我手上有一块MSP430单片机,那么就可以生成MSP430代码。
比如我手上有一块
STM32F103RBT6,就可以生成STM32F103C8x代码,然后进行简单修改或者不修改也可以直接使用,
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image045.jpg
假如我手上有一块联发科的单片机,在代码里面不能直接生成,那么我们可以直接生成其他平台代码,按照通用代码根目录下面移植教程进行移植。
加入我们是ESP8266单片机,就可以生成SOC方案,ESP8266代码,内存请参考FLASH大小选择设置。
ESP8266常见的模组flash大小如下
输入PS生成代码包即可生成源代码
添加服务:根据自己的需求添加需要的功能,丰富产品的研发、管理和运营能力,部分收费。
统计相关的模块请在页面看介绍,常用的前面已经介绍完毕。