kurtt806/khoa_wifi_connect

1.0.1

Latest
uploaded 1 day ago
Bộ công cụ quản lý kết nối WiFi với giao diện Web (Captive Portal) phong cách VS Code, hỗ trợ cấu hình nâng cao (Google Sheets, VIBO-KEY).

readme

# KHOA_WIFI_CONNECT - Bộ công cụ kết nối WiFi thông minh cho ESP-IDF

Bộ component này giúp quản lý kết nối WiFi hoàn chỉnh cho ESP, bao gồm chế độ Station (kết nối WiFi nhà) và Access Point (phát WiFi cấu hình qua giao diện Web hiện đại phong cách VS Code).

## Các Tính Năng Chính

- **Giao diện Web cấu hình (Captive Portal)**: Tự động hiện trang cấu hình khi kết nối vào WiFi của ESP.
- **Phong cách VS Code Dark Mode**: Giao diện Moss Green chuyên nghiệp, hỗ trợ tiếng Việt.
- **Cấu hình nâng cao**: Lưu trữ VIBO-KEY (8 số), Google Sheet 1 & 2, và URL OTA tùy chỉnh.
- **Quản lý đa mạng**: Lưu trữ và tự động kết nối lại nhiều mạng WiFi đã lưu.
- **Tùy chỉnh công suất phát**: Điều chỉnh công suất WiFi tối ưu (mặc định 20dBm).

---

## Hướng dẫn sử dụng

### 1. Khởi tạo và Cấu hình

```cpp
#include "wifi_manager.h"

// 1. Lấy instance duy nhất
auto& wifi = WifiManager::GetInstance();

// 2. Cấu hình (tùy chọn)
WifiManagerConfig config;
config.ssid_prefix = "KHOA_WIFI"; // Tên WiFi phát ra (VD: KHOA_WIFI-A1B2)
config.language = "vi-VN";         // Ngôn ngữ giao diện Web

// 3. Khởi tạo
wifi.Initialize(config);
```

### 2. Quản lý sự kiện (Callbacks)

Sử dụng callback để theo dõi trạng thái mạng:

```cpp
wifi.SetEventCallback([](WifiEvent event) {
    switch (event) {
        case WifiEvent::Scanning:
            ESP_LOGI("APP", "Đang quét WiFi...");
            break;
        case WifiEvent::Connected:
            ESP_LOGI("APP", "Đã kết nối! IP: %s", WifiManager::GetInstance().GetIpAddress().c_str());
            break;
        case WifiEvent::ConfigModeEnter:
            ESP_LOGI("APP", "Đã bật chế độ cấu hình AP");
            break;
    }
});
```

### 3. Điều khiển Chế độ

```cpp
// Chế độ Station (Kết nối WiFi đã lưu)
wifi.StartStation();

// Chế độ Config AP (Phát WiFi để cài đặt)
wifi.StartConfigAp();

// Dừng các chế độ
wifi.StopStation();
wifi.StopConfigAp();
```

---

## Danh sách API chính (Dùng trong code Main)

### Thông tin kết nối

- `bool IsConnected()`: Kiểm tra đã có mạng hay chưa.
- `std::string GetIpAddress()`: Lấy địa chỉ IP hiện tại.
- `std::string GetSsid()`: Lấy tên WiFi đang kết nối.
- `int GetRssi()`: Lấy độ mạnh tín hiệu (dBm).
- `std::string GetMacAddress()`: Lấy địa chỉ MAC của thiết bị.

### Lấy thông số cấu hình nâng cao (Lưu trong NVS)

Các hàm này cực kỳ hữu ích để gọi ra sử dụng trong logic ứng dụng:

- `std::string GetViboKey()`: Lấy mã VIBO-KEY (8 ký tự số).
- `std::string GetGoogleSheetUrl1()`: Lấy link Google Sheet 1.
- `std::string GetGoogleSheetUrl2()`: Lấy link Google Sheet 2.
- `std::string GetOtaUrl()`: Lấy link Server cập nhật Firmware OTA.

---

## Tính năng Nút nhấn (BOOT/Config)

Component này được thiết kế để tích hợp với thư viện `iot_button`. Bạn có thể dễ dàng gán GPIO 6 làm nút bấm cứng để bắt buộc vào chế độ cấu hình:

```cpp
// Trong main.cpp
button_config_t btn_cfg = { .long_press_time = 3000 };
button_gpio_config_t gpio_cfg = { .gpio_num = 6, .active_level = 0 };
button_handle_t btn_handle;
iot_button_new_gpio_device(&btn_cfg, &gpio_cfg, &btn_handle);

iot_button_register_cb(btn_handle, BUTTON_PRESS_DOWN, NULL, [](void *arg, void *data) {
    WifiManager::GetInstance().StartConfigAp();
}, NULL);
```

---

## Cấu trúc lưu trữ NVS (Namespace: "wifi")

Nếu bạn muốn truy cập trực tiếp qua thư viện NVS của ESP-IDF:

- `vibo_key`: string (max 8)
- `gs_url`: string
- `gs_url_2`: string
- `ota_url`: string
- `max_tx_power`: int8
- `remember_bssid`: u8 (0/1)
- `sleep_mode`: u8 (0/1)

Links

Maintainer

  • Khoa <your-email@example.com>

License: MIT

To add this component to your project, run:

idf.py add-dependency "kurtt806/khoa_wifi_connect^1.0.1"

download archive

Stats

  • Archive size
    Archive size ~ 32.94 KB
  • Downloaded in total
    Downloaded in total 0 times
  • Downloaded this version
    This version: 0 times

Badge

kurtt806/khoa_wifi_connect version: 1.0.1
|