【专栏】国内外物联网平台初探(篇二:阿里云物联网套件)
【专栏】国内外物联网平台初探(篇二:阿里云物联网套件)
作者:马智
物联网智库 整理发布
转载请注明来源和出处
------ 【导读】------
物联网智库将于本周开始,在每周五下午的第二篇文章推送由马智先生研究撰写的系列文章——《国内外物联网平台初探》。
物联网智库将在每周五下午的第二篇文章推送由马智先生研究撰写的系列文章——《国内外物联网平台初探》
—— 国内——
(一)百度物接入IoT Hub
(二)阿里云物联网套件
(三)QQ物联·智能硬件开放平台
(四)京东微联
(五)机智云IoT物联网云服务平台及智能硬件自助开发平台
(六)庆科云FogCloud
(七)Ablecloud物联网自助开发和大数据云平台
—— 国外——
(一)亚马逊AWS IoT
(二)微软Azure IoT
(三)IBM Watson IoT
今天是这个系列的第二部分,介绍阿里云物联网套件。
架构
数据通道
为设备和物联网应用程序提供发布和接收消息的安全通道。数据通道目前支持CCP协议和MQTT协议。
用户可以基于CCP协议实现Pub/Sub异步通信,也可以使用远程调用(RPC)的通信模式实现设备端与云端的通信。
用户也可以基于开源协议MQTT协议连接阿里云IoT,实现Pub/Sub异步通信。
安全认证&权限策略
为每个设备颁发阿里云IoT的凭证,依赖凭证才能连接阿里云IoT
提供设备级的授权粒度,任何设备必须经过授权才能对某个Topic发布订阅消息
服务端也需要经过授权才能操作其他账号下的Topic
设备共享平台
提供Topic跨账号的授权,帮助用户实现跨厂商的数据共享,进而实现更加丰富智能的场景。
规则引擎
为用户提供类SQL语言的规则引擎,帮助用户过滤数据、处理数据,并能够发送数据到阿里云其他服务,例如RDS,OTS,ONS等等,也能够发送到数据到其他Topic。
设备快照(待上线)
保存设备的最新状态或者APP希望的最新状态在云端,然后当设备或APP连接上来时,同步状态给设备或APP。
应用场景
功能
名词解释
概念 |
描述 |
产品 |
同类设备的集合,方便管理设备 |
AppKey |
阿里云IoT为产品颁发的唯一标识 |
AppSecret |
阿里云IoT为产品颁发的产品密钥,和AppKey成对出现 |
设备ID |
对应的英文名称:DeviceId。阿里云IoT为设备颁发的唯一标识 |
设备秘钥 |
对应的英文名称:DeviceSecret。阿里云IoT为设备颁发的设备秘钥,和设备ID成对出现 |
RPC |
设备端向云端发送数据协议,这只适用CCP协议接入的设备 |
RRPC |
由云端发起,但是期望设备端响应的数据交互协议,这只适用CCP协议接入的设备 |
Topic |
用作消息的路由转发,例如设备A将消息发布到Topic:123中,设备B可以订阅Topic:123得到消息。CCP协议和MQT协议都支持 |
发布 |
对应的英文名称:Pub。设备端的发布协议,操作Topic的权限,意思是具有往Topic中发布消息的权限 |
订阅 |
对应的英文名称:Sub。设备端的订阅协议,操作Topic的权限,意思是具有从Topic中订阅消息的权限 |
阿里云物联网套件限制
设备接入云端的协议
基于CCP接入(MQTT协议的精简版)
协议本身具备安全算法,不依赖TLS算法
协议大小更精简,包头,payload占用字节更少。例如header只有1个字节
协议支持多种通信模式,相对于MQTT,不仅支持Pub/Sub,还支持RPC/RRPC
基于MQTT接入
被广泛用在嵌入式设备的消息传输上
COAP(待上线)
CoAP是一种软件协议旨在用于非常简单的电子设备,让他们通过互联网交互通信。详情请访问COAP•HTTP(待上线)ü数据通道支持设备通过
HTTP协议
用RESTAPI的方式连接阿里云IoT。设备可以通过POST方式实现Pub消息到某个Topic。
设备接入云端的协议 – 基于CCP接入
基于CCP接入云端,主要包含两大流程:
设备的认证设备
接入数据通道
A:设备使用控制台申请的密钥进行签名请求授权,签名使用 hmacmd5算法(可选 hmacsha1),签名内容=devieceid+appkey,使用key=appSecret+deviceSecret
B:服务器验证签名合法,并返回pubkey证书
C:设备生成随机密钥seedkey,使用pubkey RSA加密传输给服务器
D:服务器确认返回令牌sid ,同时返回签名sign,签名内容=sid,签名的key=appSecret+deviceSecret,同时返回动态负载的接入服务器ip供设备连接
E:客户端使用私钥seedkey解密令牌,进行数据通信,客户端可选协议模式支持ccpmqttcoap...
设备接入云端的协议 – 基于MQTT接入
基于MQTT接入云端,主要包含两大流程:
设备获取证书设备
接入数据通道
A:设备使用控制台申请的密钥进行签名请求授权,签名使用 hmacmd5算法(可选 hmacsha1、md5),签名内容=devieceid+appkey,使用key=appSecret+deviceSecret
B:服务器验证签名合法,并返回pubkey证书(X.509格式)
C:设备使用pubkey证书TLS协议连接MQTT
通信模式
IoT Hub支持两种通信模式:
RPC/Revert-RPC
Pub/Sub
通信模式 - RPC/Revert-RPC
RPC/Revert-RPC(CCP协议具有的通信模式)
RPC是将用户的设备数据通过阿里云转发到用户自己的业务系统,比如可以用户可以将自己设备上报的服务注册到阿里云IoT上,然后设备直接可以调用该服务,完成数据上报;
R-RPC是用户的业务系统远程调用客户端并等待客户端得到一个回执结果,比如远程调用开关并得到开关的状态信息。
通信模式 - Pub/Sub
Pub/Sub(CCP协议和MQTT都支持)
Pub/Sub是基于Topic进行消息的路由转发,让设备端或者服务端可以发布订阅消息,实现异步的通信。适用的场景有M2M(设备与设备间通信),也可以实现设备端与云端的异步通信。
IoT Hub维护所有Topic的发布订阅用户列表。当消息发送到Topic,IoT Hub会检查该Topic的所有订阅用户,然后将消息转发给所有具有订阅该Topic权限的客户端或者服务端。
身份和安全
每个设备需要具备阿里云IoT颁发的凭证才能连接阿里云IoT;
设备与云端通信采用AES、RSA算法加密,从而保证数据传输安全;
为了安全地基于数据通道传输数据,设备有责任保持他们的凭证安全;
数据到达阿里云IoT之后,阿里云IoT通过权限机制保障数据安全转发到其他阿里云服务或者其他设备。
规则引擎
SQL表达式:把一条规则抽象为一条sql表达
例子:
SELECT crypto(userId,’SHA1’) md2, (a+1) al, color c, config.flag flag, deviceId(),CASE col.a WHEN 1 THEN ‘Y’ ELSE ‘N’ END flagFROM“/12345/#”WHEREc is not null and b<0 select参数和where条件可以使用消息的payload属性作为列,不支持子查询。
规则引擎
1 - FROM
“topic”
当有符合topic规则的消息到达时,消息的payload数据以json形式被上下文环境使用(如果消息格式不合法,将忽略此消息),您可以使用topic()函数引用具体的topic值。
2- SELECT
select的属性来源于消息的payload,可以使用json表达式形式引用,也可以来源于函数比如deviceId()。
3- WHERE
规则触发条件,条件表达式。当符合topic的消息到达时,这条消息触发规则的条件。
4- json表达式
select和where可以直接使用json表达式。json表达式支持属性,也支持数组。如果payload数据解析出错将会导致规则运行失败。 转发数据action中的表达式需要使用${表达式} 来使用。
平台功能与界面 – 创建产品
平台功能与界面 – 产品信息
平台功能与界面 – 添加设备
平台功能与界面 – 设备信息
平台功能与界面 – 设备授权
平台功能与界面 – 批量下载设备ID
平台功能与界面 – 服务配置
服务配置的所有功能目前只支持CCP协议接入的设备,MQTT协议接入的设备不能使用该功能
平台功能与界面 – Topic管理
CCP协议和MQTT协议都支持Pub/Sub的通信方式,Pub/Sub是基于Topic路由转发消息的。Topic是动态创建的,用户可以通过服务端调用OpenAPI或者设备端调用协议方法往某个Topic中发布消息,云端自动判断该Topic是否存在,不存在即创建。
平台功能与界面 – Topic信息
消息内容将会转换成二进制分发给订阅者。所以如果发布的是JSON格式的消息,订阅者只能拿到转码过后的二进制数据,如果想要拿到JSON数据,需要再进行UTF-8转换成JSON。
阿里云物联网套件OPEN API(1)
阿里云物联网套件OpenAPI分为以下3类:
控制指令接口
推送数据给设备并得到响应
推送数据给设备不需要得到响应
设备互联接口
发消息到指定的Topic
订阅指定Topic
取消订阅指定Topic
授权相关接口
指定设备授权
通过ID撤销设备权限
通过Topic撤销设备权限
修改设备权限列出设备的权限
控制指令接口只适用CCP协议接入的设备;设备互联接口和授权相关接口适用于CCP或者MQTT协议接入的设备。
阿里云物联网套件OPEN API(2)
调用方式
通过向API的服务端地址发送HTTP GET请求,并按照接口说明在请求中加入相应请求参数来完成的;根据请求的处理情况,系统会返回处理结果。
请求结构
IotAPI的服务接入地址为:iot.aliyuncs.com
通信协议:支持通过HTTP或HTTPS通道进行请求通信。为了获得更高的安全性,推荐您使用HTTPS通道发送请求。
请求方法:支持HTTPGET方法发送请求,这种方式下请求参数需要包含在请求的URL中。
请求参数:每个请求都需要指定要执行的操作,即Action参数(例如Sub),以及每个操作都需要包含的公共请求参数和指定操作所特有的请求参数。字符编码:请求及返回结果都使用UTF-8字符集进行编码。
阿里云物联网套件OPEN API(3)
签名机制
IOT服务会对每个访问的请求进行身份验证,所以无论使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名(Signature)信息。
IOT服务通过使用Access Key ID和Access Key Secret进行对称加密的方法来验证请求的发送者身份。
Access Key ID和Access Key Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中Access Key ID用于标识访问者的身份;AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。
物联网IOT服务端SDK
目前仅支持Java SDK和PHP SDK
API列表
物联网IOT服务端SDK示例(以Java为例)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/putiancaijunyu/article/details/78920810
原作者删帖 不实内容删帖 广告或垃圾文章投诉
【专栏】国内外物联网平台初探(篇二:阿里云物联网套件)相关推荐
- 手把手教你用Arduino接入阿里云物联网平台,ESP8266连接阿里云物联网平台必看教程...
使用Ardui no 的方式快速连接阿里云物联网平台. 文中提到的 AliyunIoTSDK 这个 Arduino 库,可以在 Arduino 库商店里搜索到(搜索 AliyunIoTSDK) Ali ...
- 001-STM32+Air724UG(4G模组)基本控制篇(阿里云物联网平台)-使用MQTT接入阿里云物联网平台
前言 这节测试下使用STM32+Air724UG 和 Android 和 微信小程序 和 网页端 接入阿里云物联网平台 当前的各种物联网平台整体思想是提供一个网页端让用户去注册设备 这个设备就对应一个 ...
- 初探树莓派与阿里云物联网平台
文章目录 一.创建产品 二.创建设备 三.运行树莓派 四.参考资料 一.创建产品 首先我们需要进入到阿里云物联网平台,进入控制台,选择产品,创建产品 设置产品名称和连网方式等,点击确认,完成创建 创玩 ...
- ESP8266开发之旅 阿里云物联网平台篇① 了解阿里云物联网平台(纯理论,了解概念即可)
文章目录 1. 前言 2.阿里云物联网官方文档 2.1 从这里开始--我是开发者 2.2 阿里云物联网平台简介 2.2.1 什么是物联网平台 2.2.2 产品架构 2.2.3 名词解释 2.2.3.1 ...
- [转载]国外物联网平台初探(二):微软Azure IoT
原文链接:http://www.cnblogs.com/ibrahim/p/microsoft-azure-iot.html 平台定位 连接设备.其它 M2M 资产和人员,以便在业务和操作中更好地利用 ...
- 国内物联网平台初探(七) ——Ablecloud物联网自助开发和大数据云平台
平台定位 面向IoT硬件厂商,提供设备联网与管理.远程查看控制.定制化云端功能开发.海量硬件数据存储与分析等基础设施,加速硬件实现联网智能化. 架构 服务 云端服务一体化开发引擎 业内独创一体化开发引 ...
- Aliyun 学习笔记(二)阿里云物联网平台介绍
文章目录 1 阿里云物联网平台 1.1 设备接入 1.2 设备管理 1.3 安全能力 1.4 规则引擎 1 阿里云物联网平台 根据阿里云物联网平台文档可以了解到所有有关阿里云物联网平台的介绍. 阿里云 ...
- ESP8266 AT指令连接阿里云物联网平台
模组:ESP-12F || ESP-12S || (保险来说,ESP模组的flash应该 大于4MB.或者说为32Mbit 才可以)待补充 ... 平台:阿里云物联网平台 固件:ESP8 ...
- 阿里云物联网平台测评:以温度报警器开发为例
点此查看 所有教程.项目.源码导航 文章目录 1. 物联网平台概述 2. 阿里云物联网平台的优势 2.1 快速接入 2.2 超高负载能力 2.3 可用性 2.4 安全性 2.5 性价比 3. 温度报警 ...
- ESP-MQTT-AT指令连接阿里云物联网平台
文章目录 文章背景 关键的关键词 本章使用 本章约定 所需资源 技术正文 一:连接方式 二:步骤(简介 3.ESP模块+stm32单片机) 1.创建设备复制三元素组 2.信息生成 3.使用串口工具和云 ...
最新文章
- centos7 yum安装docker
- java array to string_数组到字符串转换(Array to string conversion)
- 用户画像2种数据存储的方式
- JS-获取当前日期-月的天数
- 没事写着玩 系列之 JQ连连看(很丑陋,很初级)
- 守护基于JVM的应用程序
- 常见的工作流框架 Activity JBPM
- 重新分区_全面解析win10系统硬盘分区怎么调整大小
- DOS常用命令(从入门到精通)
- 计算线性回归、指数回归公式
- 彻底理解线性代数; 特征值,特征向量; 线性代数的本质 矩阵的逆矩阵的实质: 行列式值为0的实质: Essense Of Linear Algebra的理解
- iPhone上塔罗牌测试软件,塔罗牌占卜:测Ta对你是用情至深还是一时兴起?准到没朋友!...
- 20M宽带的下载速度到时有没有20MB/s?
- 自定义容器实现类似Windows屏保功能
- SpringBoot框架DataSource多数据源配置
- 数据库常用表操作SQL语句案例
- 用endnote导入参考文献要求期刊名称缩写
- 金庸小说人物知识图谱构建——获取共现关系
- (附源码)小程序 美食教程小程序 毕业设计 190900
- 手游代理行业,现在还有机会吗?
热门文章
- java 反射基础_Java基础教程:反射基础
- 成信大c语言答案P239.C,2011秋季江苏省计算机二级C语言试题与答案.doc
- 使用linux批量引物设计,干货分享:如何快速设计多条qPCR引物?
- php智能代码,php智能分页类代码原创
- JAVA标准输出错误输出,从tsls输出中提取标准错误
- vue 检测ie版本_Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
- 刚装的系统没有sql server(mssqlserver)_数据库与SQL学习
- 单链表的合并算法_图解算法:单链表两两反转 | 眼睛会了手就会系列
- java操作oracle数据_Java连接Oracle数据库操作
- 计算机管理 没有适当的权限,提示没有合适的权限访问怎么办