本篇文章介绍下乐鑫ESP8266使用MQTT-AT固件连接乐为物联网,MQTT的固件乐鑫官方并未提供,我们就到淘宝上找一家卖MQTT固件的卖家花几块钱买一个吧,飘易找的是一个辰天物联的固件,具体的淘宝链接就不放了,免得广告嫌疑。
如何给esp8266刷固件,参考飘易的这一篇文章:http://www.piaoyi.org/iot/espressif-ESP8266-MQTT-AT.html
这个mqtt的固件4个bin文件对应的烧录地址如下:
刷好固件之后,重启之后,会提示你要授权这个硬件:
Server Type=0 AT+INFO=invalid hardware to run the software,need license, failed
类似这段话,就去找卖家在线授权吧,未授权前,会联网查询授权,授权之后,只要不是全FLASH刷写,即使刷了其他固件,这个授权文件也会保留。授权之后,固件就不会再联网查询了。
乐联网可以方便的在线调试硬件设备,支持TCP\MQTT\MODBUS协议的接入。
网址:https://www.lewei50.com/,先注册账户吧。
是否可控这里,我们选择使用乐联网的MQTT,后续可以通过mqtt协议控制设备。
用户账户的 Userkey,我们不使用默认的32位长度的key,我们使用短key:
为什么使用短key呢?因为mqtt登录的时候,需要提供一个client id,这个client id的长度固件那里限制为最多32字节,如果乐联网的userkey使用长key,那么再拼接上设备标识的时候,就会超过固件允许的长度了。
我们创建2个传感器,分别是温度和湿度:
乐为物联MQTT服务支持协议: MQTT 3.1 and 3.1.1, 设备可以上传数据接收控制命令并返回结果,完全兼容使用乐为物联TCP服务的操作方式。
服务器::
mqtt://mqtt.lewei50.com:1883
连接Client Id:使用SN或者Userkey_设备标识方式,比如 d9feb24d00_02
连接时服务器会使用 Client Id进行校验,只有验证通过才允许建立连接。
服务限制 同一IP最多可以保持5个连接, 同一IP30秒内pub次数超过20次或者连接次数超过10次会被禁用IP10分钟。
仅允许发布或者订阅/lw/*/Client Id方式的主题:
/lw/u/clientid 上传数据 /lw/c/clientid 控制命令 /lw/r/clientid 返回控制结果
联网:
AT+AP=SSID,PASSWORD
查看连接路由器状态:
AT+GAPSTATUS
设置模块的设备编号,即client id(最大长度 32byte):
AT+DEVICEID=d9feb24d00_02
获取模块的设备编号:
AT+GDEVICEID
设置服务器登录信息(标准 MQTT,没有登录账号的默认填 username,password 即可):
AT+MQTTCLOUD=mqtt.lewei50.com,1883,username,password
获取模块服务器配置信息:
AT+GMQTTCLOUD
设置模块当前协议:
AT+MODULE=0
标准 MQTT 协议填 0,然后回车,成功会重启。
获取模块连接服务器状态:
AT+GSERVERSTATUS
订阅主题:
AT+SUB=/lw/u/d9feb24d00_02,0
发布主题:
AT+PUB=/lw/u/d9feb24d00_02,[{"Name":"temp","Value":"33"},{"Name":"humi","Value":"53"}],0
订阅主题:
AT+SUB=ct,0
说明: ct 是指主题名,0 表示 qos 的值(值范围 0-2)
返回值:成功 AT+INFO=Subscribe OK; 失败 AT+INFO=Subscribe FAILED
取消订阅:
AT+UNSUB=ct
说明: ct 是指主题名。
返回值:成功 AT+INFO=Unsubscribe OK; 失败 AT+INFO= Unsubscribe FAILED
发布主题:
AT+PUB=ct,hellowold,0
说明: ct 是指主题名;hellowold 表示发布的消息内容,支持 json 格式
数据;0 表示 qos 的值
返回值:成功 AT+INFO=Publish OK; 失败 AT+INFO= Publish FAILED
如果先前订阅了该主题还会收到:AT+RECTOPIC=ct,hellowold
设备收到订阅的主题的信息:
AT+RECTOPIC=ct,hellowold
说明:ct 是指接收到的主题名;hellowold 是指接收到的消息
备注:AT+GSERVERSTATUS 可以查看当前连接服务器状态。
模块上网:
AT+AP=SSID,PASSWORD
SSID 指路由器的用户名,PASSWORD 指路由器的密码。
模块重启:
AT+RST
模块设备编号(最大长度 32byte):
AT+DEVICEID=88888888
模块波特率:
AT+RATE=115200
只支持 115200、38400、19200、9600 四种,默认为 115200,对接端也要相应的切到对应波特率,否则通信无效。
模块调试模式:
AT+DEBUG=1
等于 1 时表示切到 debug 版本,等于 0 表示关闭打印信息
MQTT 的存活期:
AT+KEEPALIVE=120
值范围 0-3600 秒,默认 120 秒,0 是 mqtt 连接不断开
获取模块当前设备编号:
AT+GDEVICEID
获取模块协议模式:
AT+GMODULE
0 标准 MQTT、1 阿里基础版(自定义主题)、2 百度MQTT、3TCP、4UDP、5 阿里高级版(固定主题)设置完后模块会重启、6 模块做 TCP 服务器、7 模块做 AP 服务器。
获取模块阿里设备配置:
AT+GALIDEVICE
获取模块服务器配置信息:
AT+GMQTTCLOUD
获取模块连接路由器状态:
AT+GAPSTATUS
成功会返回模块的 IP 地址
获取模块连接对应服务器状态:
AT+GSERVERSTATUS
获取模块的 MAC 地址:
AT+GMAC
成功会返回模块的 sta 及 ap 的 MAC 地址
获取模块软件版本信息:
AT+GSWVERSION
获取模块 AP 配置信息:
AT+GAPINFO
获取模块波特率配置信息:
AT+GRATE
这个只有波特率选对了才有效果
获取模块静态 IP 信息:
AT+GIPSTA
模块 OTA 升级:
AT+OTA
模块复位参数初始化:
AT+MODULEINIT
会把所有配置都初始化成默认值
模块进入一键配网:
AT+SMARTCONFIG
用一键配网时,如果失败了,可以先输入该 AT 指令
各种 AT 指令操作后,模块信息返回:
AT+INFO=return data AT+RECTOPIC=return data
打个链接:泰州app开发
【参考】: