树莓派4&阿里云物联网平台上云开发实操

简介: 阿里云智能IoT事业部智能设备平台研发团队工程师陶宇豪——讲解阿里云物联网平台 树莓派4 上云开发实操。

本次内容包括树莓派4的介绍和体验的分享、阿里云物联网云平台介绍、基于树莓派4的设备端开发演示。专题的形式是以物联网平台为中心,对于接入相关的功能进行介绍,在讲解功能的同时会在树莓派4上使用设备端C语言进行同步的演示。

想看精彩直播回放,请点击这里。

以下为精彩视频内容整理:

image.png

如上图所示,在实际操作中需要用到的主体分为三个方面,分别为阿里云物联网平台、设备端C语言及树莓派4。物联网平台作为设备连接的平台,提供安全可靠的连接通讯能力、海量设备的连接能力、支撑设备数据上云的能力。以及提供云端API,是指通过API调用并下发指令,同时实现设备的远程控制。另外还包括规则引擎、数据分析、边缘计算等增值的服务。

本专题第一个主体主要讲解设备的接入,包括4个功能点,分别为:

  1. 设备接入:设备如何连接物联网平台,如何在设备与平台之间建立安全的设备通路。
  2. 设备通信:设备连接之后,如何与平台提供的服务相互进行通信。
  3. 设备管理:如何管理设备、标识设备、控制设备、查看设备上报的数据。以及平台的交互协议。
  4. 规则引擎转发数据:设备数据上云之后,如何在云端获取和使用。

第二个主体为设备端C语言SDK,目前,在设备端以及提供多种语言的SDK,但C语言的SDK使用率是最高的。本专题以C语言的SDK中的kit为例从以下三点进行讲解:

  1. 介绍SDK的功能以及介绍API
  2. 如何与物联网平台配合使用
  3. 针对嵌入式平台如何适配

第三个主体以树莓派4作为硬件,演示怎样使用C语言SDK连接物联网平台以及与平台的交互。此外,包括透传数据和固件升级。

一、设备接入

设备接入介绍的C语言SDK为一个闭源版本的kit,仅包含上云的核心功能,追求应用性、资源开设的最小化以及免配置。

Linkkit Core说明文档:https://www.yuque.com/aliyun_iot/product/c-sdk.git
Linkkit Core仓库地址:https://code.aliyun.com/linkkit/AiotCore-C-SDK.git

对接方式:将支持主流平台,其他平台如有需要,可发送邮件至如下邮箱咨询: yusheng.yx@alibaba-inc.com
TLS Demo:https://code.aliyun.com/edward.yangx/public-docs/raw/master/progs/AiotCore-C-SDK-raspberry-tls.zip

C语言客户端SDK
包含以下功能点:

  • 以MQTT协议连接阿里云,建立消息上下行双向通道
  • 以MQTT协议+HTTP协议从阿里云获取固件升级
  • WiFi配网(从手机App向设备传递WiFi密码)
  • 设备绑定(建立设备与人的对应关系,是从手机监控设备的基础)

SDK下载地址:
https://code.aliyun.com/linkkit/AiotCore-C-SDK/repository/archive.zip?ref=master

SDK被下载解压后,系统接入平台后,生成3个目录,分别为demo、include、lib。demo主要放置demo的所有演示程序,include包含头文件的目录,lib为各种工具链定义的静态库。如果没有所需的文件,可以发邮件到yusheng.ys@alibaba-inc.com进行联系。

使用步骤
第一步 获取SDK
从上文链接下载压缩包后,内部的lib目录下有各种目标设备架构的SDK

  • 如果运行SDK的目标设备已编译,可直接使用,如ia32-ubuntu-gcc-5.5.0是IntelCPU32位程序可用
  • 如果运行SDK的目标设备未编译,可联系阿里云IoT团队,将工具链同步给阿里编译后获得

第二步 编写系统对接函数
C-SDK可运行在Linux/FreeRTOS/uCOS/Threadx等多种嵌入式操作系统上,调用系统对接函数完成对OS资源的申请释放和具体使用,这些资源包括socket、内存、互斥锁、线程等。系统需要对接的函数包括系统时间戳函数(在SDK里没有时间线程)、针对不同平台的网络相关的对接函数、随机buffer获取函数、日志打印函数以及互斥锁函数(保证线程的安全)。

在树莓派上直接使用对接好的Linux平台的系统函数,然后进行编译运行。已有实现https://code.aliyun.com/linkkit/AiotCore-C-SDK/blob/master/demo/linux_sys.c
需要链接的语言文件有两个,每个demo上都有主程序,针对不同情况的功能进行demo,首先使用AiotCore,在这个demo里仅包含上云和维持运行,不包含其他多余的工作。

第三步 使用MQTT上云
系统对接函数实现后,将它与libiot_sdk.a编译到一起,即可尝试建立设备与云平台之间的通道,熟悉云端控制台

二、设备通信

目前,使用最广泛的为MQTT协议,C-SDK支持MQTT协议,支持的版本为3.1.1。协议地址:http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
MQTT协议是基于发布和订阅的应用层消息协议。在协议中主要关注两个方面,包括消息的类型和消息的主要内容,其中消费者视为设备。消费者和生产者既可以视为设备,也可以是移动端甚至是云端。

image.png

如上图所示,消费者视为树莓派4,可以向物联网平台订阅消息和发布消息,其他是设备端或者移动端就会收到消费者发布的消息,协议规定了QoS0 ~ QoS2的三种服务质量,分别表示消息最多送达一次、最少送达一次、有且仅送达一次。物联网平台目前支持QoS0和QoS1。

三、设备管理

本章主要讲解通过将demo连接到物联网平台后,平台如何标识设备以及消息格式遵循的规则。

image.png

如上图所示,设备管理主要介绍四组概念,包括产品与设备、三元组、物模型及Alink协议。至于控制平台是开发人员与物联网平台的交互界面。

产品:某一类具有相同功能的设备的集合。物联网平台会为创建的每个产品颁发全局唯一的ProductKey。
设备:归属于某个产品下的具体设备。物联网平台会为每个设备颁发产品内唯一的DeviceName。

image.png

上图为一个具体的例子,在帮助文档:https://help.aliyun.com/document_detail/73705.html
中会有所体现。

三元组:指设备在阿里云物联网平台的唯一身份标识,由三部分组成:

  • ProductKey:标识设备所属产品,创建产品时产生,全局唯一
  • DeviceName:标识设备,创建设备时产生,产品内唯一
  • DeviceSecret:物联网平台为设备颁发的设备密钥,创建设备时产生,全局唯一

用demo在连接物联网平台时,demo里内置了一组三元组,进行健全和连接物联网平台。
物模型:将物理空间中的实体数字化,并在云端构建该实体的数据模型。通过定义物模型来定义产品功能,描述设备自身具有的能力,它能做什么,能对外提供哪些服务。定义物模型,也就是定义产品的属性、事件和服务。目的是使设备的数据能够上云。

image.png

由上图所示,为定义产品的属性、事件和服务之间的区别。属性是从平台进行对数据属性的设置,属性改变时可以上报给云平台。事件只能做单纯的上报工作。服务相当于设备侧提供的服务,在平台进行调用,根据具体服务的定义,有时有响应,有时没有响应。属性、事件和服务都是按照功能定义,按照业务分类,使用时可按需求选用。

在树莓派4上进行演示的过程:从创建产品和设备开始,首先登入物联网平台的控制台创建产品,所选类型为自定义品类,其中物模型视为空状态。产品创建成功后生成平台唯一的PK,在设备管理页面创建新的设备,设备创建成功之后生成三元组,作为设备唯一上云的凭证。在树莓派4的SDK程序中打开刚刚运行的demo,设置参数完成后与物联网平台连接。参数包括域名,不同域包括不同的站点。换置三元组之后回到树莓派4,再次运行显示为已连接物联网平台。

设备管理 Alink协议:设备端与物联网平台的交互协议,基于MQTT设计,JSON格式
规范设备端与云端之间的业务数据交互。物模型在使用上体现为Alink协议的一部分。
Alink协议物模型topic可在物联网平台自动订阅。

image.png

协议是双向的,是指从设备主动向云端请求,或者云端向设备请求,格式为上图所示。定义协议的帮助文档:https://help.aliyun.com/document_detail/68702.html 演示部分请看视频回顾。

设备管理 二进制数据与Alink协议

  • 存量设备切换:使用二进制协议的存量设备
  • 新设备希望使用二进制协议

image.png

在平台上提供脚本解析引擎时需要JS的脚本将二进制数据与JSON格式进行转换。演示部分请看视频回顾。

四、规则引擎

image.png

当所有的设备数据信息到达物联网平台之后,如何被自己的服务器获取可以通过规则引擎进行转发,转发到各种各样的云产品上,然后在云产品上获取。如上图所示包括两种形式,一种是规则引擎到各种各样的云产品再到ECS,第二种是在自己的ECS上使用服务端订阅,由于服务端订阅是免费的,所以所能用的流量是有限的。如果有大量的数据需要转发时,可以使用规则引擎到云产品,再到ECS使用云端SDK进行数据的搜索和获取。

扫描下方二维码,加入物联网钉钉交流群,查看更多精彩内容。
物联网二维码2.jpg

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
1月前
|
存储 弹性计算 人工智能
2024阿里云开年采购优惠活动,云服务器99计划可领上云代金券
2024阿里云开年采购优惠活动,云服务器99计划可领上云代金券,2024年阿里云3月优惠「开年采购季」云服务器价格表和优惠券领取,99计划云服务器99元一年起、免费领取上云扶持优惠券,不只是云服务器、云数据库、存储、云电脑、域名等均有活动
|
2月前
|
弹性计算
2024年阿里云服务器优惠活动汇总_普惠上云_阿里云优惠
2024年阿里云服务器优惠活动汇总_普惠上云_阿里云优惠,2024阿里云服务器优惠活动政策整理,轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年,云服务器4核16G10M带宽26元1个月、149元半年,阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价,企业用户2核4G5M带宽199元一年,阿里云百科整理2024阿里云优惠活动政策整理、云服务器CPU内存、带宽、系统盘收费价格表
74 0
|
2月前
|
弹性计算 安全 数据库
阿里云优惠活动中心_精选活动_产品优惠_上云首选_普惠好价
阿里云优惠活动中心_精选活动_产品优惠_上云首选_普惠好价
56 0
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
|
2月前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
172 1
|
10天前
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
122 6
阿里云IOC物联网异步处理基础概念
|
22天前
|
机器学习/深度学习 分布式计算 数据挖掘
阿里云 MaxCompute MaxFrame 开启免费邀测,统一 Python 开发生态
阿里云 MaxCompute MaxFrame 正式开启邀测,统一 Python 开发生态,打破大数据及 AI 开发使用边界。
200 1
|
1月前
|
存储 运维 网络协议
【开源物联网平台】物联网设备上云提供开箱即用接入SDK
IOTDeviceSDK是物联网平台提供的设备端软件开发工具包,可简化开发过程,实现设备快速接入各大物联网平台。设备厂商获取SDK后,根据需要选择相应功能进行移植,即可快速集成IOTDeviceSDK,实现设备的接入。
118 0
|
1月前
|
存储 安全 网络协议
2024阿里云上云采购季活动,云服务器计算型c8a、通用型g8i/g8a/g8y实例区别及价格参考
在阿里云2024年的上云采购季活动中,除了以往活动中有的轻量应用服务器和经济型e、通用算力型u1、计算型c7、通用型g7实例之外,阿里云还新增了计算型c8a、通用型g8i/g8a和g8y实例规格,这些都是具有超高性能的AMD&Intel&倚天第八代云服务器,那么这几个云服务器实例规格的性能及适用场景是怎样的呢?本文为大家介绍阿里云计算型c8a、通用型g8i/g8a和g8y实例规格性能及适用场景。
368 0
2024阿里云上云采购季活动,云服务器计算型c8a、通用型g8i/g8a/g8y实例区别及价格参考
|
2月前
|
消息中间件 网络协议 物联网
MQTT协议问题之阿里云物联网服务器断开如何解决
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
130 1

相关产品

  • 物联网平台