OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

mqtts-c-demo工程文件在linux下运行,并与Onenet平台对接,实现设备数据点自动上传和接收命令

1、创建产品和设备

创建的产品和设备如下图:

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

2、准备Linux虚拟机

Linux虚拟机为CentOS 7

(1)安装CMake

yum install cmake

(2)安装gcc编译工具

yum install gcc
yum install gcc-c++

校验是否安装成功

cmake --version
gcc -v
g++ -v

(3)安装Git

yum -y install git

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

检验是否安装成功

git --version

(4)安装OpenSSL

CentOS系统

sudo yum install openssl-devel

Ubuntu系统

sudo apt-get install libssl-dev

(5)安装paho.mqtt.c

git clone https://gitee.com/mirrors/paho.mqtt.c.git
cd paho.mqtt.c

编辑CMakeLists.txt文件,打开PAHO_WITH_SSL,编辑下图所示的位置,将FALSR改为TRUE

vi CMakeLists.txt

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

编译

make
sudo make install

3、下载并解压demo工程

下载地址:https://open.iot.10086.cn/doc/mqtt/images/tools/mqtts-c-demo.zip

将下载后的压缩包放入Linux虚拟机中并解压

wget https://open.iot.10086.cn/doc/mqtt/images/tools/mqtts-c-demo.zip
tar xzvf mqtts-c-demo.zip

如果报错,使用命令unzip mqtts-c-demo.zip解压

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

解压后的文件详细信息如下:

mqtts-c-demo
|- cert            #mqtts证书所在目录
    |- certificate.pem
|- CmakeLists.txt  #构建cmake工程	
|- busi.h          #用户具体业务循环函数声明
|- call-back.h     #用户设定connection lost、下行数据回调声明
|- mqtts-client.h  #mqtts-client头文件
|- utils.h         #base64编解码、hmac_sha1、url_encode函数声明
|- token.h         #计算鉴权token的函数声明
|- types.h         #topic及dp payload format声明
|- mqtts-sample.c  #主程序
|- mqtts-client.c  #mqtts-client客户端创建、销毁、subscribe等函数实现
|- token.c         #计算鉴权token的函数实现
|- call-back.c     #connection lost、下行数据回调实现
|- busi.c          #用户具体业务实现
|- utils.c         #base64编解码、hmac_sha1、url_encode函数实现
|- types.c         #topic及dp payload format定义

4、修改mqtts-samples.c文件

在通过示例代码与物联网平台通信之前,需要将mqtts-samples.c中的设备参数修改为自己已创建成功的设备信息,完成后保存退出。

如下所示,在此处填入产品ID设备名称设备key

/*设备所属产品*/   
const char *pid = "产品ID";
/*设备名称*/
const char *device_name = "设备名称";
/*设备级的access key*/
const char *device_access_key ="设备Key";

用户可根据需要自定义token的访问有效期(即过期时间),也可以不改

/*token过期时间,请按照实际具体需求计算token过期时间,本例中为从1970-1-1到2025-02-07的秒数*/
int64_t expire_time = 1738857600;

修改MQTT-TLS服务端地址为:

mqttstls.heclouds.com:8883

编辑文件命令:

cd mqtts-c-demo
vi mqtts-sample.c

具体修改的内容如图所示:

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

5、修改CMakeLists.txt文件

编辑CMakeLists.txt文件,在下图所示的位置加上crypto

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

5、执行cmake命令

修改完成后在示例代码目录,执行cmake命令,生成makefile文件。

cmake .

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

6、通过make指令编译示例程序

make clean
make

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

生成的示例程序mqtts-sample存放在当前目录下。

7、运行示例程序

./mqtts-sample

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

运行成功后,Onenet控制台显示设备在线,设备与物联网平台成功连接。

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

8、设备自动上传数据点

设备上线成功后,会自动向物联网平台上传数据点。在终端控制台返回信息:

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

在Onenet控制台可以查看数据流

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

9、下发命令控制设备

在设备列表中,选择 更多操作下发命令 完成设备命令的下发。在命令成功下发至设备后,设备会返回成功接收信息至物联网平台,平台会显示返回结果。

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

在命令成功下发后,在终端控制台返回信息,其中payload字段为下发命令内容的16进制转换结果。

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

在设备成功接收物联网下发命令后,终端控制台会返回信息。

OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

本文章来源于互联网,如有侵权,请联系删除!原文地址:OneNET物联网平台05 Linux平台下实现MQTTS协议产品设备接入(模拟MQTT设备连接平台)

相关推荐: 物联网平台要实现哪些功能?

近些年“物联网平台”这个词没少听,可它到底有哪些功能呢? 物联网平台在物联网架构的应用层,是一个PaaS平台,具体请参考上一篇:物联网产品入门之架构篇。 一、物联网平台功能架构 物联网平台会根据自己的商业目标有不同的侧重,但大体都是在以下架构上进行增减: 这张…