机智云平台是致力于物联网、智能硬件云服务的开放平台。机智云专注于提供智能云服务及物联网的软硬件解决方案,帮助传统硬件厂商产品升级,快速实现硬件智能化。要实现硬件的智能化,除了硬件本身外,还需要实现:智能云平台、手机APP、联网模块,每一个领域都需要专业的团队来支撑。机智云提供完整的解决方案,让厂商或开发者只需要专注于自身产品硬件。以最小的成本和风险实现硬件智能化,获得产品最大的增值。本文主要介绍设备接入机智云基本流程
以一款空调为例。空调厂家开发者开发空调电控板的时候,使用移植机智云GAgent的WiFi/GPRS模组建立桥梁,使空调设备的数据与机智云互联互通。设备与机智云数据交互的基本数据流如下图。
数据点即设备产品的功能的抽象,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据。
数据点定义基本内容可分为显示名称,标识名,读写类型,数据类型及备注。概图如下:
1.1显示名称:自定义功能点名称。
1.2标识名:用于应用层传输,客户端或业务云开发时需要使用。命名规则遵循标准的开发语言变量名命名规范,支持英文字母、数字和下划线,以英文字母开头。
1.3读写类型:
①只读:表示该数据点非控制,数据只支持从设备上报。
②可写:表示该数据点可控制。设备端可上报该数据点数据;云端/客户端可对该数据点数据做出下发控制。
③报警:表示该数据点非控制,数据只支持从设备上报,数据类型需为布尔值。
④故障:表示该数据点非控制,数据只支持从设备上报,数据类型需为布尔值。云端会对设备上报的该数据点做统计,可在“运行状态”查看。
1.4数据类型:
④扩展:填写数据长度,数据内容由用户自定义。对于上述功能点无法满足的复杂功能可采用。机智云不建议使用此类型数据,设备上报该数据点的数据,机智云无法识别。
1.5备注:选填,用一段文本描述当前数据点的功能及定义方法,对字符格式不做限制。只用于提高数据点的易读性,如果需要团队协作开发,建议规范填写。
1.6数据点数值型分辨率、增量换算实现原理
如以上提到,在定义数值型数据点的时候,取值范围可以使用包括小数、负数等非uint类型数值,熟悉嵌入式开发的开发者会知道,这些数值在设备端都是不被支持的。
机智云为了让设备功能定义更加简单直接、所见即所得,研究出来一套算法,用于将用户输入的数值转换成设备能够识别的uint类型,这套算法的核心公式是:y=kx+m。
y表示“显示值”,就是用户可见的最终数值,也是数据点定义时输入的值。包括Ymin(最小值)和Ymax(最大值)。
x表示“传输值”,就是实际指令间传输使用的数值,云端/客户端接收到的值。一定是uint格式。也包括Xmin和Xmax。
k表示“分辨率”,就是用户输入的分辨率一值,确定了每个取值的步进。
m表示“取值偏移量”或“增量”,算法通过m值将y值偏移到满足x值uint格式的要求,m值默认等于Ymin,确保Xmin=0。
以下用一个电子温度计举例说明换算过程数据点内容:取值范围:-30(Ymin)~50(Ymax),分辨率:0.1
根据公式:y=kx+m,m默认等于Ymin=-30Xmin=(-30+30)/0.1=0Xmax=(50+30)/0.1=800
自动生成的MCUSDK代码实现了机智云通信协议的解析与封包、传感器数据与通信数据的转换逻辑,并封装成了简单的API。当设备收到云端或APP端的数据后,程序会将数据转换成对应的事件并通知到应用层,开发者只需要在对应的事件处理逻辑中添加传感器的控制函数,便可完成产品的开发。这里选择独立MCU方案、硬件平台STM32f103c8x后,机智云直接生成适应STM32f103c8x的工程代码。
如下图,其中黑色标注部分为STM32f103cx8硬件平台开发基本文件,绿色标注部分为机智云逻辑部分。gokit的串口驱动、定时器驱动、按键驱动等驱动机智云的自动生成mcu代码已实现完毕,开发者可直接在gizwits_product.c&gizwits_product.h文件编写硬件动作执行函数。
其中主要文件说明:
协议API介绍
位置:main.c中main()函数
从MCUSDK文件内容目录结构看到,自动生成MCU代码里面没有正反转可调电机马达,温湿度传感器,红外感应器、RGB全彩灯驱动。机智云下载中心提供STM32CubeMX版的驱动库文件。
然后重新生成对应配置的STM32代码(并不会影响到原有的机智云协议处理代码):
1)将下载中心得到的驱动库代码文件拷贝到自动生成代码工程中的MCU_STM32F103C8x_source\Hal文件夹中
2)在工程项目中国添加驱动代码的“.c”文件
3)在驱动代码的delay.c、hal_infrared.c、hal_motor.c、hal_rgb_led.c、hal_temp_hum.c文件加入”main.h”头文件
1#include"main.h"4)在代码中添加相应的函数调用
在MCU_STM32F103C8x_source\Src\main.c和MCU_STM32F103C8x_source\Gizwits\gizwits_product.c文件中添加驱动库的头文件
12345#include"delay.h"#include"hal_motor.h"#include"hal_rgb_led.h"#include"hal_temp_hum.h"#include"hal_infrared.h"在MCU_STM32F103C8x_source\Gizwits\gizwits_product.c文件的userInit()函数中添加各sensor的初始化
函数调用说明:
功能说明:完成写类型外设的事件处理。
相应代码(代码中的注释//userhandle的下一行即可加入开发者的应用代码):
产品发布到正式生产环境后,机智云将为你的设备分配独立的云端运行环境,确保你的设备24小时不间断在线以供用户使用,将享受更多机智云为您提供的增值服务,包括:智能设备统计分析,开放平台展示以及各种无微不至的技术支持服务。
产品如何申请发布上线,具体步骤如下:
1.进入产品详细信息页面,在产品名称旁边显示【申请发布】按。
3.点击【提交申请】按钮,跳转提交成功页面。机智云将为你提供人工审核以及严谨的测试,审核通过后,会根据你提交的量产计划提供后台服务器支持。