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

源码照着

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

平台成功接收

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: app+stm32+esp8266+mqtt协议可以实现将数据上传到onenet云平台。具体实现步骤如下: 1. 编写stm32程序,采集传感器数据并通过esp8266模块将数据发送到onenet云平台。 2. 在esp8266模块中使用mqtt协议连接onenet云平台,并将采集到的数据发布到指定的主题。 3. 在onenet云平台上创建设备,并将设备与mqtt主题绑定。 4. 在onenet云平台上创建数据流,并将数据流与设备绑定。 5. 在onenet云平台上创建数据模板,并将数据模板与数据流绑定。 6. 在app中使用onenet提供的api接口,获取设备数据并进行展示。 通过以上步骤,就可以实现将stm32采集到的数据上传到onenet云平台,并在app中进行展示。 ### 回答2: STM32是意法半导体公司推出的一款32位微控制器芯片,具有低功耗、高性能、高可靠性等特点,广泛应用于物联网、工业自动化、智能家居等领域。ESP8266是一款集成WiFi模块的微控制器芯片,具有低成本、低功耗、易于上手等特点,也广泛应用于物联网、智能家居等领域。MQTT协议是一款轻量级的物联网通信协议,可以实现低功耗、高可靠性、高扩展性等特点,特别适用于物联网场景的设备间通信。 OneNet是中国移动推出的物联网平台,提供设备管理、数据存储和可视化展示等功能,支持多种通信协议,包括MQTT。基于STM32ESP8266,我们可以通过MQTT协议将设备数据上传至OneNet云平台,实现对设备状态的监控和远程控制。 具体实现步骤包括: 1. 在STM32ESP8266中分别实现MQTT协议的相关功能,如连接服务器、发布订阅消息、接收数据等。 2. 接入OneNet云平台,创建设备和数据流,并获取设备ID和API Key。 3. 在STM32发送设备数据到ESP8266ESP8266通过MQTT协议将数据上传到OneNet云平台,并记录上传数据的时间戳。 4. 在OneNet云平台中可以实现对设备数据的监控、历史数据查询、报警设置等功能。同时,也可以通过API接口实现数据的远程控制。 总之,基于STM32ESP8266MQTT协议上云OneNet,是一种方便快捷、低成本高效的物联网应用方案。通过实现设备与互联网的连接,可以实现智能化控制、远程监控等功能,提高工作效率和生活品质。 ### 回答3: STM32ESP8266都是常用的嵌入式单片机,而MQTT是一种轻量级的消息传输协议,通常被用于物联网设备间的通信。而OneNet是国内比较知名的物联网平台,它提供开发者友好的接口以及强大的数据管理功能,方便开发者快速构建物联网应用。在使用STM32ESP8266进行物联网开发上,MQTT协议和OneNet的结合能够为开发带来很多便利。 首先讲一下STM32ESP8266的配合。在嵌入式系统中,STM32通常作为主控制器,用于控制各种传感器以及执行设备控制操作。而ESP8266则可以作为一种无线模块,用于与网络进行通信。在物联网应用中,ESP8266作为WiFi模块,可以将STM32采集到的数据或进行的控制操作通过WiFi连接发送到数据云平台上,用于实时数据监控或设备远程控制等。 而MQTT协议可以帮助我们快速实现消息传输和设备控制。MQTT协议相较于HTTP等传统网络协议来说,它的传输速度更快、开销更小,且支持低功耗的设备。比如在家庭物联网系统中,我们可以将一些传感器(比如温度、湿度、烟雾检测等)通过STM32采集到,然后通过ESP8266模块发送到OneNet。这样就可以实现实时的数据监控和远程控制等功能了。 最后,OneNet平台是国内较为知名的物联网平台,支持MQTT协议,提供了丰富的接口和SDK,可以帮助开发者快速构建物联网应用。在使用MQTT协议与OneNet平台结合时,我们只需要在设备端运用MQTT协议,将采集到的数据发送到OneNet平台上,然后在云平台上进行数据存储、处理和分析等操作,从而实现对设备的远程监控和控制。 总的来说,STM32ESP8266的配合,MQTT协议的应用以及OneNet平台的支持,可以为物联网设备的快速开发和应用提供很大的帮助。未来,随着物联网的普及和发展,这一领域的应用前景将会更加广阔。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值