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

本文介绍了如何使用STM32F103RCT6通过MQTT协议将温湿度数据上传到中国移动OneNET云平台,并控制LED灯。在调试过程中,提到了网络调试助手和MQTTX软件的作用,以及如何处理程序中的补位问题以使数据被Thingsboard平台正确识别。此外,还分享了设置简单用户名和密码进行测试的建议,以及数据发送和接收的正确流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码照着

STM32F103RCT6(Mini板)通过MQTT协议上传温湿度数据至OneNET云平台并控制LED灯_Mbwide的博客-CSDN博客

MQTT协议 学习:

STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解_Lord·AC的博客-CSDN博客

调试工具使用:网络调试助手 @野人 V4.2.1

MQTT模拟软件使用 :MQTTX

通过网络调试助手接收到的数据 你会发现按照这个源码 发给中国移动平台的代码是

30 1D 00 04 74 65 73 74 03 00 14 7B 22 6C 65 64 46 6C 61 67 22 3A 22 4C 45 44 4F 46 46 22 7D

内容为 向服务器发送test  主题 十六进制为:74 65 73 74

发送内容:{"temperature":"26","humidity":"63"}

7B 22 74 65 6D 70 65 72 61 74 75 72 65 22 3A 22 32 36 22 2C 22 68 75 6D 69 64 69 74 79 22 3A 22 36 33 22 7D 00 00 00

其中 03 00 14 是程序里面的补位,但是thingsboard平台不认这个补位 需要从源码内删除这个字段

在strm32f10x.it.c

//        head1[0] = 0x03;                         //固定报头
//        head1[1] = 0x00;                         //固定报头
//        head1[2] = strlen(temp);                  //剩余长度    

    // sprintf(tempAll, "%c%c%c%s", head1[0], head1[1], head1[2], temp);

注释掉这些内容后 发现代码 最后会补位 00 00 00

 需要改dataLen

//dataLen = strlen(temp) + 3;// 取消补位0

源程序里面控制小灯也有对应的代码 我给小灯都给注释了因为发错了东西 服务器就自动断开了。

thingsboard里面做一个路灯的设备时,需要把v1/devices/me/telemetry 改为test

改为发送的东西,然后就行了

测试时定义用户名 密码时,尽量的简单,

我定义的 设备id为1 用户名1 密码1

最后正确的流程

发送端 :10 13 00 04 4D 51 54 54 04 C2 00 64 00 01 31 00 01 31 00 01 31

解释:4D 51 54 54 是 MQTT   

00 01 31 00 01 31  00 01 31 是 1 1 1

服务器返回:20 02 00 00 

发82 1D 00 01 00 18 76 31 2F 64 65 76 69 63 65 73 2F 6D 65 2F 61 74 74 72 69 62 75 74 65 73 00

收90 03 00 01 00

发送:30 2A 00 04 74 65 73 74 7B 22 74 65 6D 70 65 72 61 74 75 72 65 22 3A 22 32 36 22 2C 22 68 75 6D 69 64 69 74 79 22 3A 22 36 33 22 7D

平台成功接收

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值