漫谈LiteOS-端云互通组件-MQTT开发指南(上)
1.介绍
SDK简介
Agent Tiny是部署在具备广域网能力、对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报和命令接收等功能。
Agent Tiny SDK是Huawei Agent Tiny软件开发工具包(Software Development Kit),通过Agent Tiny SDK端云互通组件,简单快速地实现与华为物联网平台安全可靠连接,可以大大减少开发周期,快速构建IoT产品。端云互通组件可以采用MQTT、CoAP和LWM2W协议接入物联网平台。Agent Tiny SDK全景图如图1所示。

2. 开发环境
2.1硬件需求
开发计算机、运行win7及以上操作系统
野火开发板STM32F429IG、数据线
Jlink下载器、网线、USB转串口
2.2软件需求
IDE(包括GCC编译器、JDK运行环境、make工具、Jlink驱动、Eclipse)
串口工具(QCOM-V1.6)
3.接入物联网平台流程
根据设备中的接入地址,可以将接入物联网平台分为两种模式:
直接接入物联网平台模式
通过设备发放服务接入物联网平台模式
两种接入方式的对比:
直接接入物联网平台示意图

通过设备发放服务接入物联网凭条示意图

4.直接接入实例
下面以野火STM32F429IG开发板通过以太网直接接入物联网平台为例,详细讲述接入流程。总体操作流程参考下图。

说明:野火STM32F429IG开发板的详细资料可以从http://www.firebbs.cn/forum.php下载。
产品模型参考

设备信息参考

4.1平台侧开发
进入开发中心,根据上图,依次在开发中心中新建项目->新建产品->定义产品模型->注册设备。
新建项目
选择开发者中心并进入。

点击“我的项目”中“+”,创建自己的项目。

输入项目信息后点击“确定”。

点击“进入项目”。

新建产品
选择产品开发新建产品,即可跳转到产品模型定义界面。

选择自定义产品方式创建产品。

补全产品的各类信息,点击“创建”,提示创建成功后点击“确定”,前往产品开发。

定义产品模型
选择新建服务,开始添加产品的相关特性

给产品定义一个属性:batteryLevel,用于设备向平台上报,定义为int型,最大值设置为100,访问模式RWE全部勾选,完成后点击确定;

给产品增加一个命令:cmd,设置下发命令属性名称:ioswitch,用于平台向设备发送命令,定义为int型,最大值99。通过上报和下发,构成了我们演示的上行和下行通道。


添加完后保存:

创建设备
创建了产品模型之后,我们需要根据模型创建具体的设备。点击设备管理->添加真实设备,即可进入添加设备界面。

进入界面之后,选择我们刚才建立的产品模型“sdk_test_001”,进行设备创建。
设备标识(nodeid)是识别该设备的唯一标识符,要求唯一,此处为示范,用户使用时以实际命名为准。

此处注意,确认之后自动生成产品设备ID(deviceid)及密钥(password),请记录下设备标识(nodeid)、设备ID(deviceid)及密钥(password),这三个信息主要用于对接华为云时的设备鉴权。

创建完毕之后,即可在设备管理中看到刚刚创建的设备,此时设备状态为离线。

到此为止,平台侧开发完毕。
4.2设备侧开发
设备侧开发前准备
说明:SDK采用的是GCC+MakeFile模式,用户可以根据自己的IDE开发环境灵活适配。
修改mk文件
集成开发环境搭建好后,修改targets\STM32F429IGTx_FIRE\config.mk
CONFIG_OS_TYPE := "liteos"
CONFIG_ARCH_CPU_TYPE := "armv7-m"
CONFIG_SHELL_ENABLE := y
CONFIG_STIMER_ENABLE := y
CONFIG_DRIVER_ENABLE := y
CONFIG_AT_ENABLE := y
CONFIG_CJSON_ENABLE := y
CONFIG_TCPIP_ENABLE := y
CONFIG_TCPIP_TYPE := "lwip_socket"
CONFIG_DTLS_ENABLE := y
CONFIG_DTLS_TYPE := "mbedtls_cert"
CONFIG_MQTT_ENABLE := y
CONFIG_MQTT_TYPE := "paho_mqtt"
CONFIG_OC_MQTT_ENABLE := y
CONFIG_OC_MQTT_TYPE := "soft"
CONFIG_DEMO_ENABLE := y
CONFIG_DEMO_TYPE := "oc_tls_mqtt_demo" ### 产品逻辑 ###
修改接入信息
参考如下内容,修改demos/oc_tls_mqtt_demo.c
#define DEFAULT_LIFETIME 10
#define DEFAULT_SERVER_IPV4 "49.4.93.24" //物联网平台MQTT接入地址
#define DEFAULT_SERVER_PORT "8883" //物联网平台MQTT接入端口
#define CN_MQTT_EP_NOTEID "device_001" //平台侧新建的设备标识码
#define CN_MQTT_EP_DEVICEID "c4ef0d27-8ea5-41aa-837f-361cff947601" //平台侧设备创建成功后提供的设备ID
#define CN_MQTT_EP_PASSWD "314483483108d92db143" //平台侧设备创建成功后提供的密钥
编译运行
修改完成,编译然后debug。


4.3调测
通过串口工具,可以看到设备已经和物联网平台建立连接。

登录开发平台->“sdk_test_098”项目 ->设备管理,可以看到我们的设备已经上线,点击调试产品,可以进入我们平台的设备调试界面。

可以看到所创建的设备已经上报的数据

输入ioswitch值88,点击“发送”。

在串口工具可以看到接收到的命令

到此调测完成。
添加华为IoT小助手(微信号:huawei-iot,回复“博客园”)获取更多LiteOS课程。
漫谈LiteOS-端云互通组件-MQTT开发指南(上)的更多相关文章
- 漫谈LiteOS-端云互通组件-MQTT开发指南(下)
1.介绍 SDK简介 Agent Tiny是部署在具备广域网能力.对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报 ...
- Blazor 组件库开发指南
翻译自 Waqas Anwar 2021年5月21日的文章 <A Developer's Guide To Blazor Component Libraries> [1] Blazor 的 ...
- 腾讯云TDSQL MySQL版 - 开发指南 分布式事务
由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...
- 腾讯云TDSQL MySQL版 - 开发指南 二级分区
TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似. 二级分区语法 一级 Hash,二级 List 分区示例如下: MySQL ...
- Amzon MWS API开发之 上传数据
亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...
- libcurl 上传文件,不管文件什么格式 libcurl开发指南
libcurl 上传文件,不管文件什么格式 libcurl开发指南 上传文件 https://curl.haxx.se/download.html curl命令参数很多,这里只列出我曾经用过.特别是在 ...
- 漫谈LiteOS之开发板-串口(基于GD32450i-EVAL)
[摘要] 主要讲解物联网的技术积累,本期我们先带领大家学习漫谈LiteOS之漫谈开发板第一集-串口,本文基于GD32450i-EVAL对串口以及其通信做了一个简要的分析,以及开发过程中遇到的一些技术 ...
- 学习 | jQuery移动端页面组件化开发(一)
最近在学习移动端组件化开发web页面,其中有好多小细节,值的去思考. 主要介绍JS的思路,具体的代码就不贴了,主要是想表达出一种思路 总体来说 1.入口文件,在入口文件中导入插件,插件样式,jquer ...
- 漫谈LiteOS之开发板-GPIO(基于GD32450i-EVAL)
[摘要] 本文主要从GPIO的定义.工作模式.特色.工作场合.以及GD32450i-EVAL开发板的引脚.对应的寄存器以及GPIO的流水灯示例对GPIO加以介绍,希望对你有所帮助. 1定义 GPIO( ...
随机推荐
- Java——写一个求和 “方法”
在c语言中叫做函数 撸代码: import java.math.*; import java.util.Scanner; /*导入一个 math包 * BigDecimal 精确小数 * BigInt ...
- iOS 优化实例
一.接口请求优化 在工程项目中,多个一级界面包含状态,如:服务入口的动态配置,未读消息数量,图片文字等,因此产品设计要每次切换 tab 时都请求数据,及时的更新页面状态.在实际开发中,频繁的调用接口, ...
- Shell 命令 之linux 模式下的编程语言
今天简单介绍一下shell 命令的使用,希望对大家有所帮助!!! 一. 1.首先创建一个文本 在终端 touch test.sh 用gedit test.sh 打开.sh 文件 输入如下,第一行是申明 ...
- 5.Metasploit攻击载荷深入理解
Metasploit 进阶第三讲 深入理解攻击载荷 01 Nesus介绍.安装及使用 Nessus介绍 Nessus是一款著名的漏洞扫描及分析工具,提供完整的漏洞扫描服务,并随时更新漏洞数据库. ...
- JSP+SSH+Mysql+C3P0实现的传智播客网上商城
项目简介 项目来源于:https://gitee.com/2121/shop 本系统是传智播客授课时的开发案例,基于JSP+SSH+Mysql的简单网上商城.在当代开发中,SSH的使用已经逐渐被SSM ...
- PTA 7-42 整型关键字的散列映射(手写哈希表的线性探测法)
本题考点: 整型哈希表的线性探测法 给定一系列整型关键字和素数P,用除留余数法定义的散列函数将关键字映射到长度为P的散列表中.用线性探测法解决冲突. 输入格式: 输入第一行首先给出两个正整数N(≤10 ...
- (js描述的)数据结构[双向链表](5)
(js描述的)数据结构[双向链表](5) 一.单向链表的缺点 1.只能按顺序查找,即从上一个到下一个,不能反过来. 二.双向链表的优点 1.可以双向查找 三.双向链表的缺点 1.结构较单向链表复杂. ...
- python学习 0 python简介
一.Python简介 python是一门简单易学又功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程的特性.python优雅的语法和动态类型.以及其解释性的性质,使它在许多领域和大 ...
- 基础类封装-pymysql库操作mysql封装
import pymysql from lib.logger import logger from warnings import filterwarnings filterwarnings(&quo ...
- WordPress快速增加百度收录,加快网站内容抓取
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 利用百度站长平台提供的链接 ...