树莓派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
目录
相关文章
|
6月前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
418 1
|
3月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
26天前
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
128 5
|
2月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
2月前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。
|
4月前
|
存储 运维 监控
阿里云物联网平台的优势
【7月更文挑战第19天】阿里云物联网平台的优势
73 1
|
6月前
|
Cloud Native 安全 物联网
【阿里云云原生专栏】云边端一体化:阿里云如何利用云原生技术赋能物联网
【5月更文挑战第22天】阿里云借助云原生技术赋能物联网,实现云边端一体化,提升系统弹性与敏捷性。通过容器化部署,保证高可用性与可靠性。在智能交通等领域,阿里云提供高效解决方案,实现实时数据分析与决策。代码示例展示如何使用阿里云服务处理物联网数据。同时,阿里云重视数据安全,采用加密和访问控制保障数据隐私。丰富的工具和服务支持开发者构建物联网应用,推动技术广泛应用与发展。
368 1
|
6月前
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
223 6
阿里云IOC物联网异步处理基础概念
|
6月前
|
监控 物联网
LabVIEW开发基于物联网的多功能功率分析仪
LabVIEW开发基于物联网的多功能功率分析仪
48 2
|
6月前
|
传感器 机器学习/深度学习 算法
LabVIEW开发工业物联网状态监测
LabVIEW开发工业物联网状态监测
69 2

热门文章

最新文章

相关产品

  • 物联网平台
  • 下一篇
    无影云桌面