
Wi-Fi Provisioning – это процесс настройки устройства для подключения к беспроводной сети Wi-Fi. В контексте Интернета вещей (IoT) это обычно означает предоставление устройству учетных данных (таких как SSID и пароль) для доступа к сети Wi-Fi. Этот процесс может быть автоматизирован или упрощен, чтобы сделать его более удобным для пользователей – например, через мобильное приложение или Bluetooth-соединение.
В случае использования Bluetooth Low Energy (BLE) для Wi-Fi Provisioning, устройство может принимать учетные данные Wi-Fi через BLE и использовать их для подключения к сети Wi-Fi без необходимости ручного ввода данных.
В этом уроке вы узнаете, как настроить Wi-Fi Provisioning через BLE на ESP32. Это отличный вариант для проектов IoT, которым требуются учетные данные Wi-Fi для подключения к интернету, без необходимости жестко кодировать их в скетче Arduino во время разработки.
4 комментария. Оставить новый
Всё отлично. Но как работать с устройством если у нас нет Sireal Monitor? Представьте ситуацию: Вы сделали коммерческий проект, где требуется, чтобы esp32 подключался к домашнему роутеру и начал передавать необходимые данные. Отсюда вопрос, может ли официальная программа отображать на телефоне ip адрес, который присвоил esp32 роутер? Без андроид приложения, просто локалка.
Здравствуйте. Если нет возможности ручной настройки, нужно добавлять автоконнект.
Здравствуйте.
Спасибо, отличная статья.
Остался не раскрыт вопрос хранения wifi пароля после отключения питания.
Библиотека сама хранить пароль или для это нужно написать свою реализацию?
Если я уже подключён к wifi, то могу ли я передать через ble данные для подключения к новой сети?
Здравствуйте. Для хранения пароля можно использовать Preferences библиотеку для сохранения в NVS:
#include Preferences.h
Preferences preferences;
void saveWifiCredentials(String ssid, String password) {
preferences.begin("wifi", false);
preferences.putString("ssid", ssid);
preferences.putString("password", password);
preferences.end();
}
void loadWifiCredentials() {
preferences.begin("wifi", true);
String ssid = preferences.getString("ssid", "");
String password = preferences.getString("password", "");
preferences.end();
if(ssid != ""){
WiFi.begin(ssid.c_str(), password.c_str());
}
}
Передачу новых данных через BLE при активном Wi-Fi реализовать также возможно, но требует дополнительной реализации:
1. Ваша BLE-служба должна оставаться активной после подключения к Wi-Fi
2. Нужно обрабатывать новые учётные данные и переподключаться:
if(newCredentialsReceived){
saveWifiCredentials(newSSID, newPassword);
WiFi.disconnect();
WiFi.begin(newSSID.c_str(), newPassword.c_str());
}