物联网平台开发浅析和实战(一)

简介: 物联网平台使用教程,包括设备接入,以及消息通信。

1、前言

内容:物联网平台概论、设备接入以及消息通信 官网地址
时长:建议学习时长整体50分钟,理论40分钟,实战10分钟
代码:设备端demo、服务端demo
约定:物联网平台已经开通并登陆 https://iot.console.aliyun.com
导航:下一课

2、概论

2.1、物联网平台是什么、能干什么

阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供Open API,服务端通过调用Open API将指令下发至设备端,实现远程控制。
物联网平台也提供了其他增值能力,如设备管理、规则引擎等,为各类IoT场景和行业开发者赋能。
image.png

2.2、设备接入

物联网平台支持海量设备连接上云,进行稳定可靠地双向通信。
• 支持蜂窝(2G/3G/4G/5G)、NB-IoT、LoRaWAN、Wi-Fi等不同网络设备接入,解决企业异构网络设备接入管理痛点。
• 支持MQTT、CoAP、HTTP/S等多种协议的接入,既满足长连接的实时性需求,也满足短连接的低功耗需求。
• 开源多种平台设备端SDK,提供跨平台移植指导,赋能企业基于多种平台做设备接入。

2.3、设备管理

物联网平台提供完整的设备生命周期管理功能,支持设备注册、功能定义、数据解析、在线调试、远程配置、固件升级、远程维护、实时监控、分组管理、设备删除等功能。
• 提供设备物模型,简化应用开发。
• 提供数据存储能力,方便用户海量设备数据的存储及实时访问。
• 提供OTA升级能力,赋能设备远程升级。
• 提供设备影子缓存机制,将设备与应用解耦,解决不稳定网络下的通信不可靠痛点。

2.4、规则引擎

物联网平台规则引擎包含以下功能:
• 服务端订阅:订阅某产品下所有设备的某个或多个类型消息,您的服务端可以通过AMQP客户端或消息服务(MNS)客户端获取订阅的消息。
• 云产品流转:物联网平台根据您配置的数据流转规则,将指定Topic消息的指定字段流转到目的地,进行存储和计算处理。
• 场景联动:配置简单规则,即可将设备数据无缝流转至其他设备,实现设备联动。

2.5、Open API

物联网平台提供丰富的API接口,方便您管理设备或者给设备发送控制指令。同样的,Open API 也有多种语言版本的SDK。

3、基础概念

3.1、设备三元组

• 一个设备包含4个信息:productKey、productSecret、deviceName、deviceSecret,其中productKey、deviceName、deviceSecret我们称为三元组信息,也叫做设备证书,在创建设备时由物联网平台颁发。
• productKey、productSecret 是产品信息,产品是一类设备的集合,productKey 是产品的唯一性标识符,productSecret 是产品密钥,后面动态注册会用到。
• deviceName、deviceSecret 是设备信息,创建产品后创建设备,productKey+deviceName 是设备的唯一性标识符,deviceSecret 是设备密钥,设备接入时进行身份验证要用到。
• 三元组这个概念是我们在使用物联网平台的过程中一直会出现的概念,也是阿里云iot最重要、最基础的概念。三元组是平台唯一的,是物联网平台识别一个设备的重要标识。

3.2、接入协议

物联网平台支持MQTT、CoAP、HTTP/S等多种协议的接入,其中MQTT是使用最广泛的一种接入协议,本次讲解设备接入就是基于MQTT来接入的。
MQTT 接入的几个概念
• host:设备接入的域名,${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com:1883
• keepalive:心跳时间,30秒~1200秒,物联网平台 1.5 倍心跳时间内没有收到心跳会断开设备连接
• cleanSession:会话清除,0 或 1,设置为 1 时无法接收离线消息
image.png

3.3、通信机制

MQTT 是基于对 topic 的订阅和发布(sub/pub)来通信的。
• topic:物联网平台提供 topic 定义功能,用户可以自定义topic的字段,也可以使用平台默认定义好的topic。消息发布者往topic发送消息,消息订阅者从topic接收消息,两者是异步的。物联网平台的topic包含productKey和deviceName,所以可以做到设备粒度的权限控制。设备只能往自己的topic发布消息,也只能订阅自己的topic。topic有发布权限和订阅权限,这个是针对设备视角的。
• qos:消息质量,物联网平台支持 qos=0 和 qos=1 的消息质量。qos=0 意味着消息最多到达一次,可能丢失,设备离线无法接收;qos=1 意味着消息至少到达一次,可能收到多次,设备离线期间的消息在设备上线后可以接收到。当设备端接入时设置了cleanSession=1,那么即使qos=1的消息,设备重新上线后也是收不到的。
image.png

4、设备接入及消息通信

本例将完成如下步骤,涉及的demo代码包通过课程【前言】提供的链接下载即可。开发环境的搭建不再赘述,是普通 maven 工程。
设备端代码:com.aliyun.alink.demo.devicesdk.chapter01.HelloWorld
服务端代码:com.aliyun.alink.demo.openapi.chapter01.MessageDownlink
• 创建一个产品,名为:一个HelloWorld
• 创建一个设备,名为:device_0
• 使用设备端SDK让设备 device_0 上线
• 使用设备端SDK让设备 device_0 发送消息给物联网平台
• 使用 Open API 发送消息给设备 device_0

4.1、创建产品

官网文档:https://help.aliyun.com/document_detail/73728.html
创建产品 普通.gif

4.2、创建设备

官网文档:https://help.aliyun.com/document_detail/73729.html
创建设备 普通.gif

4.3、设备端 SDK 接入

启动:com.aliyun.alink.demo.devicesdk.chapter01.HelloWorld,填写设备三元组信息后直接启动。
整体流程:初始化设备信息-->注册下行监听-->初始化SDK-->等待初始化完成-->订阅topic。
注意:最后一步订阅的topic是/${productKey}/${deviceName}/user/get,下面 Open API 消息下行要用到。
image.png
设备状态:
• 未激活:设备刚创建,从来没有连接过平台是未激活状态;设备连接到平台即可激活
• 在线:设备和平台建立连接
• 离线:设备从平台断开连接

4.4、设备端 SDK 消息上报

接上一步,设备端调用publish接口上报消息,本例发送的topic=/${productKey}/${deviceName}/user/update,消息内容为 hello iot。
整体流程:初始化设备信息-->注册下行监听-->初始化SDK-->等待初始化完成-->发布消息到topic
发送消息后查看日志。
设备上报消息日志 普通.gif

4.5、Open API 消息下行

启动:com.aliyun.alink.demo.openapi.chapter01.MessageDownlink,填写账号信息和设备信息后直接启动。
整体流程:初始化账号信息-->初始化SDK-->发送消息给设备。
本例发送的topic=/${productKey}/${deviceName}/user/get,消息内容为 hello world。
发送消息后查看日志。
云端下发消息日志 普通.gif

5、开源接入

针对不能够使用物联网平台提供的 SDK 来完成设备接入和消息通信的用户,物联网平台也提供了开源 MQTT SDK 接入以及基于 http 请求的 Open API 调用的指导。

5.1、基于开源 paho 的设备端接入

官网文档 https://help.aliyun.com/document_detail/73742.html

5.2、基于 http 请求的 Open API 调用

官网文档 https://help.aliyun.com/document_detail/30560.html

6、总结

本次课程对物联网平台及部分基础概念做了简单的介绍,对设备接入、设备消息上报(绿色线路)、Open API 消息下行(蓝色线路)的开发链路做了详细的说明。实现了一个最基本的物联网场景。
image.png

7、后续

• 设备通过物联网平台上报了消息,那么消息如何展示到我的网页上呢?
• 设备只能往自己的topic发送消息,那么设备A如何发送消息给设备B呢?

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
6月前
|
存储 物联网 大数据
助力工业物联网,工业大数据之脚本开发【五】
助力工业物联网,工业大数据之脚本开发【五】
80 0
|
3月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
2月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
2月前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。
|
2月前
|
传感器 安全 物联网
物联网安全实战:保护你的智能设备免受攻击
【9月更文挑战第3天】物联网安全是一项复杂而艰巨的任务,需要我们共同努力来应对。通过采取上述实战措施,我们可以有效保护智能设备免受攻击,保障用户的数据隐私和网络安全。在未来的物联网发展中,我们将继续面临新的安全挑战和威胁,但只要我们保持警惕和不断创新,就一定能够构建一个更加安全、可靠的物联网生态系统。
|
4月前
|
安全 物联网 区块链
云端防御:云计算时代的网络安全策略与实战《未来已来:探索区块链、物联网与虚拟现实的融合革新》
【7月更文挑战第31天】在数字化转型的浪潮中,云计算已成为推动企业增长的核心动力。然而,随着数据和应用逐渐迁移到云端,网络安全问题也愈发严峻。本文将探讨云计算环境中的安全挑战,并提出相应的防御策略。通过分析云服务模型、安全威胁及信息安全技术的应用,结合代码示例,本文旨在为读者提供一套实用的云端安全防护方案。
47 1
|
6月前
|
监控 物联网
LabVIEW开发基于物联网的多功能功率分析仪
LabVIEW开发基于物联网的多功能功率分析仪
48 2
|
6月前
|
传感器 机器学习/深度学习 算法
LabVIEW开发工业物联网状态监测
LabVIEW开发工业物联网状态监测
69 2
|
6月前
|
传感器 存储 物联网
【C 言专栏】基于 C 语言的物联网开发
【5月更文挑战第6天】C 语言在物联网发展中扮演关键角色,适用于开发嵌入式系统、通信协议及云平台后端服务。其高效、灵活、可移植的特性适应资源有限的环境,确保设备兼容性。尽管开发挑战较大,如代码可读性,但借助辅助工具可改善。随着物联网技术进步,C 语言将持续发挥重要作用,塑造智能未来。
129 0
【C 言专栏】基于 C 语言的物联网开发
|
6月前
|
传感器 安全 物联网
C语言:物联网开发利器
C语言:物联网开发利器

相关产品

  • 物联网平台