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

阿里云物联网平台设置:

一、创建设备

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

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

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

【ESP8266】使用MQTT接入阿里云物联网平台_第1张图片

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

【ESP8266】使用MQTT接入阿里云物联网平台_第2张图片

 

二、自定义topic

1、进入产品详情

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

【ESP8266】使用MQTT接入阿里云物联网平台_第3张图片

【ESP8266】使用MQTT接入阿里云物联网平台_第4张图片

 

三、创建规则

作用:将发送到“数据源 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、进入“规则引擎-云产品流转”

【ESP8266】使用MQTT接入阿里云物联网平台_第5张图片

 

2、新建规则

【ESP8266】使用MQTT接入阿里云物联网平台_第6张图片

 

3、添加数据源 topic

【ESP8266】使用MQTT接入阿里云物联网平台_第7张图片

【ESP8266】使用MQTT接入阿里云物联网平台_第8张图片

 

4、添加目的地 topic

【ESP8266】使用MQTT接入阿里云物联网平台_第9张图片

【ESP8266】使用MQTT接入阿里云物联网平台_第10张图片

 

5、规则创建完成

【ESP8266】使用MQTT接入阿里云物联网平台_第11张图片

 

6、启动规则

 

设备端设置:

一、连接参数简介

1、域名和三元组

连接域名:

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

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

【ESP8266】使用MQTT接入阿里云物联网平台_第12张图片

  • ${YourRegionId}:区域节点ID,参见地域和可用区。

【ESP8266】使用MQTT接入阿里云物联网平台_第13张图片

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 使用哈希算法加密的。

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

【ESP8266】使用MQTT接入阿里云物联网平台_第14张图片

 

二、开发板程序调试

1、参数修改

【ESP8266】使用MQTT接入阿里云物联网平台_第15张图片

 

2、烧录 

【ESP8266】使用MQTT接入阿里云物联网平台_第16张图片

 

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

【ESP8266】使用MQTT接入阿里云物联网平台_第17张图片

 

三、MQTT.fx软件调试

1、配置mqtt

【ESP8266】使用MQTT接入阿里云物联网平台_第18张图片

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

3、发布消息

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

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

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

【ESP8266】使用MQTT接入阿里云物联网平台_第19张图片

 4、查看开发板

(1)开发板LED亮

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

【ESP8266】使用MQTT接入阿里云物联网平台_第20张图片

你可能感兴趣的:(#,ESP32/ESP8266,ESP8266,MQTT,阿里云)