# test **Repository Path**: NetADs/test ## Basic Information - **Project Name**: test - **Description**: ESP32-S3-N16R8开发板的测试项目 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-13 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ESP-IDF 天气与日历 API 示例项目 基于 ESP32-S3 的智能设备开发框架,集成 WiFi 连接、时间同步、HTTP JSON 数据获取等功能。 ## 功能特点 - **WiFi 连接**:Station 模式自动连接指定 AP,支持事件组等待连接状态 - **SNTP 时间同步**:异步模式同步网络时间,自动配置东八区时区(北京时间) - **HTTP JSON 请求**:轻量级组件,自动 TLS 证书验证、DNS 诊断、超时重试机制 - **API 数据获取**:预置香港天文台农历、极速数据黄历、OpenWeatherMap 天气接口 - **模块化架构**:所有功能拆分为独立组件,便于复用和二次开发 ## 项目结构 ``` ├── main/ │ ├── main.c # 程序入口(app_init + app_run) │ └── CMakeLists.txt ├── components/ │ ├── app/ # 应用程序生命周期管理 │ ├── core/ # API 数据获取实现(农历、天气) │ ├── http_json/ # 通用 HTTPS JSON 请求组件 │ ├── sntp_sync/ # SNTP 时间同步组件 │ └── wifi/ # WiFi Station 连接组件 ├── sdkconfig.defaults # 项目默认配置 └── partitions.csv # 分区表 ``` ## 组件说明 ### app - 应用程序管理 负责初始化流程:NVS -> WiFi -> SNTP -> API 数据获取 ### wifi - WiFi 连接 ```c #include "wifi.h" wifi_init_sta(); if (wifi_wait_for_connected(pdMS_TO_TICKICS(10000))) { // WiFi 已连接 } ``` ### sntp_sync - 时间同步 ```c #include "sntp_sync.h" sntp_sync_init(0); while (!sntp_time_is_synced()) { vTaskDelay(pdMS_TO_TICS(500)); } // 时间已同步,自动配置为 UTC+8 ``` ### http_json - HTTP JSON 请求 ```c #include "http_json.h" cJSON *root = http_json_get("https://api.example.com/data", 0); if (root) { // 处理 JSON 数据 cJSON_Delete(root); } ``` ### core - API 数据获取 预置 4 个公开 API 的获取函数: | 函数 | 接口 | 说明 | |------|------|------| | `fetch_hk_observatory()` | data.weather.gov.hk | 香港天文台农历日期 | | `fetch_jisu_huangli()` | api.jisuapi.com | 极速数据黄历(需 appkey) | | `fetch_owm_current()` | api.openweathermap.org | OpenWeatherMap 实时天气 | | `fetch_owm_forecast()` | api.openweathermap.org | OpenWeatherMap 3 天预报 | ## 快速开始 ### 1. 环境要求 - ESP-IDF v5.5+ - ESP32-S3 开发板 - USB 转串口驱动 ### 2. 配置 WiFi ```bash idf.py menuconfig ``` 进入 `Example Connection Configuration`,设置: - `WiFi SSID`:你的 WiFi 名称 - `WiFi Password`:你的 WiFi 密码 ### 3. 编译与烧录 ```bash idf.py build idf.py -p COM3 flash monitor ``` ### 4. 串口监视器 ``` Ctrl+] 退出监视器 ``` ## 网络优化 项目已针对不稳定网络进行优化: - HTTP 超时时间:30 秒 - 自动重试:失败后最多重试 2 次,间隔递增 - DNS 缓存:启用 3 个 DNS 服务器,备用 Google DNS (8.8.8.8) - TLS 证书验证:使用 ESP-IDF 内置 CA 证书包 ## API 密钥配置 部分第三方 API(如 OpenWeatherMap、极速数据)需要申请 API Key。请在 `components/core/apidebug.c` 中替换为你自己的密钥: ```c #define API_OWM_URL "https://api.openweathermap.org/data/2.5/weather?q=Tianjin,CN&appid=YOUR_KEY&units=metric&lang=zh_cn" ``` ## 已知限制 - 免费 API 有每日请求次数限制,当前设计为启动时仅请求一次 - 大 JSON 响应(>100KB)可能因 ESP32 内存限制导致分配失败 - 仅支持 ESP32-S3 芯片(其他芯片需修改分区表和引脚配置) ## 许可证 MIT License