与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

文章概要

因为最近我在帮公司开发对接一些知名的iot第三方平台的云服务,主要是IFTTT、Samsung Smartthings和Google assistant,发现这些平台的架构有一些相似的地方又有各自不同的协议和规范,而且物联网越来越被广泛应用,应该会是未来的一个趋势之一,所以通过此文章我会分享对接这些iot平台的开发指导和对官网的说明!

IFTTT开发指导

官网地址:Service API requirements – IFTTT

IFTTT是IF this then that的简写。IFTTT是一个智能iot平台,提供联动控制不同iot厂商设备的能力,实现当某个场景发生的情况下触发某个动作。近期在完善公司ifttt项目,新增适配几个新型设备,有shortcut,Switch和Camera,根据设备的功能和产品需求,新增了一些接口。
开发者在开发自己的service时,可以提供action query trigger三类请求;

Action

动作请求,与一个trigger搭配使用,指的是给iot设备发送一个执行动作的请求,比如开启灯泡;

通过actionFields字段可以设置相关的参数。

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

Trigger

获取设备触发事件的请求,如获取灯泡关闭的事件,该类接口会在平台收到实时上报消息之后调用,你的service在接收这个请求之后返回响应的设备事件。
trigger identity 是唯一用户+trigger的标识,可以区分不同用户的不同trigger。
realtime api是ifttt的实时上报接口,开发者的service有实时事件上报的时候主动调用,用来通知ifttt平台有更新的event,ifttt在之后会poll相应的trigger接口。

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

Query

查询请求,是在trigger和action之间增加的一个动作,可以用来查询设备的状态,并增加过滤条件。

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

Field

以上三类接口都有field属性,在选择action、query和trigger之后对field字段进行检索获取。有两种类型的field字段,一种是静态的 、预置好的、固定数量的列表;一种是动态的、需要从服务端查询返回的;

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

Ingredient

元素是trigger和query可以带有的字段,表示返回结果数据中的字段;开发者的service在创建trigger和query的时候应该定义好其带有的ingredient要素;

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

Oauth认证

由于ifttt平台需要控制设备厂商的设备,所以设备厂商需要授权给ifttt,采用oauth的授权流程。

授权认证页面:

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

认证和发布

在发布之前需要在test 模式下测试通过,在test模式下,你的service需要预置测试数据并响应test请求,最终通过测试用例,如下结果:

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

 发布前准备工作,如完善所有文案、预置Applets模板,这些都完成了之后就可以发布了,结果如下:

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

 Samsung Smartthings

官网地址:Welcome to SmartThings | SmartThings Developers

Samsung smartthings是三星的智能iot平台,一样也是提供了发现、查询和控制设备的能力,同时支持自动更新设备主动上报的状态属性,另外允许用户创建一些rules对设备进行联动控制。

认证授权

smartthings的认证授权是双向的,这一点跟ifttt不大一样。开发者自己的平台授权给smartthing,同时smartthing也会授权给开发者的服务,都采用oauth认证流程,提供access token和refresh token。

Device Handler Type

开发者服务管理的设备在上报到smartthing平台都需要对应到一个device handler type。

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

设备类型后面带的是Capability(能力)。 

Interaction Types

首先需了解开发者与smartthings平台交互的请求的类型定义为以下系列

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

 主要有discoveryRequest,smartthings平台从开发者的服务那获取到的设备列表;

stateRefreshRequest,smartthings请求指定的设备的属性状态;

commandRequest,smartthings请求对开发者的设备下达特定的命令动作;

stateCallback,开发者的云服务发送更新设备状态的请求到smartthings平台,实时刷新设备的状态。

Google assistant

是谷歌推出的一款智能语音助手。官网地址Actions on Google Smart Home  |  Google Developers

Fulfillment

开发者实现的对接Google assistant smart home平台的服务,实现发现设备、查询和控制设备、事件上报和通知的功能。Google平台定义了一系列iot设备的模型,包括设备具备的功能、支持的命令、数据上报和通知,可以选择具备某些功能的设备模型来匹配新的设备。

action.devices.SYNC

必须实现的请求之一,即发现设备获取设备列表的请求。

action.devices.QUERY

必须实现的请求之一,即查询指定设备的属性的请求。返回设备的具体信息包括具备的Trait及其属性。

action.devices.EXECUTE

必须实现的请求之一,即对指定的设备请求指定某个命令。

如执行action.devices.commands.OnOff需要在请求体中的“execution”字段中带以下参数:

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

 action.devices.DISCONNECT

必须实现的请求之一,即当用户在Google assistant中unlink了他们的设备账号,开发者的服务会给Google平台发起的请求,表示用户断开了连接。

Device Type

Google 平台支持了许多通过的设备类型,如我们公司最近在适配的扫地机,就有对应的一种device type,如下:

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

Trait

 Trait,指的是某个设备类型具备的功能条目,如action.devices.traits.OnOff 、action.devices.traits.OpenClose、action.devices.traits.Locator 

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

每一个Trait的具体实现会在SYNC、QUERY、EXECUTE中体现

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

 与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

例如最近google的第三方适配器项目也做了一些适配开发工作,增加了对公司扫地机产品的支持,使得用户可以通过google语音助手控制自己的扫地机。定义扫地机的模型为action.devices.types.VACUUM,按照推荐实现以下功能;

与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

 

写在最后

由于有些开发工作还在进行过程,所以本文章未能对所有功能都做具体的介绍和开发指导。后面有时间会再继续完善!

本文章来源于互联网,如有侵权,请联系删除!原文地址:与第三方iot平台IFTTT&Smartthings&Google对接开发iot物联网云服务

相关推荐: 阿里云物联网平台创建产品设备的方法

一、首先在阿里云云平台注册一个账号; 二、进入物联网平台 (aliyun.com),点击公共实例 三、点击左侧产品中的创建产品 四、在弹出的界面填写相关的产品信息:(由于是我用的是ESP8266,我选的是自定义品类、直连设备、WiFi连网、ICA、检验方式为弱…