#include <ESP8266WiFi.h>
bool connect_wifi = false;
const char *host = "192.168.1.17";
const int port = 8899;
WiFiClient client;
bool autoConfig()
{
WiFi.begin();
for (int i = 0; i < 20; i++)
{
int wstatus = WiFi.status();
if (wstatus == WL_CONNECTED)
{
Serial.println("AutoConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
WiFi.printDiag(Serial);
connect_wifi = true;
return true;
}
else
{
connect_wifi = false;
Serial.print("AutoConfig Waiting......");
Serial.println(wstatus);
delay(1000);
}
}
Serial.println("AutoConfig Faild!" );
return false;
}
void smartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
if (WiFi.smartConfigDone())
{
Serial.println("SmartConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
WiFi.setAutoConnect(true); // 设置自动连接
break;
}
delay(1000); // 这个地方一定要加延时,否则极易崩溃重启
}
}
void setup()
{
Serial.begin(115200);
Serial.println("");
if (!autoConfig())
{
Serial.println("Start module");
smartConfig();
}
}
void loop()
{
delay(1000);
if (connect_wifi)
{
while (!client.connected())
{
if (!client.connect(host, port))
{
Serial.println("wait connection.to server ......");
}
}
while (client.connected())//当处于链接状态 时
{
if (client.available())//如果缓冲区字符串大于0
{
String line = client.readStringUntil('\r\n');//获取字符串
Serial.println(line);//把字符串传给串口
client.print("got it \r\n");//向服务器反馈信息
}
}
}
}