Of course:
/*
* Project BlinkPWB
* Description: Simple Particle Device WiFi Connection Test Program
* Author: JvD
* Date:25 06 2019
*/
String versionNumber = "0.57";
int LED = D7;
WiFiCredentials credentials;
WiFiAccessPoint ap[5];
byte mac[6];
byte bssid[6];
const char* ssid;
int rssi = WiFi.RSSI();
// Open a serial terminal and see the IP address printed out
void handler(const char *topic, const char *data) {
Serial.println("received " + String(topic) + ": " + String(data));
}
// setup() runs once, when the device is first turned on.
void setup() {
// Temporarily switch the mesh network off
//
#if Wiring_Mesh
Mesh.on();
#endif
// Put initialization like pinMode and begin functions here.
pinMode(LED, OUTPUT);
// some WiFi experiments
if (Particle.connected() == false) {
WiFi.off();
delay(100);
WiFi.on();
delay(100);
Particle.connect();
};
delay(100);
Particle.variable("VersionNumber",versionNumber);
Serial.begin(9600); // open serial over USB
// Make sure your Serial Terminal app is closed before powering your device
// Now open your Serial Terminal!
while(!Serial.isConnected()) Particle.process();
delay(250);
Serial.println("Serial port is now connected, checking credentials....");
int found = WiFi.getCredentials(ap, 5);
for (int i = 0; i < found; i++) {
Serial.print("ssid: ");
Serial.println(ap[i].ssid);
// security is one of WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA, WLAN_SEC_WPA2, WLAN_SEC_WPA_ENTERPRISE, WLAN_SEC_WPA2_ENTERPRISE
Serial.print("security: ");
Serial.println(ap[i].security);
// cipher is one of WLAN_CIPHER_AES, WLAN_CIPHER_TKIP or WLAN_CIPHER_AES_TKIP
Serial.print("cipher: ");
Serial.println(ap[i].cipher);
}
Serial.println("Clearing credentials....");
WiFi.clearCredentials();
Serial.println("Checking cleared credentials....");
// now see if the credentials have been cleared as excpected...
found = WiFi.getCredentials(ap, 5);
if (found==0) {
Serial.println("No credentials found....");
}
for (int i = 0; i < found; i++) {
Serial.print("ssid: ");
Serial.println(ap[i].ssid);
// security is one of WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA, WLAN_SEC_WPA2, WLAN_SEC_WPA_ENTERPRISE, WLAN_SEC_WPA2_ENTERPRISE
Serial.print("security: ");
Serial.println(ap[i].security);
// cipher is one of WLAN_CIPHER_AES, WLAN_CIPHER_TKIP or WLAN_CIPHER_AES_TKIP
Serial.print("cipher: ");
Serial.println(ap[i].cipher);
}
Serial.println("Setting new credentials....");
// Fast method:
//WiFi.setCredentials("Apple Network van Jack", “*******”, WPA2);
//WiFi.setCredentials("iPhone van Jack", “*******”, WPA2);
// More elaborate method
credentials.setSsid("Apple Network van Jack")
.setSecurity(WLAN_SEC_WPA2)
.setCipher(WLAN_CIPHER_AES)
.setPassword(“********”);
WiFi.setCredentials(credentials);
Serial.println("Checking credentials after setting on device....");
// now see what the newly set credentials look like...
found = WiFi.getCredentials(ap, 5);
for (int i = 0; i < found; i++) {
Serial.print("ssid: ");
Serial.println(ap[i].ssid);
// security is one of WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA, WLAN_SEC_WPA2, WLAN_SEC_WPA_ENTERPRISE, WLAN_SEC_WPA2_ENTERPRISE
Serial.print("security: ");
Serial.println(ap[i].security);
// cipher is one of WLAN_CIPHER_AES, WLAN_CIPHER_TKIP or WLAN_CIPHER_AES_TKIP
Serial.print("cipher: ");
Serial.println(ap[i].cipher);
}
Serial.println();
WiFi.macAddress(mac);
Serial.printf("MAC = ");
for (int i=0; i<6; i++) {
Serial.printf("%02x%s", mac[i], i != 5 ? ":" : "");
}
Serial.println();
WiFi.BSSID(bssid);
Serial.printlnf("BSSID = %02X:%02X:%02X:%02X:%02X:%02X", bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5]);
ssid = WiFi.SSID();
Serial.print("SSID = ");
Serial.println(ssid);
Serial.printlnf("RSSI = %d", (int8_t) WiFi.RSSI());
Serial.print("local IP = ");
Serial.println(WiFi.localIP());
Serial.print("subnet mask = ");
Serial.println(WiFi.subnetMask());
Serial.print("gateway IP = ");
Serial.println(WiFi.gatewayIP());
Particle.process();
//delay(5000);
Serial.print("dnsServer IP = ");
Serial.println(WiFi.dnsServerIP());
Serial.println();
Particle.subscribe("particle/device/ip", handler, MY_DEVICES);
Particle.publish("particle/device/ip", PRIVATE);
Particle.subscribe("particle/device/name", handler, MY_DEVICES);
Particle.publish("particle/device/name", PRIVATE);
}
// loop() runs over and over again, as quickly as it can execute.
void loop() {
// The core of your code will likely live here.
// some WiFi experiments
digitalWrite(LED, HIGH);
delay(5000);
digitalWrite(LED, LOW);
delay(5000);
WiFiSignal sig = WiFi.RSSI();
Particle.publish("WiFi StrengthValue: ", String(sig.getStrengthValue()), PUBLIC);
Particle.publish("WiFi QualityValue : ", String(sig.getQualityValue()), PUBLIC);
Serial.print("dnsServer IP = ");
Serial.println(WiFi.dnsServerIP());
}