阿里LinkWAN SDK使用之mqtt数据流

概述

本文的目的是在ARM设备上运行阿里云提供的SDK,实现mqtt客户端sub/pub功能,由于实际接入阿里云平台需要阿里云账户,并且在公网传输使用TLS不方便抓包分析明文,暂时使用本地mqtt broker的方式,使用抓包工具抓取交互过程学习观察数据流。

环境

目标运行环境: arm linux

开发环境:ubuntu + 交叉编译器 2013.05-arm-linux-release/src/gcc-4.7-2013.05

mqtt服务端:Windows7上安装mosquitto,相关文章较多在此不赘述

阿里SDK:LoRa-SDK_V2.2.0.tar.gz(敬请遵守NDA)

步骤

一、修改SDK

1、mqtt服务器的指向:

例如mqtt broker所在 WIN7 PC  IP地址:192.168.232.55。

修改guider.c中ON_DAILY编译选项的IP地址: "10.125.3.189" => "192.168.232.55"。当然你也可以自定义一个编译选项。

合理推测10.125.3.189是阿里内部测试用的mqtt broker。

2、设置阿里定义的三元组(PK,DN,DS):gwiotapi.c中,例如

#define PRODUCT_KEY         "E-Meter"
#define DEVICE_NAME         "20181212EM0"
#define DEVICE_ID           "20181212EM0.01"
#define DEVICE_SECRET       "seems not used"

自行指定,不能使用"******"

3、修改编译选项:

makefile 增加  CFLAGS  += -DON_DAILY 

make.settings:FEATURE_MQTT_DIRECT_NOTLS   = y  (因为我们没有部署TLS,直接使用mqtt/tcp)

二、编译

使用arm-201305-gnueabi在根目录下及lora目录下make,编译成mqtt和库libalilog.so、libgwiotapi.so

三、安装

下载mqtt和库到目标设备里

 

运行

 

运行mqtt,部分输出如下:

[root@/home/kun]#./mqtt
new file name:  iotx/log_2018-12-12-20-21-18-1544646078-1.txt
log init: module: iotx, type: 1, level: 1
2018-12-12 20:21:18 [iotx] INF > device.c-iotx_device_info_init:40 device_info created successfully!
2018-12-12 20:21:18 [iotx] INF > mqtt_client.c-iotx_mc_init:1712 MQTT init success!
LINUXSOCK 77 HAL_TCP_Establish() | establish tcp connection with server(host=192.168.232.55 port=1883)
LINUXSOCK 116 HAL_TCP_Establish() | success to establish tcp, fd=4
2018-12-12 20:21:18 [iotx] INF > mqtt_client.c-iotx_mc_connect:2026 start MQTT connection
2018-12-12 20:21:18 [iotx] INF > mqtt_client.c-iotx_mc_connect:2046 mqtt connect success!
2018-12-12 20:21:18 [iotx] INF > ./src/mqtt.c-subscribe_topics:1026 ptpc_gwmp_dl
2018-12-12 20:21:18 [iotx] INF > mqtt_client.c-IOT_MQTT_Subscribe:2470 1
2018-12-12 20:21:18 [iotx] INF > mqtt_client.c-iotx_mc_subscribe:1401 mqtt subscribe success,topic = /lora/gwmp/downlink/E-Meter/20181212EM0!
2018-12-12 20:21:18 [iotx] INF > mqtt_client.c-IOT_MQTT_Subscribe:2470 1
2018-12-12 20:21:18 [iotx] INF > mqtt_client.c-iotx_mc_subscribe:1401 mqtt subscribe success,topic = /sys/E-Meter/20181212EM0/lora/custom/downlink!

 

看一次pub

阿里LinkWAN SDK使用之mqtt数据流_第1张图片

阿里LinkWAN SDK使用之mqtt数据流_第2张图片

看看客户端收到的消息:

阿里LinkWAN SDK使用之mqtt数据流_第3张图片

 

再看一次sub

阿里LinkWAN SDK使用之mqtt数据流_第4张图片

阿里LinkWAN SDK使用之mqtt数据流_第5张图片

再看一下mqtt connect

阿里LinkWAN SDK使用之mqtt数据流_第6张图片

 

结论

演示了mqtt客户端 sub/pub的过程。

阿里云定义的三元组,其中的PK和DN用于topic中,DS不使用,推测DS可能在mqtt connect时进行鉴权(可以实际接入阿里云IoT平台进行验证)。

你可能感兴趣的:(IoT)