• 保姆级快速搭建一套基于Linux环境下的MQTT开发程序模版(基于腾讯云IoT Explorer)...


    点击上方“嵌入式应用研究院”,选择“置顶/星标公众号

    干货福利,第一时间送达!

    来源 | 嵌入式应用研究院

    整理&排版 | 嵌入式应用研究院

    在这里,测试的MQTT客户端环境我已经帮大家搭建好了:

    https://github.com/Yangyuanxin/EasyMqttClient

    关于这个项目的介绍可以参考文章:

    一套极简的MQTT使用接口EasyMqttClient

    可以直接通过git clone下载工程,目前工程拥有两套构建机制,一套是直接通过CMake进行构建,另一套是直接通过Makefile,直接在Linux环境下编译即可。

    接下来,我们直接通过腾讯云IoT Explorer来搭建基于一个MQTT的开发环境。

    1、注册一个腾讯云账号并登录

    网址:

    https://cloud.tencent.com/developer

    过程:略。

    2、腾讯云Iot Explorer平台实例开发

    (1)进入控制台

    ec64830151e534c4c49a3f173aa6860e.png

    (2)选择物联网开发平台

    2f4481d741fedf626c806ff2f467403a.png

    (3)点击选择公共实例进入项目列表

    03cc2b76720334e3bfa40fe547826927.png

    (4)新建项目

    58488f72a9e66d4589acb03b560aeca1.png

    a5acbcacd82b98d15c79e4e88ec2c790.png

    102daf9bb823660ae8b2d04677a1f884.png

    以上我们创建了一个Linux_MQTT项目。

    (5)点击进入 Linux_MQTT 项目,然后新建一个产品

    5f9e4a4eb45670b868e5ade63389af8f.png

    2c9a2226233dadc37f68cc33035b04e7.png

    e7681859c9f8af4488f22fe15ab7a348.png

    按如图所示新建一个产品。

    3cc69a1e1e54c5dc50c81cc6f9c39a1f.png

    (6)点击进入MQTT测试

    这时候我们就能看到云平台为我们生成的物模型模板,当然我们也可以在上面修改Json文件进行定制:

    e391cda3e5546db7947cc4cacceabd88.png

    (7)新建设备

    cf2d40c214aceb5b4d600fd22aae4b9f.png

    eadaf13b6c221e29be7dd380ccd6294c.png

    869119f281ba283f407ce1d24dee8c2b.png

    (8)查看设备三元组

    点击进入设备:

    68e65823c598acf76b7659b298af9168.png

    查看产品ID、设备密钥、设备名称,这三个东西叫做腾讯云平台的三元组,我们的MQTT就需要这三个基本信息。

    f02e0e3f6e123267575afa1702f09894.png

    (9)启用设备交互开发-腾讯连连小程序面板

    ba3ee1426ae8cf048ef6c9d2eafb8c80.png

    82abe5efee4cea1a5f37cfec61ec965c.png

    如果不选择其它面板进行开发,则默认就是标准模板,无需进行任何设置,点击保存即可。

    (10)使用腾讯连连小程序添加设备

    46c83fa2f61f6bbfaeacc7c452ba93c9.png

    f50c2d51e9424ebfae655c763c428f86.png

    然后用手机打开微信搜索腾讯连连小程序,然后使用手机扫码将设备添加到腾讯连连小程序中:

    6e95dbf570e484b78d3516734400b218.png

    3、让EasyMqttClient接入腾讯云Iot Explorer平台

    3.1、编译连接参数生成工具并生成连接参数

    在 ubuntu Linux 下clone腾讯云物联网平台 MQTT 连接参数生成工程:

    git clone https://github.com/tencentyun/qcloud_iot_mqtt_sign.git

    然后在终端执行:

    修改make.settings替换为目标编译工具:

    1. PLATFORM_CC         = gcc
    2. PLATFORM_AR         = ar
    3. PLATFORM_OS         = linux

    然后执行 make 修改cmake.settings替换为目标编译工具与系统平台:

    1. SET(PLATFORM_CC         "gcc")
    2. SET(PLATFORM_OS         "linux")

    然后执行bash cmake_build.sh

    df5900dbb9ab6a721913398b7b9aff1a.png

    接下来进入output/bin目录下,执行qcloud-mqtt-sign生成MQTT连接参数:

    该命令后面要带三个参数,分别是上面所提到的三元组,顺序是产品ID、设备名称、设备密钥,中间要以空格作为间隔

    d61d065966ecd7c30cdcae9cfad1955b.png

    然后将生成的client IDusernamepassword保存起来。

    3.2、将连接参数填写到EasyMqtt的测试函数中

    039fe9d3ac37f639b7a52a6fc39d91e3.png

    然后修改代码:

    a6d2ae0fda8d3d4febbc04bb05638b26.png

    此部分规则参考腾讯云 MQTT 接入文档:

    https://cloud.tencent.com/document/product/634/32546
    3.3、添加订阅Topic,实现APP下发指令

    这里使用腾讯云平台的物模型Topic、系统级Topic以及自定义Topic

    d696456038fa801b499a2e6218ff63a0.png

    我们先使用其中一个订阅的Topic,修改代码:

    939ff6c774679f94425be0b121d174dd.png

    a1101dec1a393037440b9c05db41ef6f.png

    3.4、编译EasyMqttClient工程进行测试

    使用cmake生成Makefile:

    7d12152ea21466ca1c6780a375c939bb.png

    执行make编译工程:

    63d8df46a83d21340ec3ebee1af3d1e6.png

    执行测试程序:./a.out

    4588f80abc1b272909b6fe6f19c4faa5.png

    然后在手机端和网页端可以看到设备显示在线:

    2237650bdc8423058d254adaa42266a7.png

    9465abd235e413d126c3fbc62e95724d.png

    当点击手机上的开关灯时,Linux终端上能够收到MQTT回调函数打印的来自腾讯云IoT Explorer平台下发的消息:

    e470490e5e6ae6d3eef1fde82af25355.png

    尝试修改小程序面板上的数据:

    9f2e2f32483d2316efd05b6fdae8a49b.png

    87f7772f8b04d53cfcc0ed12688a4444.png

    关于订阅发布以及数据模板部分可参考以下文档学习:

    https://cloud.tencent.com/document/product/1081/44921

    全篇完!

    往期精彩

    一套极简的MQTT使用接口EasyMqttClient

    嵌入式linux检测U盘拔插与QT界面开发相结合的实现思路

    我为OpenHarmony 写代码,战“码”先锋第二期正式开启!

    嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑

    Linux内核设备树语法 | 设备树实例解析之全网最强科普文

    觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持。

  • 相关阅读:
    传递函数硬件化
    TCP/IP协议专栏——分片报文详解——网络入门和工程维护必看
    GO泛型相关
    CPU中断
    1797_GNU pdf阅读器evince
    分布式架构的监控与指标
    辅助驾驶功能开发-功能对标篇(3)-NOP领航辅助系统-蔚来
    Shell判断:模式匹配:case(二)
    “无法为保留分区分配驱动器号”的解决
    Android Selinux详解[五]--新增hal服务标签相关
  • 原文地址:https://blog.csdn.net/morixinguan/article/details/126239383