概述
1、阿里云的操作
1.1、准备
登录阿里云官网,注册账号,实名认证;
找到产品→物联网IoT→企业物联网平台→进入控制台→公共实例;
1.2、创建产品及产品下的两个设备
创建产品,比如一个ESP8266控制灯的产品;
这个产品要有两个云端设备,ESP8266本身以及用户端,用户端通过向阿里云端发送控制指令,指令再通过云端转发给ESP8266设备;
1.3、查看MQTT连接的参数,用mqtt.fx测试能否连上云端
选中设备,在设备信息里面,我圈出来了“MQTT连接参数”,点击“查看”就有了,复制这些信息到mqtt.fx的配置文件,可以成功连接;
1.4、创建规则,实现设备间数据传输
首先要了解订阅发布主题名,在产品的Topic类列表中有;
- 默认订阅的主题名:/ProductKey/DeviceName/user/get
- 默认发布的主题名:/ProductKey/DeviceName/user/update
然后在“规则引擎”、“云产品流转”、旧版,添加两个规则,其中mqttfx数据转发到esp8266的规则如下;
创建好规则后,启动这两个规则,开两个mqttfx客户端进行测试,成功;
2、代码及现象
2.1、esp8266代码
要修改mqtt_config.h中的服务器域名、端口、ClientID、MQTT用户名、密码、持有人标识;
还有user_main.c中的订阅主题名、发布主题名、收到PUBLISH报文主题名;
ClientID我是一眼就看出来了,辣么长,肯定超过64位了,所以把config.h中的“device_id”改成了128位,也确认了在使用这个参数时没有问题;
下载、运行,返回了如下信息:
找一下自己写过的MQTT那篇文章ESP8266_MQTT协议_小老虎_IOT的博客-CSDN博客,看看CONNACK报文的32,2,0,4代表了啥,好家伙,无效的用户名或密码;
难道是用户名密码失效了?像上次百度云那样?
去设备详情的“MQTT连接参数”复制了新的用户名、密码、客户端ID,再烧录运行,还是不行;
emmm,我刚忘了改持有人标识,改了再试,又是一顿操作还是不行;
然后我数了数密码的长度,刚好64位,emmm,一点都不刚好好吧,记得代码中那个密码数组64位,字符串还有个'