避免在不使用 Wifimanage 的情况下在您的 ESP8266 上硬编码 WiFi 凭据
Avoid-Hard-Coding-WiFi-Credentials-on-Your-ESP8266 without using Wifimanage
可能吗? ESP8266 通过 iOS 应用程序连接到路由器 wifi?
我想通过 ESP8266 使应用程序控制某些东西。我的工作流程如下:
- 在连接到 wifi 路由器的设备上打开应用程序。
- 连接到 ESP8266 并为其提供当前 Wifi 的 SSID 和密码信息。
- ESP8266 收到此信息并自动连接到 Wifi 路由器。
先谢谢你的指点。
我尝试过这种方式,但我获得了用户体验。因为用户必须执行许多步骤。
- 使用 WiFiManager,将 ESP8266 作为 wifi 路由器。
- 从设备转到 Wifi 设置以连接到 ESP8266 Wifi。
- 通过从网络浏览器转到 192.168.4.1 提供 Wifi 信息(SSID、密码)。
这里注意一下,避免这样
请多多指教。
谢谢
WiFiManager 要求您:
- 连接ESP8266的AP
- 转到 192.168.4.1(或任何其他设置的地址)- 在 iOS 它应该自动出现
- 点击 Wifi 扫描
- 选择您希望 ESP8266 连接的网络
- 如果有密码请提供密码
- 点击保存按钮
这是用户必须做的最少的事情。 He/she 必须连接到 ESP8266 的 AP 并以某种方式提供 WiFi 凭据。您唯一可以更改的是用户提供该凭据的方式。如果您已经让您的用户下载您的 iOS 应用程序,那么也许可以在您的应用程序中增加配置 ESP8266 的可能性。
为了在板载 WiFiManager 上配置 ESP8266,您的应用必须:
- 扫描 WiFi 网络并连接到 ESP8266 的 AP(例如通过搜索
对于特定的 SSID)
- 发送 GET 请求到 http://192.168.4.1/wifisave?s=NETWORK_SSID&p=NETWORK_PASSWORD
但是,请记住否则就没有意义。如果您的用户在配置 ESP8266 之前不需要下载任何应用程序,则不需要 him/her 来执行此操作。 Web 应用程序是当今的一种方式。这种方法不需要用户下载另一个应用程序来输入 WiFi 凭据。 WiFiManager 应该在用户连接到设备的 AP 后自动出现。
我找到了这样做的方法:
这是 iOS 应用程序中的代码:
https://github.com/EspressifApp/EsptouchForIOS
这是 ESP8266 运行 Arduino 上的代码:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
WiFiUDP Udp;
void setup() {
int cnt = 0;
//Allocate baud 115200
Serial.begin(115200);
//Mode wifi is station
WiFi.mode(WIFI_STA);
//Waiting for connect
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if(cnt++ >= 10){
WiFi.beginSmartConfig();
while(1){
delay(1000);
//Check the connect and print inform if success
if(WiFi.smartConfigDone()){
Serial.println("SmartConfig Success");
break;
}
}
}
}
Serial.println("");
Serial.println("");
WiFi.printDiag(Serial);
// Allocate server
Udp.begin(49999);
Serial.println("Server started");
// Print IP address
Serial.println(WiFi.localIP());
}
void loop() {
// Receive the package from ESPTouch
Udp.parsePacket();
//Print IP of ESP8266
while(Udp.available()){
Serial.println(Udp.remoteIP());
Udp.flush();
delay(5);
}
}
首先,我不认为你把ESP8266做成了一个Wi-Fi路由器。我想你的意思是它进入 AP 模式以提示用户输入凭据。
我已经通过使用 EEPROM 库解决了这个问题。您可以轻松找到代码示例 here
所以基本上:
- 预硬编码凭据(第一个 运行 可以是虚拟数据)到 EEPROM。
- 当 ESP8266 启动时,加载这些凭据并尝试连接到
Wi-Fi。
- 如果无法连接,提示用户输入凭据。
- ESP8266 尝试重新连接。如果可以连接,则写入
EEPROM 的凭据。
- 每次启动时从第 2 步开始重复。
现在,它不再每次都让用户输入凭据,而是先尝试连接。如果失败,则用户将不得不做额外的工作。
如果我能提供帮助,请告诉我,我已经在这个问题上进行了大量工作并且有工作代码。
可能吗? ESP8266 通过 iOS 应用程序连接到路由器 wifi? 我想通过 ESP8266 使应用程序控制某些东西。我的工作流程如下:
- 在连接到 wifi 路由器的设备上打开应用程序。
- 连接到 ESP8266 并为其提供当前 Wifi 的 SSID 和密码信息。
- ESP8266 收到此信息并自动连接到 Wifi 路由器。
先谢谢你的指点。
我尝试过这种方式,但我获得了用户体验。因为用户必须执行许多步骤。 - 使用 WiFiManager,将 ESP8266 作为 wifi 路由器。 - 从设备转到 Wifi 设置以连接到 ESP8266 Wifi。 - 通过从网络浏览器转到 192.168.4.1 提供 Wifi 信息(SSID、密码)。 这里注意一下,避免这样
请多多指教。 谢谢
WiFiManager 要求您:
- 连接ESP8266的AP
- 转到 192.168.4.1(或任何其他设置的地址)- 在 iOS 它应该自动出现
- 点击 Wifi 扫描
- 选择您希望 ESP8266 连接的网络
- 如果有密码请提供密码
- 点击保存按钮
这是用户必须做的最少的事情。 He/she 必须连接到 ESP8266 的 AP 并以某种方式提供 WiFi 凭据。您唯一可以更改的是用户提供该凭据的方式。如果您已经让您的用户下载您的 iOS 应用程序,那么也许可以在您的应用程序中增加配置 ESP8266 的可能性。
为了在板载 WiFiManager 上配置 ESP8266,您的应用必须:
- 扫描 WiFi 网络并连接到 ESP8266 的 AP(例如通过搜索 对于特定的 SSID)
- 发送 GET 请求到 http://192.168.4.1/wifisave?s=NETWORK_SSID&p=NETWORK_PASSWORD
但是,请记住否则就没有意义。如果您的用户在配置 ESP8266 之前不需要下载任何应用程序,则不需要 him/her 来执行此操作。 Web 应用程序是当今的一种方式。这种方法不需要用户下载另一个应用程序来输入 WiFi 凭据。 WiFiManager 应该在用户连接到设备的 AP 后自动出现。
我找到了这样做的方法: 这是 iOS 应用程序中的代码: https://github.com/EspressifApp/EsptouchForIOS
这是 ESP8266 运行 Arduino 上的代码:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
WiFiUDP Udp;
void setup() {
int cnt = 0;
//Allocate baud 115200
Serial.begin(115200);
//Mode wifi is station
WiFi.mode(WIFI_STA);
//Waiting for connect
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if(cnt++ >= 10){
WiFi.beginSmartConfig();
while(1){
delay(1000);
//Check the connect and print inform if success
if(WiFi.smartConfigDone()){
Serial.println("SmartConfig Success");
break;
}
}
}
}
Serial.println("");
Serial.println("");
WiFi.printDiag(Serial);
// Allocate server
Udp.begin(49999);
Serial.println("Server started");
// Print IP address
Serial.println(WiFi.localIP());
}
void loop() {
// Receive the package from ESPTouch
Udp.parsePacket();
//Print IP of ESP8266
while(Udp.available()){
Serial.println(Udp.remoteIP());
Udp.flush();
delay(5);
}
}
首先,我不认为你把ESP8266做成了一个Wi-Fi路由器。我想你的意思是它进入 AP 模式以提示用户输入凭据。
我已经通过使用 EEPROM 库解决了这个问题。您可以轻松找到代码示例 here
所以基本上:
- 预硬编码凭据(第一个 运行 可以是虚拟数据)到 EEPROM。
- 当 ESP8266 启动时,加载这些凭据并尝试连接到 Wi-Fi。
- 如果无法连接,提示用户输入凭据。
- ESP8266 尝试重新连接。如果可以连接,则写入 EEPROM 的凭据。
- 每次启动时从第 2 步开始重复。
现在,它不再每次都让用户输入凭据,而是先尝试连接。如果失败,则用户将不得不做额外的工作。
如果我能提供帮助,请告诉我,我已经在这个问题上进行了大量工作并且有工作代码。