It is already… use the non-blocking Blynk.config()
and your own WiFi setup.
It is not as seamless when using a ESP as shield, but that is due the nature of the shield use (as the ESP becomes a simple Serial to WiFi transceiver, then not directly programmable), not really a Blynk issue.
Many topics and examples already exist in this forum about how to use devices, with or without internet.
For example (again, primarily for ESP standalone, but try it with your arduino and see)…
I use similar connection with my Mega and ESP-01 as shield…
wifi.setDHCP(1, 1, 1); //Enable dhcp in station mode and save in flash of esp8266
Blynk.config(wifi, auth, server, port);
if (Blynk.connectWiFi(ssid, pass)) {
Blynk.connect();
}
void loop() {
timer.run();
if (Blynk.connected()) { // If connected run as normal
Blynk.run();
} else if (ReCnctFlag == 0) { // If NOT connected and not already trying to reconnect, set timer to try to reconnect in 60 seconds
ReCnctFlag = 1; // Set reconnection Flag
Serial.println("Starting reconnection timer in 30 seconds...");
timer.setTimeout(30000L, []() { // Lambda Reconnection Timer Function
ReCnctFlag = 0; // Reset reconnection Flag
wifi.setDHCP(1, 1, 1); //Enable dhcp in station mode and save in flash of esp8266
Blynk.config(wifi, auth, server, port);
Blynk.connect(); // Try to reconnect to the server
if (Blynk.connectWiFi(ssid, pass)) {
Blynk.connect();
}
}); // END Timer Function
}
}