目录

  • 为什么使用MQTT
  • 项目概述
  • 移植ONENET开源代码
  • 使用场景

为什么使用MQTT

  • MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。特别是物联网(IoT)和嵌入式。
  • MQTT包容不稳定的网络,MQTT和MQ可以从诸如断开连接之类的故障中恢复,无需进一步的代码要求。但是,HTTP本身无法实现此目标,并且客户端必须重试编码,这会增加身份问题。
  • 低功耗MQTT专为低功耗目标而设计。 HTTP设计未考虑此因素,这会增加功耗。
  • MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT server(或称为 MQTT Broker)分发的。客户端可以发布消息(发送方)、订阅消息(接收方)或两者兼而有之,从而可以实现多对多通信。
  • 有三种消息发布服务质量:
    “至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。
    “至少一次”,确保消息到达,但消息重复可能会发生。
    “只有一次”,确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。

项目概述

gitee项目地址

移植ONENET开源代码

将服务质量2修改为服务质量0;

修改服务器地址

#define SERVER_HOST                      "broker.emqx.io"          //  MQTT服务器域名或IP
#define SERVER_PORT                     "1883"                                //  MQTT服务器端口(一般为1883不用改)

修改接收数据解析

case MQTT_PKT_PUBLISH:                                                       //接收的Publish消息result = MQTT_UnPacketPublish(cmd, &cmdid_topic, &topic_len, &req_payload, &req_len, &qos, &pkt_id);if(result == 0){UsartPrintf(USART_DEBUG, "topic: %s, topic_len: %d, payload: %s, payload_len: %d\r\n",cmdid_topic, topic_len, req_payload, req_len);// 对数据包req_payload进行JSON格式解析json = cJSON_Parse(req_payload);if (!json)UsartPrintf(USART_DEBUG,"Error before: [%s]\n",cJSON_GetErrorPtr());else{json_value = cJSON_GetObjectItem(json , "LED");UsartPrintf(USART_DEBUG,"json_value: [%d]\n",json_value->valueint);if(json_value->valueint)//json_value > 0且为整形{ucLed = 1;//打开LED0 }else{ucLed = 0;//关闭LED0 }}cJSON_Delete(json);MQTT_DeleteBuffer(&mqttPacket);                                    //删包}break;

使用场景

引用

STM32+MQTT相关推荐

  1. stm32 mqtt

    记录两种是stm32 mqtt实现方法 1.使用keil自带库MQTTPacket实现 安装install 安装完成后点击运行时环境按钮 选中MQTTpacket 代码实现添加和使用 首先包含头文件 ...

  2. STM32毕业设计——基于STM32+MQTT+WiFi技术的智能家居系统设计与实现(毕业论文+程序源码)——智能家居系统

    基于STM32+MQTT+WiFi技术的智能家居系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于STM32+MQTT+WiFi技术的智能家居系统设计与实现,文章末尾附有本毕业设计的论文 ...

  3. STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(三)STM32部分

    STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(三)STM32部分 关于单片机部分主要使用ESP8266 WIFI模块进行联网,单片机采用STM32ZET6 ESP8266部分 ...

  4. STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解

    STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解 上一次我们讲了OneNet平台的注册,这次我们来讲一下MQTT的常用报文用法 上一篇地址https ...

  5. 阿里云MQTT + STM32 + MQTT + ESP8266 01S WIFI 实现远程继电器控制开关和采集温湿度 登录阿里云网站,进入物联网云平台

    单片机型号: STM32F103C8T6 WIFI型号: ESP8266 01S WIFI 运行协议: TCP STM32运行MQTT协议 登录阿里云网站,进入物联网云平台 进入阿里云官网并登录账号后 ...

  6. 基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

    基于STM32+FreeRtos+DHT12+ESP8266+MQTT连接阿里云 1.概述 2.实现步骤 2.1.MQTT.fx模拟器与阿里云通信 2.2.STM32与阿里云通信 3. 搭建云平台 3 ...

  7. stm32+esp8266 通过MQTT发送到thingsboard平台

    源码照着 STM32F103RCT6(Mini板)通过MQTT协议上传温湿度数据至OneNET云平台并控制LED灯_Mbwide的博客-CSDN博客 MQTT协议 学习: STM32 MQTT协议 连 ...

  8. stm32利用mqtt与小程序通信

    stm32利用mqtt与小程序通信 stm32连接服务器端 小程序连接服务器 本项目实现的功能如下:通过stm32连接esp8266,然后利用mqtt协议连接到服务器,同时小程序端也连接到服务器,通过 ...

  9. [mqtt]mqtt嵌入式移植

    目前在无线这块,很多4G模组的厂商已经将mqtt放入模块内,无需在项目代码中再实现mqtt移植 github eclipse paho source code: https://github.com/ ...

最新文章

  1. 继承CListCtrl,然后重载OnLButtonUP消息,发现变成双击才触发???
  2. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 初始单纯形表 | 检验数计算 | 入基变量 | 出基变量 )
  3. (SRNTT)Image Super-Resolution by Neural Texture Transfer
  4. 冬小麦病虫害的高光谱识别方法研究
  5. element 输入框点击事件_Element Input输入框的使用方法
  6. ubuntu下vim配置成c++开发编辑器
  7. mysql 存储过程 注入_MySQL数据库(六)-- SQL注入攻击、视图、事物、存储过程、流程控制...
  8. 【opencv4】——fatal error: opencv2/opencv.hpp: No such file or directory #include <opencv2/opencv.hpp>
  9. mysql的inndob引擎崩溃
  10. catia设计树_在CATIA目录树上**零件号原来这么简单!
  11. 经典莱斯康混响插件LX480 Complete限时43%OFF
  12. SVM——支持向量回归(SVR)
  13. 风变编程python 笔记-【风变编程-python语法】第五、六关(消灭该死的重复)-循环-笔记...
  14. 1000瓶水里面有一瓶毒水,通过用兔子去喝水的方式检验,只能让兔子喝一次水,那么最少用多少只兔子检验出来是哪一瓶?
  15. 笔记本电脑查看电池损耗的方法
  16. 企业想要制作电商类App软件
  17. Ubuntu修改桌面分辨率
  18. 【51单片机学习笔记】基于STC11F04E的蜂鸣器音乐播放器
  19. Linux自动备份压缩MySQL数据库的实用方法
  20. python计算机视觉--全景图像拼接

热门文章

  1. 排队叫号python编程_排队叫号系统的计算
  2. 百度 ASTAR 2010 (二)
  3. shiro集成 spring-加密md5配置--权限管理-shiro中的session 等等!!
  4. Copytranslator 设置默认字体大小
  5. 解决近场感知痛点,侧向补盲激光雷达“上车”在即
  6. 如何守住你的年终奖?
  7. EPON的VLAN映射实验
  8. Solidworks钣金展开实例设计视频教程
  9. Excel工作表设置保护、取消保护、忘记密码
  10. 【MATLAB实验】MATLAB矩阵与数组及改变矩阵形状(rot90函数逆时针旋转、矩阵转置)