将mqtts-c-demo
工程文件在linux下运行,并与Onenet平台对接,实现设备数据点自动上传和接收命令
1、创建产品和设备
创建的产品和设备如下图:
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
检验是否安装成功
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
编译
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
解压
解压后的文件详细信息如下:
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
具体修改的内容如图所示:
5、修改CMakeLists.txt文件
编辑CMakeLists.txt
文件,在下图所示的位置加上crypto
5、执行cmake命令
修改完成后在示例代码目录,执行cmake命令,生成makefile文件。
cmake .
6、通过make指令编译示例程序
make clean
make
生成的示例程序mqtts-sample
存放在当前目录下。
7、运行示例程序
./mqtts-sample
运行成功后,Onenet控制台显示设备在线,设备与物联网平台成功连接。
8、设备自动上传数据点
设备上线成功后,会自动向物联网平台上传数据点。在终端控制台返回信息:
在Onenet控制台可以查看数据流
9、下发命令控制设备
在设备列表中,选择 更多操作
→下发命令
完成设备命令的下发。在命令成功下发至设备后,设备会返回成功接收信息至物联网平台,平台会显示返回结果。
在命令成功下发后,在终端控制台返回信息,其中payload
字段为下发命令内容的16进制转换结果。
在设备成功接收物联网下发命令后,终端控制台会返回信息。
近些年“物联网平台”这个词没少听,可它到底有哪些功能呢? 物联网平台在物联网架构的应用层,是一个PaaS平台,具体请参考上一篇:物联网产品入门之架构篇。 一、物联网平台功能架构 物联网平台会根据自己的商业目标有不同的侧重,但大体都是在以下架构上进行增减: 这张…