本文部分参考:
https://github.com/tuanpmt/esp_mqtt
http://espressif.com/zh-hans/products/hardware/esp8266ex/overview
前言
ESP8266是一颗低功耗、高集成度、性能稳定的 Wi-Fi 芯片,是物联网开发的首选设备。ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了最低功耗。ESP8266EX 有三种运行模式:激活模式、睡眠模式和深度睡眠模式,能够延长电池寿命。 ESP8266EX 是业内集成度最高的 Wi-Fi 芯片,最小封装尺寸仅为 5mm x 5mm。ESP8266EX 高度集成了天线开关、射频 balun、功率放大器、低噪放大器、过滤器和电源管理模块,仅需很少的外围电路,可将所占 PCB 空间降到最低。ESP8266EX 集成了更多的元器件,性能稳定,易于制造,工作温度范围达到 -40°C 到 +125°C。
mosquitto是一款精致的MQTT broker.一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。
mosquitto的相关使用请参考上一篇博客: http://blog.csdn.net/ustccw/article/details/76905459#t8
一: 目的
使用mosquitto broker 作为 MQTT server,开启双向认证。同时 mosquitto broker 订阅主题 /mqtt/topic/1
,使用 ESP8266 作为 MQTT Client,开启双向认证,订阅和发布主题 /mqtt/topic/1
。如果 mosquitto broker 收到ESP8266 的消息,则成功实现ESP8266与mosquitto的MQTT双向认证。
二: ESP8266及开发环境搭建
如果您熟悉ESP8266开发环境,可以很顺利理解下面步骤; 如果您不熟悉某个部分,比如编译,烧录。需要您结合官方的相关文档来理解。http://espressif.com/zh-hans/support/download/overview,如您需阅读ESP8266 快速入门指南文档。
1.1 ESP8266NONOS SDK和MQTT Demo获取
$git clone https://github.com/ustccw/MQTTESP8266.git
可获取ESP8266开发SDK,此SDK可以保证ESP8266良好工作。如图,esp_mqtt_proj 目录是MQTT Demo.
1.2 编译器获取
https://github.com/ustccw/RepoForShareData/tree/master/ESP/ESP8266/compiler,xtensa-lx106-elf.tar.bz2是编译器压缩包,解压后 xtensa-lx106-elf 是编译器根目录,将编译器拷贝至 /opt/ 下。
1.3 mqtt demo 修改
esp_mqtt_proj/include/mqtt_config.h 需修改的地方
1. #define CFG_HOLDER 0x00FF55A4 // 编译前,改变这个数值。如将 0x00FF55A4 改为 0x00FF55A5。下次编译,不用再改,这个参数将保证设备自动配网,如会保存WiFi账号密码等。
2. #define MQTT_SSL_ENABLE // 不可注释,单向认证和双向认证必选
2. #define MQTT_HOST "192.168.111.100" // 修改为 MQTT 服务器的IP或域名
3. #define MQTT_PORT 8883 // 修改为 MQTT 服务器开放的端口号
4. #define MQTT_CLIENT_ID "chenwucontr