树莓派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
目录
相关文章
|
2天前
|
人工智能 运维 专有云
阿里云通过信通院多项评估,获评央国企上云服务商“全量领导者”
阿里云飞天企业版凭借“一云多算”能力拿下“可信云技术最佳实践”奖,并通过《面向一云多芯专有云技术能力要求》、《“云+应用”一体化运维能力要求》等多项评估。
|
8天前
|
存储 运维 监控
阿里云物联网平台的优势
【7月更文挑战第19天】阿里云物联网平台的优势
19 1
|
1月前
|
存储 数据库 文件存储
阿里云企业上云扶持权益详解,助力企业数字化转型
在当今数字化浪潮中,企业上云已成为提升竞争力的关键一步。阿里云深知企业在上云过程中的需求和挑战,因此特别推出了一系列扶持权益,以满足不同规模和类型企业的需求。这些权益不仅涵盖了云产品的优惠价格,还包括技术支持、创业扶持等多个方面,旨在帮助企业降低成本,提升运营效率,快速融入智能时代。
阿里云企业上云扶持权益详解,助力企业数字化转型
|
24天前
|
弹性计算 运维 Kubernetes
阿里云ECS与混合云策略结合,提供云上云下无缝对接,提升业务灵活性和运维效率。
【7月更文挑战第3天】阿里云ECS与混合云策略结合,提供云上云下无缝对接,提升业务灵活性和运维效率。ECS支持多种计费模式和先进架构,保证低延迟计算。混合云融合公有云灵活性与私有云安全,实现资源最优配置。通过VPC互通、应用迁移、数据同步实践,确保安全合规,助力企业数字化转型。阿里云服务展示技术实力,支持企业在混合云时代抓住机遇。
54 3
|
2月前
|
数据处理 云计算
阿里云中小企业专享上云权益与上云抵扣金申请流程参考
阿里云针对企业用户推出上云权益和上云抵扣金福利。中小企业如未在阿里云活动页找到适合的产品或解决方案,可通过专门通道申请上云权益,阿里云将派专人提供解决方案和优惠。此外,阿里云为初创企业推出了创业者计划,成功加入该计划后,阿里云为初创企业提供最低3500元、最高100万元的上云抵扣金,助其零成本享受云资源和技术服务。这些措施简化申请流程,为中小企业提供实质性经济支持,让其更轻松享受云技术的便利。
阿里云中小企业专享上云权益与上云抵扣金申请流程参考
|
1月前
|
存储 关系型数据库 MySQL
最新2024年阿里云618优惠活动「创新加速季」5亿上云补贴你领了吗?
阿里云2024年618「创新加速季」推出5亿补贴活动,新用户可享云产品大幅优惠。包括云服务器E实例(2核2G,3M带宽,40G ESSD)99元/年,RDS MySQL(2核2G)99元/年,OSS存储包(500GB)118.99元/年,以及无影云电脑(4核8G)98.99元/1年。
852 0
|
2月前
|
存储 缓存 安全
阿里云服务器实例规格选型参考,根据上云场景选择适合自己的实例规格
对于很多新手用户来说,在初次选择阿里云服务器实例规格的时候,面对众多实例规格往往不知道如何选择,因为云服务器实例规格不同,价格也不一样,本文通过一些常见的选型场景推荐,便于大家在选择云服务器实例规格时做个参考。
阿里云服务器实例规格选型参考,根据上云场景选择适合自己的实例规格
|
2月前
|
Cloud Native 安全 物联网
【阿里云云原生专栏】云边端一体化:阿里云如何利用云原生技术赋能物联网
【5月更文挑战第22天】阿里云借助云原生技术赋能物联网,实现云边端一体化,提升系统弹性与敏捷性。通过容器化部署,保证高可用性与可靠性。在智能交通等领域,阿里云提供高效解决方案,实现实时数据分析与决策。代码示例展示如何使用阿里云服务处理物联网数据。同时,阿里云重视数据安全,采用加密和访问控制保障数据隐私。丰富的工具和服务支持开发者构建物联网应用,推动技术广泛应用与发展。
216 1
|
2月前
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
169 6
阿里云IOC物联网异步处理基础概念
|
2月前
|
监控 物联网
LabVIEW开发基于物联网的多功能功率分析仪
LabVIEW开发基于物联网的多功能功率分析仪
35 2

相关产品

  • 物联网平台