feat(ap_mode): add to config only ap mode

This commit is contained in:
thek4n 2026-06-06 15:12:37 +03:00
parent 5d2ccf0a8e
commit d2a8a8cea6
3 changed files with 61 additions and 2 deletions

View File

@ -1,4 +1,6 @@
# Pump controller ESP32
Контроллер насоса с веб интерфейсом.
## Сборка и прошивка
```sh
@ -6,3 +8,22 @@ PORT="/dev/ttyUSB0" \
ESP_IDF="~/playground/esp-idf/"
just build flash
```
## Setup
Настройка.
При первом запуске устройства с прошивкой (!WIFI_AP) создастся wifi точка
(default ssid: pumpcontroller). Подключиться и зайти в браузере на страницу
192.168.4.1:80. Ввести пароль ssid и пароль основного wifi. Устройство
перезагрузится и подключится к wifi и получит адрес (его можно узнать в
настройках роутера). По этому адресу будет основная страница контроля давления.
При вводе неверного пароля нужно осуществить сброс до заводских настроек и
повторить настройку.
### Reset
Сброс осуществляется замыканием пина D15 на землю и подключением питания.
Устройство моргнет светодиодом 3 раза и перезагрузится, в этот момент нужно
убрать замыкание D15 на землю.

View File

@ -1,7 +1,20 @@
menu "Pump Controller Configuration"
config WIFI_AP
bool "Work as WIFI AP"
default false
help
Device wont connect to wifi
config PUMP_PIN
int "Pump digital pin"
default 4
range 4 33
help
Digital pin for pump control.
config AP_WIFI_SSID
string "AP WiFi SSID"
default "ESP32_Hotspot"
default "pumpcontroller"
help
Wi-Fi ssid.

View File

@ -918,6 +918,26 @@ static app_error_t setup_mode_init(void) {
return ERR_OK;
}
static app_error_t ap_normal_mode_init() {
CHECK_ERROR(wifi_softap_init(), APP_ERR_WIFI_INIT_FAIL);
CHECK_ERROR(load_thresholds(), APP_ERR_NVS_READ_FAIL);
CHECK_ERROR(adc_init(), APP_ERR_ADC_INIT_FAIL);
CHECK_ERROR(pump_init(), APP_ERR_PUMP_INIT_FAIL);
CHECK_ERROR(http_server_start(), APP_ERR_HTTP_SERVER_START_FAIL);
CHECK_ERROR(tasks_create(), APP_ERR_TASK_CREATE_FAIL);
ESP_LOGI(TAG, "=========================================");
ESP_LOGI(TAG, "AP normal mode active");
ESP_LOGI(TAG, "📱 Connect to Wi-Fi: %s", CONFIG_AP_WIFI_SSID);
ESP_LOGI(TAG, "🔑 Password: %s", strlen(CONFIG_AP_WIFI_PASS) ? CONFIG_AP_WIFI_PASS : "Open network");
ESP_LOGI(TAG, "🌐 Open browser: http://%s:%d", CONFIG_AP_IP, CONFIG_WEBINTERFACE_PORT);
ESP_LOGI(TAG, "=========================================");
return ERR_OK;
}
static app_error_t normal_mode_init(void) {
g_setup_mode = false;
@ -968,6 +988,11 @@ void app_main(void) {
vTaskDelay(pdMS_TO_TICKS(100));
#if CONFIG_WIFI_AP
if (ap_normal_mode_init() != APP_ERR_OK) {
handle_error(APP_ERR_WIFI_INIT_FAIL);
}
#else // CONFIG_WIFI_AP
// Check reset button
if (gpio_get_level(RESET_BTN_GPIO) == 0) {
ESP_LOGI(TAG, "RESET button pressed, resetting settings...");
@ -988,6 +1013,6 @@ void app_main(void) {
handle_error(APP_ERR_WIFI_CONNECT_FAIL);
}
}
#endif // CONFIG_WIFI_AP
vTaskDelete(NULL);
}