【ESP8266】使用MQTT接入阿里云物联网平台

本文介绍如何在阿里云物联网平台上创建设备、自定义Topic,并通过规则引擎实现MQTT.fx软件与ESP8266开发板之间的双向通信。详细步骤包括设备创建、Topic设置、规则引擎配置及开发板和软件的调试过程。

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

阿里云物联网平台设置:

一、创建设备

1、阿里云物联网平台,进入设备管理,创建产品和设备(新建一个产品和两个设备)

2、记录以下内容(三元组)

(1)创建IOT_ESP8266,给真实设备(ESP8266)使用

(2)创建IOT_MQTT,给虚拟设备(MQTT.fx软件)使用 

 

二、自定义topic

1、进入产品详情

2、点击“定义topic类”添加topic,产品下面的设备会继承产品定义的topic

 

三、创建规则

作用:将发送到“数据源 topic ”的消息转发到“目的地 topic ”

数据源:IOT_MQTT             topic:/{ProductKey}/IOT_MQTT/SW_LED

目的地:IOT_ESP8266        topic:/{ProductKey}/IOT_ESP8266/SW_LED

1、使用 mqtt.fx 软件发布 topic :/{ProductKey}/IOT_MQTT/SW_LED  消息

2、该规则将数据源 topic ”的消息转发到“目的地 topic ”

3、设备(ESP8266)订阅 topic:/{ProductKey}/IOT_ESP8266/SW_LED

4、设备接收到消息

设备上报消息到 数据源,通过该规则转发到 目的地,使用mqtt.fx软件订阅topic查看消息。

1、进入“规则引擎-云产品流转”

 

2、新建规则

 

3、添加数据源 topic

 

4、添加目的地 topic

 

5、规则创建完成

 

6、启动规则

 

设备端设置:

一、连接参数简介

1、域名和三元组

连接域名:

公共实例的连接域名为${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com:1883。 其中:

  • ${YourProductKey}:设备所属产品的的ProductKey。

MQTT的CONNECT报文参数 :

mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
mqttUsername: deviceName+"&"+productKey
mqttPassword: sign_hmac(deviceSecret,content)

mqttPassword:sign签名需把提交给服务器的参数按字典排序后,根据signmethod加签。

content的值为提交给服务器的参数(ProductKey、DeviceName、timestamp和clientId),按照字母顺序排序, 然后将参数值依次拼接。

  • clientId:表示客户端ID,建议使用设备的MAC地址或SN码,64字符内。
  • timestamp:表示当前时间毫秒值,可以不传递。
  • mqttClientId:格式中||内为扩展参数。
  • signmethod:表示签名算法类型。支持hmacmd5,hmacsha1和hmacsha256,默认为hmacmd5。
  • securemode:表示目前安全模式,可选值有2 (TLS直连模式)和3(TCP直连模式)。

示例:

假设clientId = 12345,deviceName = device, productKey = pk, timestamp = 789,signmethod=hmacsha1,deviceSecret=secret,那么使用TCP方式提交给MQTT的参数如下:

mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|
mqttUsername=device&pk
mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); 

加密后的Password为二进制转16制字符串,示例结果为:

FAFD82A3D602B37FB0FA8B7892F24A477F85****

 

2、生成mqtt密匙

mqttPassword 是结合DeviceSecret、ProductKey、DeviceName、timestamp和clientId 使用哈希算法加密的。

为了方便,直接使用以下工具进行计算(使用三元组生成对应参数):

 

二、开发板程序调试

1、参数修改

 

2、烧录 

 

3、重启开发板查看调试信息

 

三、MQTT.fx软件调试

1、配置mqtt

2、点击”connect“连接平台成功

3、发布消息

(1)输入数据源 topic:/{ProductKey}/IOT_MQTT/SW_LED

(2)输入要发布的消息,json格式

(3)点击”Publish“发布消息

 4、查看开发板

(1)开发板LED亮

(2)调试信息收到订阅主题的消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值