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)

实名认证的华为云账号

SDK源码

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源码

  • 获取接入信息(进入开发中心的“sdk_test_098”项目中,在“应用 > 对接信息”页面查看“设备接入信息”中的“MQTT接入方式”)

说明: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开发指南(上)的更多相关文章

  1. 漫谈LiteOS-端云互通组件-MQTT开发指南(下)

    1.介绍 SDK简介 Agent Tiny是部署在具备广域网能力.对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报 ...

  2. Blazor 组件库开发指南

    翻译自 Waqas Anwar 2021年5月21日的文章 <A Developer's Guide To Blazor Component Libraries> [1] Blazor 的 ...

  3. 腾讯云TDSQL MySQL版 - 开发指南 分布式事务

    由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...

  4. 腾讯云TDSQL MySQL版 - 开发指南 二级分区

    TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似. 二级分区语法 一级 Hash,二级 List 分区示例如下: MySQL ...

  5. Amzon MWS API开发之 上传数据

    亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...

  6. libcurl 上传文件,不管文件什么格式 libcurl开发指南

    libcurl 上传文件,不管文件什么格式 libcurl开发指南 上传文件 https://curl.haxx.se/download.html curl命令参数很多,这里只列出我曾经用过.特别是在 ...

  7. 漫谈LiteOS之开发板-串口(基于GD32450i-EVAL)

    [摘要] ​主要讲解物联网的技术积累,本期我们先带领大家学习漫谈LiteOS之漫谈开发板第一集-串口,本文基于GD32450i-EVAL对串口以及其通信做了一个简要的分析,以及开发过程中遇到的一些技术 ...

  8. 学习 | jQuery移动端页面组件化开发(一)

    最近在学习移动端组件化开发web页面,其中有好多小细节,值的去思考. 主要介绍JS的思路,具体的代码就不贴了,主要是想表达出一种思路 总体来说 1.入口文件,在入口文件中导入插件,插件样式,jquer ...

  9. 漫谈LiteOS之开发板-GPIO(基于GD32450i-EVAL)

    [摘要] 本文主要从GPIO的定义.工作模式.特色.工作场合.以及GD32450i-EVAL开发板的引脚.对应的寄存器以及GPIO的流水灯示例对GPIO加以介绍,希望对你有所帮助. 1定义 GPIO( ...

随机推荐

  1. PyTorch专栏(一)

    专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60min入门 PyTorch 入门 PyTorch 自动微分 PyTorch 神经 ...

  2. TensorFlow系列专题(六):实战项目Mnist手写数据集识别

    欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 导读 MNIST数据集 数据处理 单层隐藏层神经网络的实现 多层隐藏层神经 ...

  3. Python第七章-面向对象

    面向对象编程基础 一.面向对象概念 1.1 什么是面向过程 ​ 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. ​ 生活中的的例子举例. 1.2 ...

  4. 使用室内三维地图引擎ESMap来管理摄像头设备、消防设备和人员轨迹展示

    目前室内三维地图如何轻量化,能够在手机微信.电脑浏览器等平台快速显示地图,显示的地图性能好,转动地图不卡是大家都要面对的问题, 使用室内三维地图引擎ESMap后目前可以不用操心这方面的问题,开发只需要 ...

  5. 负载均衡器nginx和ribbon区别

    1,nginx 是服务器端的负载均衡器,所有请求发送到nginx之后,nginx通过反向代理的功能分发到不同的服务器,做负载均衡 2,ribbon是客户端的负载均衡器,他是通过将eureka注册中心上 ...

  6. 【python系统学习12】函数

    函数 函数是一堆组织好的.可重复利用的.用来实现某一功能的代码. python中的input().print().type().bool().len()等都是函数.且是python的内置函数. 我们也 ...

  7. 深入解读ES6系列(四)

    来自老曾es6的前言: 哈喽小伙伴们,爱说'废'话的Z又回来了,欢迎来到Super IT曾的博客时间,上一节说了字符串,面向对象以及json的知识,这一节我们继续我们知识的海洋,一起奋斗不秃头!不足的 ...

  8. MySQL从库实用技能(一)--巧用slave_exec_mode参数

    想必从库异常中断的情况不在少数,其中报错信息中1032及1062的错误占了不少的比重 错误1032指的是从库中找不到对应行的记录 错误1062指的是主键冲突 遇到此报错时,大多DBA会使用如下方法进行 ...

  9. MySQL 解析 json 数组(mysql在5.7开始支持json解析)

      1.函数 JSON_EXTRACT 表数据格式: 查询结果: sql 语句: -- ---------------------------- -- Table structure for json ...

  10. Java 使用InputStream笔记

    当我们要从网络下载资源时,使用类似如下方法来获取InputStream实例: URLConnection connection = new URL("http://www.XXXX.XXX& ...