[技术干货] 漫谈LiteOS-端云互通组件-MQTT开发指南(上)

端云互通组件-MQTT开发指南(上)

摘要:本文介绍使用野火开发板通过Agent Tiny SDK的端云互通组件,使用MQTT协议快速接入华为云平台。通过平台侧、设备侧的开发以及调测过程来了解直接接入物联网平台模式的具体流程,希望对你有所帮助

1.介绍

SDK简介

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

Agent Tiny SDKHuawei Agent Tiny软件开发工具包(Software Development Kit),通过Agent Tiny SDK端云互通组件,简单快速地实现与华为物联网平台安全可靠连接,可以大大减少开发周期,快速构建IoT产品。端云互通组件可以采用MQTTCoAPLWM2W协议接入物联网平台。Agent Tiny SDK全景图如图1所示。

iot-architecture.png

2. 开发环境

2.1硬件需求

开发计算机、运行win7及以上操作系统

野火开发板STM32F429IG、数据线

Jlink下载器、网线、USB转串口

2.2软件需求

IDE(包括GCC编译器、JDK运行环境、make工具、Jlink驱动、Eclipse)

串口工具(QCOM-V1.6

实名认证的华为云账号

SDK源码

3.接入物联网平台流程

根据设备中的接入地址,可以将接入物联网平台分为两种模式:

  • 直接接入物联网平台模式

  • 通过设备发放服务接入物联网平台模式

两种接入方式的对比:

  • 直接接入物联网平台示意图

direct_connect_mode.png

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

BS_connect_mode.png

4.直接接入实例

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

zh-cn_image_dmp_process.png

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

产品模型参考

zh-cn_dmp_operate_001.png

设备信息参考

zh-cn_dmp_operate_002.png

4.1平台侧开发

进入开发中心,根据上图,依次在开发中心中新建项目->新建产品->定义产品模型->注册设备。

新建项目

选择开发者中心并进入。


zh-cn_bmp_cloud_004.png

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

zh-cn_bmp_cloud_005.png


输入项目信息后点击确定

zh-cn_bmp_cloud_006.png

点击进入项目

zh-cn_bmp_cloud_007.png

新建产品

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

zh-cn_bmp_cloud_008.png

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

zh-cn_bmp_cloud_009.png

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

zh-cn_bmp_cloud_010.png

定义产品模型

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

zh-cn_bmp_cloud_011.png

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

zh-cn_bmp_cloud_012.png

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

zh-cn_bmp_cloud_013.png

zh-cn_bmp_cloud_014.png

添加完后保存:

zh-cn_bmp_cloud_016.png

创建设备

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

zh-cn_bmp_cloud_017.png

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

zh-cn_bmp_cloud_018.png

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

zh-cn_bmp_cloud_019.png

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

1579510523963938.png

到此为止,平台侧开发完毕。

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

zh-cn_dmp_test_001.png

zh-cn_dmp_test_007.png

4.3调测

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

zh-cn_dmp_test_002.png

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

zh-cn_dmp_test_003.png

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

zh-cn_dmp_test_004.png

输入ioswitch88,点击发送

zh-cn_dmp_test_005.png

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

zh-cn_dmp_test_006.png

到此调测完成。

博文链接:https://bbs.huaweicloud.com/blogs/143511