ESP8266例程解析⑦MQTT解析(以局域网控制灯为例)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_25205045/article/details/85490427

MQTT概念解析:https://blog.csdn.net/qq_25205045/article/details/85490447
MQTT服务器搭建压缩包下载地址 : http://emqtt.com/downloads
MQTT服务器测试工具 :https://download.csdn.net/download/qq_25205045/10894301
打开Windows的命令行窗口,CD到解压后的目录bin,执行命令:emqttd console
在浏览器打开本地网址:http://127.0.0.1:18083 ,这个网址也可以从上面的弹窗出得到!如图,提示输入账户密码,默认是账户名 admin ,密码public ,输入点击登录
官方SDK:https://github.com/espressif/ESP8266_NONOS_SDK

修改代码

MQTT_HOST:MQTT服务器地址
MQTT_PORT:MQTT服务器端口
MQTT_USER:MQTT服务器用户名
MQTT_PASS:MQTT服务器密码
STA_SSID:WI-FI帐号
STA_PASS:WI-FI密码

流程分析

  1. 串口设置
  2. 1、从flash读出配置标志和配置数据。2、如果配置标志改变了,则将新的配置标志和数据写入flash 3、mqtt的device
    id必须是唯一的,否则相同的id会造成连接冲突 4、改变device
    id等配置数据的时候,别忘了改一下配置标志CFG_HOLDER(加一或者减一),否则是不会调用新的配置数据的 ​​​​
  3. 设置相关IO口
  4. MQTT初始化连接
  5. 初始化MQTT客户端函数
  6. 是否连接One云,决定是否注释(即是否创建遗嘱)
  7. 连接服务器
  8. 断开连接
  9. 发布消息
  10. 收到的主题
  11. wifi重新连接
    在这里插入图片描述
void user_init(void) 
{
	uart_init(BIT_RATE_115200, BIT_RATE_115200);//串口初始化

	CFG_Load();//延迟函数 最大值为65535us 1、从flash读出配置标志和配置数据。2、如果配置标志改变了,则将新的配置标志和数据写入flash  3、mqtt的device id必须是唯一的,否则相同的id会造成连接冲突  4、改变device id等配置数据的时候,别忘了改一下配置标志CFG_HOLDER,否则是不会调用新的配置数据的 ​​​​


	PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO2); //选择GPIO2
	GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1); //默认GPIO2为高,也就是关灯

	MQTT_InitConnection(&mqttClient, sysCfg.mqtt_host, sysCfg.mqtt_port,
			sysCfg.security);//MQTT初始化连接函数
	//MQTT_InitConnection(&mqttClient, "192.168.11.122", 1880, 0);

	MQTT_InitClient(&mqttClient, sysCfg.device_id, sysCfg.mqtt_user,
			sysCfg.mqtt_pass, sysCfg.mqtt_keepalive, 1);//MQTT初始化MQTT客户端函数
	//MQTT_InitClient(&mqttClient, "client_id", "user", "pass", 120, 1);

	MQTT_InitLWT(&mqttClient, "/lwt", "offline", 0, 0);//连接One云,须注释这句话   作用是创建遗嘱(可选)
	MQTT_OnConnected(&mqttClient, mqttConnectedCb);//连接服务器
	MQTT_OnDisconnected(&mqttClient, mqttDisconnectedCb);//断开连接
	MQTT_OnPublished(&mqttClient, mqttPublishedCb);//发布消息
	MQTT_OnData(&mqttClient, mqttDataCb);//收到的主题

	WIFI_Connect(sysCfg.sta_ssid, sysCfg.sta_pwd, wifiConnectCb);//wifi连接

	INFO("\r\nSystem started ...\r\n");//打印系统启动
}

在这里插入图片描述
在这里插入图片描述

程序下载

在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页