导读:使用机智云提供的Open API(Http / WebSocket),可以快速开发网页或微信应用等基于html的轻应用,用于管理和控制智能设备。机智云 Open API 主要帮助开发者通过 HTTP 的方式维护用户、用户与设备之间的绑定关系,以及获取设备数据、发送控制指令给设备。
 

什么是机智云 Open API ?

机智云是一个开放的物联网设备平台,它为企业和个人开发者提供设备接入、用户账号管理、用户与设备绑定管理、设备远程监控、定时任务以及设备高级数据等服务。

这些数据都是存储在机智云的数据库中的。那么作为开发者,如何去访问这些数据呢?

Open API 就是机智云对外提供这些数据的访问接口!

机智云 Open API 能完成什么功能 ?

根据机智云提供的服务,Open API 提供如下功能:

  • 用户管理,比如用户的注册、登录、密码重置等功能
  • 消息中心,比如用户读取、删除系统消息等功
  • 绑定管理,比如用户与设备的绑定、解绑等功能
  • 设备分享,比如用户把自己的绑定设备分享给其他用户,解绑其他用户对自己设备的绑定等
  • 设备远程监控,比如获取设备的当前状态、设备上报的原始数据、设备的上下线记录、设备的远程控制等功能
  • 定时任务管理,设备定时任务的增删改查等
  • 高级数据接口,比如对设备上报的数据按天取最大值、平均值等
  • 系统信息,比如查看当前 Open API 版本,获取所有可能的错误列表等

如何调用机智云 Open API ?

机智云 Open API 是 RESTful 风格的 HTTP API,您可以使用任何标准的 HTTP 客户端访问机智云 Open API。

各种编程语言一般都有现成的 HTTP 客户端可以使用。

推荐 HTTP 客户端:

机智云 Open API 所需要的头部信息

X-Gizwits-Application-Id

X-Gizwits-Application-Id 简称 AppID,是一个应用在机智云平台中的唯一标识,所有 OpenAPI 接口都需要传入这个头部参数。

在开发者中心的产品页面中,点击左边栏的”应用配置”菜单,创建一个应用即可获得一个 AppID:

X-Gizwits-User-token

X-Gizwits-User-token 简称 UserToken,它代表着接口调用中的用户上下文。

UserToken 具有有效期,默认为 7 天。

可以通过用户注册或者登录接口获取 UserToken,返回字段中的 token 就是 UserToken,expire_at 表示 UserToken 过期的时间戳:

{
"uid": "29db4f0d806e451a84264ba3da64d9de",
"token": "86a0ee91548f4971832e371811702316",
"expire_at": 13894002020
}

每次登录可以获取一个新的 UserToken,新旧 UserToken 都可以使用。

因为机智云 Open API 大多数的接口都是与用户相关的,所以一般的接口调用顺序如下:

  • 判断本地是否有 UserToken,以及 UserToken 是否过期
  • 如果不存在 UserToken 或者 UserToken 过期,调用用户登录接口,获取并保存 UserToken
  • 使用 UserToken 调用其它接口

如何在线调试机智云 Open API ?

我们提供了在线 API 调试工具,在每个接口描述中,都会给出对应的调试接口链接。

下面以用户登录为例,说明 API 调试工具的使用:

  • 点击 用户登录 进入接口调试页面
  • 接口右边有个红色叹号,点击后弹出对话框,提示需要输入的头部信息
  • 该接口需要输入 X-Gizwits-Application-Id,根据前面的说明获取 AppID 并填入,点击 “Authorize” 进行授权
  • 页面自动刷新,并且叹号变成蓝色,表示需要输入的头部信息已填写(已填写并不一定表示值是正确的,如果值错误,会反应在接口返回内容中)
  • 在参数输入框中输入参数值(点击参数右边的 Example Value 黄色框框,可以快速输入示例 JSON)
  • 点击 “试一下” 按钮,即可完成接口调用
  • 接口调用完成,会显示本地调用等效的 curl 语句,请求 URL,响应体,响应码和响应头

机智云 Open API 指南

机智云所有接口定义可以在调试接口页面中查看。

下面对各分类接口的典型调用场景进行说明。

用户管理

用户注册

调试接口

有以下几种方式可以注册用户:

  • 匿名注册,通过唯一的 phone_id 创建用户
  • 普通用户,通过 username 和 passowrd 创建用户
  • 手机用户,通过 phone, password 和 code(短信验证码)创建用户,短信验证码的获取参考下面章节
  • 邮箱用户,通过 email 和 password 创建用户
  • 第三方登录用户,目前支持 QQ、百度、新浪微博,如使用 QQ 第三方登录,请查阅下面章节

使用 QQ 登录

TODO

短信验证码

短信验证码的主要用途有:

  • 手机号用户注册
  • 手机号用户重置密码
  • 其他您认为需要短信验证码的敏感操作

获取短信验证码有两种方式,一种不需要图片验证码,一种需要图片验证码,您可以根据实际的应用场景选择两种不同的方法。

不需要图片验证码

需要图片验证码

校验短信验证码

手机号用户注册和重置密码时,您不需要也不能去验证短信验证码,只需要将用户输入的短信验证码传入对应接口,机智云会自动进行校验。

当您将短信验证码用于其他敏感操作校验时,才需要手动校验。调用 校验短信验证码 接口即可完成校验。

短信验证码正确校验后立即失效,默认有效期为 24 小时。

用户登录

调试接口

注意:匿名用户和第三方登录用户调用用户注册接口进行登录。

修改用户信息

调试接口

您可以修改以下用户信息:

  • 匿名用户转普通/手机/邮箱用户
  • 修改密码
  • 修改手机号
  • 设置用户昵称、性别、生日、地址、备注等信息

获取用户信息

调试接口

该接口可以获取用户详细信息。

重置密码

调试接口

手机号用户重置密码需要先获取短信验证码。

消息中心

获取消息列表

调试接口

标记已读和删除

调试接口

绑定管理

绑定设备

可以通过一下两种方式绑定设备:

  • 通过 product_key 和 MAC 地址绑定设备
  • 通过二维码绑定设备,二维码内容为 product_key 和 MAC 加密后的内容,所以本质上和上面一种方式一样

通过 product_key 和 MAC 地址绑定设备

调试接口

通过二维码绑定设备

二维码生成

TODO

绑定设备

调试接口

把扫描到的二维码内容作为 qr_content 的值入。

获取绑定列表

调试接口

修改绑定信息

调试接口

用户可以对绑定的设备修改别名和备注。

同一个设备被多个用户绑定,每个用户都可以对该设备设置别名和备注,互不冲突。

解除绑定

调试接口

Owner 查询与设备绑定的所有 Guest 用户

调试接口

Owner 解除 Guest 用户对设备的绑定

调试接口

设备分享

第一个绑定设备的用户对设备具有控制权,称为设备 Owner,Owner 可以将设备分享给其他设备。被分享的用户称为 Guest。

Owner 分享设备之后,可以随时取消分享,或者解绑 Guest 对设备的绑定。

Guest 也可以主动解绑设备。

设备分享的主要有两种方式:

  • 普通设备分享
  • 通过二维码分享设备

普通设备分享

  • Owner 选择一个要分享的设备,调用创建分享邀请接口创建分享邀请
  • Guest 将会收到一条设备分享消息
  • Guest 调用查询分享邀请接口,查询分享给自己的邀请
  • Guest 调用接受分享邀请接口接受邀请
  • Owner 和 Guest 都将收到一条设备分享消息

通过二维码分享设备

使用GizwitsOpenAPI,快速开发轻应用的更多相关文章

  1. Hexo - 快速,轻量,强大的 Node.js 博客框架

    Hexo 是一个快速,轻量,强大的 Node.js 博客框架.带给你难以置信的编译速度,瞬间生成静态文件:支持 Markdown,甚至可以在 Hexo 中集合 Octopress 插件:只需要一个命令 ...

  2. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  3. Java快速开发平台,JEECG 3.7.6性能增强版本发布

    JEECG 3.7.6 性能增强版本发布 导读       ⊙Vue SPA单页面应用 ⊙Datagrid标签实现不同风格切换,支持BootstrapTable.EasyUI ⊙灵活通用代码生成器工厂 ...

  4. 【转载】如果快速开发APP&创业

    先贴原文所在个人博客: http://uikoo9.com/ 今天看了一些这个人的文章,还是有一定见解的,比如下面这篇 <如何快速开发出一个高质量的APP——创业谈> http://uik ...

  5. AAuto 快速开发win32小程序

    AAuto编程语言 AAuto是专用于桌面软件快速开发的新一代混合型编程语言 -  具有动态语言轻便.灵活.快速开发的特性,而且又可以同时支持静态类型开发,象静态语言那样使用.AAuto可以直接支持原 ...

  6. QuartzCode快速开发动画代码工具

    QuartzCode快速开发动画代码工具 QuartzCode一款快速,轻量,强大的动画工具,可快速得到原生的ObjC/Siwft代码 我可以用QuartzCode做什么? 应用程序演练动画 动画菜单 ...

  7. arcpy+PyQt+py2exe快速开发桌面端ArcGIS应用程序

    前段时间有一个项目,大体是要做一个GIS数据处理工具. 一般的方法是基于ArcObjects来进行开发,因为我对ArcObjects不太熟悉,所以就思考有没有其他简单快速的方法来做. 在查看ArcGI ...

  8. 快速开发Grunt插件----压缩js模板

    前言 Grunt是一款前端构建工具,帮助我们自动化搭建前端工程.它可以实现自动对js.css.html文件的合并.压缩等一些列操作.Grunt有很多插件,每一款插件实现某个功能,你可以通过npm命名去 ...

  9. winform快速开发平台->让有限的资源创造无限的价值!

    最近一直在维护一套自己的快速开发平台. 主要应对针对C/S架构下的项目.然而对winform这快,还真没有看到过相对好的快速开发平台, 何为快速,在博客园逛了了好久, 预览了很多通用权限管理系统. 确 ...

随机推荐

  1. 前端面霸系列(1):doctype 、Quirks Mode & Standards Mode 、document.compatMode

    近几日,气压猛降,雾霾铺天盖地,眼看一场腥风血雨就要在前端江湖爆发,这场战争不仅是百度.腾讯.阿狸.搜狐网易新浪等江湖豪门抢夺人才的大战,也是诸位江湖人士重新洗牌的好时机.每年10月,江湖的波动胜过华 ...

  2. jQuery 人脸识别插件,支持图片和视频

    jQuery Face Detection 是一款人脸检测插件,能够检测到图片,视频和画布中的人脸坐标.它跟踪人脸并输出人脸模型的坐标位置为一个数组.我们相信,面部识别技术能够给我们的 Web 应用带 ...

  3. Linux搭建Nginx

    1.Nginx安装 1.1 pcre (1)下载编译包 http://www.pcre.org/ (注意需要的是pcce,而非pcre2) (2)tar -zxvf pcre-8.36.tar.gz  ...

  4. 如何安装 第三方 Go 离线包? (GOPATH、 go install)

    有时候 go get 比较慢,可以考虑用迅雷等下载工具下载下来,然后再本地安装, 如:code.google.com/p/go.net/websocket,如何安装这些离线包? 先在你的 GOPATH ...

  5. PV、EV、AC、BAC、EAC、ETC等计算公式含义

    PV.EV.AC.BAC.EAC.ETC等计算公式含义 PV Planned Value:计划值 应该完成多少工作, (按照计划截止目前应该花费的预算) AC Actual Cost:实际成本, 完成 ...

  6. centos 7配置网络 更新yum源

    cd /etc/sysconfig/network-script/ 找到对应的ifcfg-entxxxx文件,然后添加网关,修改dhcp为static,静态ip,添加IPADDR ip地址.onboo ...

  7. jquery_DOM笔记2

    属性操作; addClass() 添加指定的类名.用于切换效果 after() 在元素后面插入 before() 在元素之前插入 append()在元素后面添加 appendTo() 一直在元素尾部添 ...

  8. java关键包简易说明

    java.lang 语言核心类,系统自动导入. java.util   java工具类.集合框架.时间,日历等. java.net   网络编程接口和类. java.io 流的接口和类 java.te ...

  9. TransmitFile函数的简单使用

    简述 TransmitFile是一个扩展的 API,它允许在套接字连接上发送一个打开的文件.这使得应用程序可以避免亲自打开文件,重复地在文件执行读入操作,再将读入的那块数据写入套接字.相反,已打开的文 ...

  10. DispatcherServlet 和 ContextLoaderListener 的关系,到底用哪个?

    我们先看下这两个东东的配置方法: 对于contextConfigLocation参数,有2个地方可以配置: 1)context-param 是全局性配置 2)servlet下的init-param 是 ...