[开源重卷]ESP32配网+http获取天气+MQTT推送到手机,esp-idf v4.3.1

文摘   科技   2022-10-11 07:45   江苏  

点击上方“嘉友创信息科技”,选择关注,干货福利,第一时间奉上。

00
重卷的意义

  • smartConfig配网后,进入用户任务,实用组合。

  • 用户任务启动http request和MQTT client

  • 实现配网后http获取苏州天气,mqtt推送给手机

01
其他

MQTT参考:手机MQTT控制ESP32指示灯

http基础参考:《ESP32开发指南V1.2》,http章节

此处只适配esp-idf v4.3.1,知识点相同 

03
软件流程

【先smartConfig配网,然后请求http获取天气,连MQTT服务器,订阅和发布

04
关键代码

HTTP获取天气接口配置

//http组包宏,获取天气的http接口参数#define WEB_SERVER          "api.thinkpage.cn"              #define WEB_PORT            "80"#define WEB_URL             "/v3/weather/now.json?key="#define host             "api.thinkpage.cn"#define APIKEY            "g3egns3yk2ahzb0p"    
#define city "suzhou"#define language "en"

HTTP请求包

//http请求包static const char *REQUEST = "GET "WEB_URL""APIKEY"&location="city"&language="language" HTTP/1.1\r\n"    "Host: "WEB_SERVER"\r\n"    "Connection: close\r\n"    "\r\n";

MQTT初始化:域名、端口、账号、密码

static void mqtt_app_start(void){    esp_mqtt_client_config_t mqtt_cfg = {        .host = "www.jiauc.com",        .port = 1883,        .username = "admin",        .password = "123456",    };    esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);    esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, client);    esp_mqtt_client_start(client);}

组mqtt包把天气信息发送给手机

//组mqtt包把天气信息发送给手机strcat(mqtt_tx_buf, "city:");strcat(mqtt_tx_buf, weathe.cit);strcat(mqtt_tx_buf, ";weather:");strcat(mqtt_tx_buf, weathe.weather_text);strcat(mqtt_tx_buf, ";temperatur:");strcat(mqtt_tx_buf, weathe.temperatur);mqtt_sub(mqtt_tx_buf);

工程目录结构

05
验证

首次使用,等待smartConfig配网;

http请求应答,解析天气,MQTT推送给手机;


06
源码下载

公众号后台回复关键词【ESP32】,发送后收到链接即可下载
举例:关键词【步进电机】

谢谢关注,下期更精彩。

收藏、点赞、在看一键三连

-- END --

开源一小步
定期发布开源项目,欢迎关注!!
 最新文章