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

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

1、创建产品和设备

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

image-20220207150633572

image-20220207150705440

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

image-20220208113339598

检验是否安装成功

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

image-20220208140744660

编译

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解压

image-20220207175448724

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

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

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

image-20220209144424281

5、修改CMakeLists.txt文件

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

image-20220209135555762

5、执行cmake命令

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

cmake .

image-20220207180545692

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

make clean
make

image-20220209135823555

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

7、运行示例程序

./mqtts-sample

image-20220209144720565

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

image-20220209145819698

8、设备自动上传数据点

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

image-20220209150030657

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

image-20220209150415315

9、下发命令控制设备

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

image-20220209151033361

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

image-20220209151306320

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

image-20220209151337441

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨云21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值