一、目的
1.汇总阿里云物联网平台调试精髓:为开发者提供一份详尽的调试指南,助力后续项目开发。
2.解决初学者难题:针对初学者在阿里云物联网平台调试过程中遇到的常见问题,提供实用的解决策略。
3.鼓励自主思考:鼓励初学者在复刻他人项目时,结合个人思考,灵活运用调试经验,独立解决问题。
二、调试工具与资源
如果对您有所帮助,点点关注,不迷路哦
当然不可能总结的面面到位,如果有遗漏,欢迎补充,也可以加群一起讨论,一起学习,一起进步。
三、调试经验(持续更新)
1.(*)善用阿里云设备模拟器:模拟设备发送数据,简化调试流程。
2.利用阿里云日志服务:追踪设备连接与数据发送状态,精准定位问题
3.应用MQTT调试工具:如mqtt.fx,模拟设备发送数据,提升调试效率。
4.复刻并改进:先复刻完整连接过程的博客项目,再逐步修改,降低出错率。
5.多次尝试,不妨多试几次,可能因网络波动或硬件问题导致。
(*) 在调试连接过程中,如果一遍不成功,可以多试两次,科学的尽头是玄学,哈哈。因为有时候,网络连接不稳定,导致连接失败。也有可能是硬件本身的问题,多试几次,可能会有意想不到的效果。(泪崩,血的教训,哈哈)
6.查阅官方文档:阿里云官方文档详尽,遇到问题时,优先查阅。
四、 调试步骤(这里演示物模型topic)
1.创建阿里云物联网平台设备
可以参考我的这篇博客
零基础搭建自己的阿里云物联网平台
经过上面的步骤,我们就可以在阿里云物联网平台上创建一个设备,并获得MQTT的连接参数。
2. 设备连接阿里云物联网平台(建议先复刻我提供的AT指令,然后再自己改)
如果打算使用esp01s连接阿里云物联网平台,可以参考我的这篇博客
建议先复刻我提供的AT指令连接阿里云然后再自己改,这样可以避免一些问题。
1.AT
2.AT+RST
3.AT+CWMODE=1
4.AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com"
5.AT+CWJAP="wxlzss","123456789"
6.AT+MQTTUSERCFG=0,1,"NULL","device_klx&a1smmmV6Xz0","f3139b3188c9fd8a67f01729cc2819fead22818446ac1098237e5ef2f524c37b",0,0,""
7.AT+MQTTCLIENTID=0,"a1smmmV6Xz0.device_klx|securemode=2\,signmethod=hmacsha256\,timestamp=1708563604419|"
8.AT+MQTTCONN=0,"a1smmmV6Xz0.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1
9.AT+MQTTSUB=0,“/sys/a1smmmV6Xz0/device_klx/thing/service/property/set”,1
10. AT+MQTTPUB=0,"/sys/a1smmmV6Xz0/device_klx/thing/event/property/post","{\"params\":{\"temperature\":45\,\"LightLux\":67\,\"WaterLevel\":78}}",1,0
注意细节:
1.调试助手的波特率为115200,如果使用其他波特率,可能会导致连接失败。
2.勾选发送新行
五、测试发送自己的MQTT数据
5.1 替换连接参数
1.如果成功复刻了第二步,这个时候说明硬件没什么问题
2.将我的连接信息替换为自己的,自己的连接信息在阿里云物联网平台上可以找到,如下图所示:
5.2 替换订阅发布topic
3.找到自己的订阅topic和发布topic,如下图所示:
将我的订阅topic和发布topic替换为自己的,
4.如果觉得麻烦,可以直接将我的发送的报文数据替换为自己的,发送,在日志服务中查看数据是否发送成功,(不保证百分百成功,因为有可能你的{级数更多,比如你发送经纬度,建议第六步)如下图所示:
200:代表的是发送成功码
如果出现其他错误码,可以参考阿里云的官方文档。
阿里云错误码文档
(我也记不住所有的错误码,哈哈)
5.3 对比分析
6.如果第五步没成功,日志服务没找到数据,可以使用设备模拟器,模拟发送一次数据,记得把原来的连接的设备断开连接,因为同一个设备不能同时连接阿里云物联网平台,(可以选择mqtt 3.1,5.0我没试过,不知道好用不)设备模拟器就是模拟的一个真实设备,如下图所示:(设备模拟器发送的是物模型topic,会直接显示在页面中)
7.第六步成功了之后,可以去日志服务里面找到刚刚发送的数据,和AT指令发送的数据对比一下,看看有没有缺哪些数据,({ 大括号的级数不能少,一定对比清楚,少一级可能阿里云的物模型数据都显示不出来)。如下图所示
5.4 优化与验证
8.如果第七步成功了,试着去掉不必要的属性,多发送几次,原则上除了params,其他的都可以去掉,看看有没有影响,如果影响,就保留,不影响,就删掉。
9.如果第八步成功了之后,表示你已经成功的连接了阿里云,可以写单片机代码连接阿里云了,
六、自定义topic 连接阿里云调试
1.如果使用自定义topic,需要先在阿里云物联网平台创建自定义topic,还需要进行云产品流转,相当于两个设备进行数据转发,可以参考我写的博客,里面有详细的云产品流转步骤。
阿里云云产品流转规则设置M2M
2.配置好云产品流转规则之后,就可以进行调试了,可以使用mqtt.fx,也可以使用调试助手,我这里使用的是调试助手,如下图所示:
3.如果可以顺利流转,说明自定义topic连接阿里云成功,可以进行APP端,或者微信小程序端的调试了。
从0到1:使用app inventor 开发手机app实现连接阿里云平台
七、AT指令连接阿里云会出现的问题(ESP8266)
1.是烧录了MQTT固件后,才能连接阿里云,烧录了其他固件,比如AT固件,是不能连接阿里云的。(我用的是1471固件)
2.出现以下烧录固件错误
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x40100000, len 6960, room 16
tail 0
chksum 0xa5
load 0x3ffe8008, len 24, room 8
tail 0
chksum 0x1c
load 0x3ffe8020, len 3196, room 8
tail 4
chksum 0xde
csum 0xde
过一段时间就自动重启(快点几秒慢点两分钟)
解决办法:wifi模块供电不稳定,导致esp01s芯片卡死,更换供电设备重新烧录固件即可。
3.AT指令不要连着发同一条指令,有可能会报error,比如你连续发送AT指令,会报error,所以需要等待一段时间,再发送下一条指令
AT+MQTTCLIENTID=0,"a1smmmV6Xz0.device_klx|securemode=2\,signmethod=hmacsha256\,timestamp=1708563604419|"
这条指令有可能会失败,多实验几次不行的话,去掉timestamp再试试
八、总结
本文旨在分享阿里云物联网平台调试的实战经验与思路,鼓励开发者结合个人硬件与项目需求,灵活运用调试技巧。同时,欢迎读者指正文中可能存在的问题,共同促进技术进步。希望本文能为初学者提供有价值的参考,助力大家在阿里云物联网平台的开发之路上越走越远。