Implement WiFi dual mode functionality by adding station mode.
This commit is contained in:
parent
87fb00bd26
commit
fdd7e26e54
100
src/main.cpp
100
src/main.cpp
@ -15,8 +15,11 @@
|
|||||||
const char *APssid = APSSID;
|
const char *APssid = APSSID;
|
||||||
const char *APpassword = APPSK;
|
const char *APpassword = APPSK;
|
||||||
|
|
||||||
const char *ssid = "Apto202";
|
const char *ssid = "QueirozX";
|
||||||
const char *password = "gatocafe";
|
const char *password = "queirozlindo";
|
||||||
|
|
||||||
|
bool is_discovering_tuya_ip = true;
|
||||||
|
|
||||||
|
|
||||||
ESP8266WebServer web_server(80);
|
ESP8266WebServer web_server(80);
|
||||||
WiFiClient wifiClient;
|
WiFiClient wifiClient;
|
||||||
@ -52,6 +55,41 @@ void handleSetHost()
|
|||||||
HOST_ADDRESS = host;
|
HOST_ADDRESS = host;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void try_to_connect_to_wifi_network_if_not_connected()
|
||||||
|
{
|
||||||
|
WiFi.begin(ssid, password);
|
||||||
|
while(WiFi.status() != WL_CONNECTED)
|
||||||
|
{
|
||||||
|
Serial.print(".");
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
Serial.println("");
|
||||||
|
}
|
||||||
|
|
||||||
|
String return_first_client_ip()
|
||||||
|
{
|
||||||
|
unsigned char softap_stations_cnt;
|
||||||
|
struct station_info *stat_info;
|
||||||
|
uint32 uintaddress;
|
||||||
|
|
||||||
|
softap_stations_cnt = wifi_softap_get_station_num();
|
||||||
|
stat_info = wifi_softap_get_station_info();
|
||||||
|
String string_ip;
|
||||||
|
|
||||||
|
if (stat_info != NULL) {
|
||||||
|
auto IPaddress = &stat_info->ip;
|
||||||
|
uintaddress = IPaddress->addr;
|
||||||
|
IPAddress myIp(uintaddress);
|
||||||
|
string_ip = myIp.toString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return String("👎");
|
||||||
|
}
|
||||||
|
return string_ip;
|
||||||
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
pinMode(BUTTON, INPUT_PULLUP);
|
pinMode(BUTTON, INPUT_PULLUP);
|
||||||
@ -61,40 +99,54 @@ void setup()
|
|||||||
Serial.print("Configuring access point...");
|
Serial.print("Configuring access point...");
|
||||||
/* You can remove the password parameter if you want the AP to be open. */
|
/* You can remove the password parameter if you want the AP to be open. */
|
||||||
|
|
||||||
// WiFi.mode(WIFI_AP_STA);
|
WiFi.mode(WIFI_AP_STA);
|
||||||
// WiFi.softAP(APssid, APpassword);
|
WiFi.softAP(APssid, APpassword);
|
||||||
WiFi.begin(ssid, password);
|
|
||||||
while (WiFi.status() != WL_CONNECTED)
|
Serial.print("Server AP ip: ");
|
||||||
{
|
Serial.println(WiFi.softAPIP());
|
||||||
Serial.print('.');
|
|
||||||
delay(1000);
|
|
||||||
}
|
|
||||||
// Serial.println(WiFi.localIP());
|
|
||||||
// Serial.println(WiFi.softAPIP());
|
|
||||||
Serial.print("AP IP address: ");
|
Serial.print("AP IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
|
||||||
web_server.on("/", handleRoot);
|
web_server.on("/", handleRoot);
|
||||||
web_server.on("/sethost", handleSetHost);
|
web_server.on("/sethost", handleSetHost);
|
||||||
web_server.begin();
|
web_server.begin();
|
||||||
Serial.println("HTTP server started");
|
Serial.println("HTTP server started");
|
||||||
|
|
||||||
|
|
||||||
|
while (is_discovering_tuya_ip)
|
||||||
|
{
|
||||||
|
Serial.println('Collecting ip');
|
||||||
|
String client_ip = return_first_client_ip();
|
||||||
|
if (client_ip != String("👎"))
|
||||||
|
{
|
||||||
|
is_discovering_tuya_ip = false;
|
||||||
|
HOST_ADDRESS = client_ip;
|
||||||
|
Serial.println("New host address: " + HOST_ADDRESS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Serial.println("Leaving setup");
|
||||||
|
|
||||||
|
try_to_connect_to_wifi_network_if_not_connected();
|
||||||
|
|
||||||
|
Serial.print("Server AP ip: ");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
|
||||||
|
Serial.print("Server external ip: ");
|
||||||
|
Serial.println(WiFi.softAPIP());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
|
||||||
|
void handle_button_click()
|
||||||
{
|
{
|
||||||
if(digitalRead(BUTTON) == LOW) {
|
if(digitalRead(BUTTON) == LOW) {
|
||||||
//digitalWrite(LED_BUILTIN, HIGH);
|
|
||||||
//int v = digitalRead(BUTTON);
|
|
||||||
//Serial.print("READ: ");
|
|
||||||
//Serial.println(v);
|
|
||||||
// Wait for the button to be released
|
|
||||||
//while(digitalRead(BUTTON) == LOW) {
|
|
||||||
// delay(100);
|
|
||||||
//}
|
|
||||||
//digitalWrite(LED_BUILTIN, LOW);
|
|
||||||
//Serial.println("BOO");
|
|
||||||
make_toggle_request();
|
make_toggle_request();
|
||||||
delay(500);
|
delay(500);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
handle_button_click();
|
||||||
web_server.handleClient();
|
web_server.handleClient();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user