# SmartPetFeeder_STM32 ## WiFi 与 MQTT 通信模块说明 本工程中的 `dx_wf_24.c` 实现了基于 ESP8266/ESP32 AT 指令集的 WiFi 与 MQTT 通信功能,主要特性包括: - **串口 DMA 接收与发送**:使用 STM32 的 UART + DMA 实现高效数据收发,支持 IDLE 中断检测帧尾。 - **WiFi 连接管理**:通过 AT 指令自动连接指定 SSID 和密码的 WiFi 网络。 - **MQTT 客户端功能**: - 自动生成唯一 ClientID(基于系统 Tick 与 STM32 UID); - 支持设置用户名、密码; - 连接指定 MQTT 服务器(支持自定义 Host 和 Port); - 双主题订阅:`petfeeder/control`(控制指令)和 `petfeeder/config`(配置更新); - 支持 RAW 数据发布(`AT+MQTTPUBRAW`),适用于 JSON 等结构化数据; - 自动处理 MQTT 断线重连事件(通过 `+MQTTDISCONNECTED` 监测)。 - **消息解析**:解析 `+MQTTSUBRECV` 格式的订阅消息,提取主题与负载内容。 - **状态上报**: - 设备上线时自动发布 `{"status":"online"}` 到 `petfeeder/status` 主题(retain=1); - 支持传感器数据上报至 `petfeeder/sensor` 主题。 > 注意:当前实现为单任务模型,在 `wifi_task_mqtt` 中完成初始化、连接、订阅及消息处理循环。 ## SNTP 网络时间同步功能 本工程还实现了 SNTP (Simple Network Time Protocol) 网络时间同步功能,主要特性包括: - **自动时间同步**:在 MQTT 连接成功后自动获取网络时间并同步到本地。 - **中国时区支持**:默认配置为中国时区(UTC+8),使用 `cn.ntp.org.cn` 作为 NTP 服务器。 - **时间获取与存储**:提供 API 接口获取当前网络时间,并存储在内部结构体中。 - **时间有效性检查**:提供函数检查获取的时间是否有效。 ### 主要函数接口: - `WIFI_Enable_SNTP()`:启用 SNTP 功能并配置 NTP 服务器 - `WIFI_Get_SNTP_Time()`:获取当前网络时间 - `WIFI_Get_Current_Time()`:获取存储的当前时间(返回结构体副本) - `WIFI_Is_Time_Valid()`:检查时间是否有效 ### 使用示例: