@@ -26,6 +26,7 @@ struct Credential {
26
26
char ssid[32 ];
27
27
char password[32 ];
28
28
} cred;
29
+ const int maxWifiConnectAttemps = 20 ;
29
30
30
31
String buffer;
31
32
@@ -38,26 +39,34 @@ void setup() {
38
39
Serial.println (" !I #!/dev/fail" );
39
40
Serial.print (" !I token: " );
40
41
Serial.println (cred.token );
42
+ bool connected = false ;
41
43
if (strlen (cred.ssid ) > 0 ) {
42
- wifiConnect ();
44
+ connected = wifiConnect ();
45
+ }
46
+ if (!connected) {
47
+ Serial.println (" !E no wifi connection" );
43
48
}
44
49
}
45
50
46
51
bool wifiConnect () {
47
- Serial.print (" !I connecting to wifi" );
52
+ Serial.println (" !I connecting to wifi" );
53
+ Serial.print (" !I ssid: " );
54
+ Serial.println (cred.ssid );
55
+ Serial.print (" !I " );
48
56
WiFi.begin (cred.ssid , cred.password );
49
- for (int i = 0 ; i < 20 ; i++) {
57
+ for (int i = 0 ; i < maxWifiConnectAttemps ; i++) {
50
58
delay (500 );
51
59
Serial.print (" ." );
52
60
if (WiFi.status () == WL_CONNECTED) {
53
61
Serial.println (" " );
54
- Serial.print (" !I wifi connected: " );
55
- Serial.println (WiFi.localIP ());
62
+ Serial.println (" !I wifi connected" );
63
+ Serial.print (" !I ip: " );
64
+ Serial.println (WiFi.localIP ());
56
65
return true ;
57
66
}
58
67
}
59
68
Serial.println (" " );
60
- Serial.println (" !I wifi connection failed" );
69
+ Serial.println (" !E wifi connection failed" );
61
70
return false ;
62
71
}
63
72
@@ -68,6 +77,13 @@ String buildRequest(String data) {
68
77
" Connection: close\r\n " ;
69
78
}
70
79
80
+ String unquote (String s) {
81
+ if (s[0 ] == ' "' && s[s.length ()-1 ] == ' "' ) {
82
+ return s.substring (1 , s.length ()-1 );
83
+ }
84
+ return s;
85
+ }
86
+
71
87
void loop () {
72
88
String request;
73
89
@@ -96,13 +112,18 @@ void loop() {
96
112
} else if (data.startsWith (" AT+CWJAP=" )) {
97
113
String ssidPwd = data.substring (9 );
98
114
int i = ssidPwd.indexOf (" ," );
99
- ssidPwd.substring (0 , i).toCharArray (cred.ssid , sizeof (cred.token ));
100
- ssidPwd.substring (i+1 ).toCharArray (cred.password , sizeof (cred.password ));
115
+ unquote (ssidPwd.substring (0 , i)).toCharArray (cred.ssid , sizeof (cred.token ));
116
+ if (i != -1 ) {
117
+ unquote (ssidPwd.substring (i+1 )).toCharArray (cred.password , sizeof (cred.password ));
118
+ } else {
119
+ cred.password [0 ] = ' \0 ' ;
120
+ }
101
121
Serial.println (" !I ssid: " + String (cred.ssid ));
102
122
Serial.println (" !I password: " + String (cred.password ));
103
123
if (wifiConnect ()) {
104
124
EEPROM.put (0 , cred);
105
- EEPROM.commit ();
125
+ EEPROM.commit ();
126
+ Serial.println (" OK" );
106
127
}
107
128
} else {
108
129
Serial.println (" !E usage:" );
@@ -111,6 +132,7 @@ void loop() {
111
132
Serial.println (" !E payload" );
112
133
Serial.println (" !E TOKEN token" );
113
134
Serial.println (" !E AT+CWJAP=ssid,passwd" );
135
+ Serial.println (" !E AT+CWSAP=ssid" );
114
136
}
115
137
}
116
138
0 commit comments