文章概要

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

IFTTT开发指导

官网地址:Service API requirements - IFTTT

IFTTT是IF this then that的简写。IFTTT是一个智能iot平台,提供联动控制不同iot厂商设备的能力,实现当某个场景发生的情况下触发某个动作。近期在完善公司ifttt项目,新增适配几个新型设备,有shortcut,Switch和Camera,根据设备的功能和产品需求,新增了一些接口。IFTTT对于接入平台的设备类型和设备能力没有限制,也没有抽象模型定义相关对象,主要还是面向web接口,提供了一系列http接口协议指导restful接口的开发。
开发者在开发自己的service时,可以提供action query trigger三类请求;

Action

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

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

Trigger

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

Query

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

Field

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

Ingredient

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

Oauth认证

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

授权认证页面:

认证和发布

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

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

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。

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

Interaction Types

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

主要有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”字段中带以下参数:

action.devices.DISCONNECT

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

Device Type

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

Trait

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

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

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

写在最后

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

与第三方iot平台IFTTTSmartthingsGoogle对接开发iot物联网云服务相关推荐

  1. IoT名企:物联网云服务龙头企业软硬实力兼备,机智云喜获高新技术企业认定

    一只纯靠实力的独角兽:创业数年持续进行研究开发与技术成果转化,构建企业核心自主知识产权,通过知识密集.技术密集形成领先的技术差异化,并以此为基础开展经营活动达成收入,凭借这傲人成绩,机智云通过&quo ...

  2. 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台

    国内物联网平台(5) --机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测. ...

  3. NB-IoT成为利器,物联网云服务平台如何卡位?

    随着NB-IoT生态的逐渐完善,将主导LPWAN,成为物联网时代下的赢家,然而在这个大连接时代,所收集的数据加以利用,而"云端"则成为基础,也就是云.端.到设备云端整合,所采集的大 ...

  4. 微信小程序云开发已授权服务商开发,无法使用云服务

    微信小程序云开发已授权服务商开发,无法使用云服务错误解决方法 WASubContext.js?t=wechat&s=1648975635955&v=2.14.1:17 cloud in ...

  5. 租借云服务器 工业信号数据采集,一种工业用物联网云服务平台智能采集方法...

    主权项: 1.一种工业用物联网云服务平台智能采集方法,其特征是,具体步骤如下:(1)系统的组成:数据采集模块.数据传输模块和应用管理模块.物联网的云服务系统包括:客户端.注册服务器云端服务器.物联网: ...

  6. 聊聊如何在华为云IoT平台进行产品开发

    本文分享自华为云社区<如何基于华为云IoT物联网平台进行产品开发>,作者: Super.雯 . 华为云物联网平台承载着南北向数据互通的功能职责.在华为云物联网平台基础上实现端到端物联网业务 ...

  7. LiveMedia视频平台与第三方国标平台级联对接异常断流

    最近在某铁路监控项目中收到用户反馈LiveMedia视频平台和第三方视频平台级联时,视频流在播放一段时间后异常断开,我司研发得知情况况,快速响应,远程查看现场,查看级联配置如下 LiveMedia视频 ...

  8. 分享一套golang实现的 IM 系统,一键部署服务端,客户端SDK全平台支持,可以替代IM云服务

    开篇 自互联网诞生以来,即时通讯平台就一直存在.从世界范围来看,WhatsApp.Facebook. 微信.Telegram是领先的消息平台,用户主要使用这些平台与家人和朋友保持联系.随着互联网的发展 ...

  9. 物联网小白入门式教学,如何快速接入一个云平台② 机智云物联网云服务(重点讲解小白学习思路,高手忽略)

    文章目录 1.背景 2.接入机智云思路 2.1 关于应用开发(重点内容) 2.2 关于设备接入(重点内容) 授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周 ...

最新文章

  1. [2019.2.24]BZOJ4591 [Shoi2015]超能粒子炮·改
  2. 离线轻量级大数据平台Spark之MLib机器学习库概念学习
  3. win7 64系统无法看见其他计算机,win7一直显示正在启动进不了系统怎么办
  4. [vue] 第一次加载页面时会触发哪几个钩子?
  5. OpenCV学习笔记(七):形态学morpholgy(1):腐蚀/膨胀:enrode(),dilate()
  6. I/O复用函数的比较
  7. [深度学习TF2] 梯度带(GradientTape)
  8. 唐山师范学院计算机科学与技术地址,2021年唐山师范学院有几个校区,大一新生在哪个校区...
  9. Python基本操作(三)标准运算符与赋值
  10. STL迭代器iterator
  11. warning C4482: 使用了非标准扩展: 限定名中使用了枚举
  12. 双光耦开关电源电路图_简单的开关电源电路图大全(六款简单的开关电源电路设计原理图详解)...
  13. Linux下结束进程的命令
  14. 三级模式两级映像/数据库系统结构
  15. Wagtail 教程 2:简单博客实现
  16. win10专业版和企业版的区别
  17. 关于jQuery中的submit事件
  18. 中科院,量子计算机,中科院传来喜讯,中国量子技术领先世界,美:中国学者都不睡觉吗...
  19. 第三方推送(小米华为友盟)接入实践
  20. 刀具中心和主轴旋转中心不一致带来的影响

热门文章

  1. 【CodeForces 1260E --- Tournament】
  2. Python的整数与浮点数计算
  3. Doxygen 详细使用
  4. 股票 - - 常用指标【中】
  5. 短视频挺进在线音乐腹地
  6. 【数论】狄利克雷卷积
  7. 三万块钱6天的区块链培训,我学会了搭建区块链系统框架?
  8. android全景设置高度,Android全景SDK | 百度地图API SDK
  9. linux解决make依赖关系,makefile 自动处理头文件的依赖关系
  10. Eclipse在导入项目时显示 “Invalid Project Description”时的处理方法