https://www.youtube.com/watch?v=CN9ctgk62aw
/*********************************************************************
This is the code for Fetching your location from Google Geolocation API
*********************************************************************/
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>
#include "ESP8266WiFi.h"
char auth[] = "YourAuthToken";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Don'ttakemyssid";
char pass[] = "forgetaboutthepassword";
WidgetMap myMap(V1);
//Credentials for Google GeoLocation API...
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate?key=";
String key = "GooglegeolocationAPIKEY";
int status = WL_IDLE_STATUS;
String jsonString = "{\\n";
double latitude = 0.0;
double longitude = 0.0;
double accuracy = 0.0;
int more_text = 1; // set to 1 for more debug output
BlynkTimer timer;
void loopgeo() {
char bssid[6];
DynamicJsonBuffer jsonBuffer;
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
// now build the jsonString...
jsonString = "{\\n";
jsonString += "\\"homeMobileCountryCode\\": 234,\\n"; // this is a real UK MCC
jsonString += "\\"homeMobileNetworkCode\\": 27,\\n"; // and a real UK MNC
jsonString += "\\"radioType\\": \\"gsm\\",\\n"; // for gsm
jsonString += "\\"carrier\\": \\"Vodafone\\",\\n"; // associated with Vodafone
jsonString += "\\"wifiAccessPoints\\": [\\n";
for (int j = 0; j < n; ++j)
{
jsonString += "{\\n";
jsonString += "\\"macAddress\\" : \\"";
jsonString += (WiFi.BSSIDstr(j));
jsonString += "\\",\\n";
jsonString += "\\"signalStrength\\": ";
jsonString += WiFi.RSSI(j);
jsonString += "\\n";
if (j < n - 1)
{
jsonString += "},\\n";
}
else
{
jsonString += "}\\n";
}
}
jsonString += ("]\\n");
jsonString += ("}\\n");
//--------------------------------------------------------------------
WiFiClientSecure client;
//Connect to the client and make the api call
if (client.connect(Host, 443)) {
client.println("POST " + thisPage + key + " HTTP/1.1");
client.println("Host: " + (String)Host);
client.println("Connection: close");
client.println("Content-Type: application/json");
client.println("User-Agent: Arduino/1.0");
client.print("Content-Length: ");
client.println(jsonString.length());
client.println();
client.print(jsonString);
delay(500);
}
//Read and parse all the lines of the reply from server
while (client.available()) {
String line = client.readStringUntil('\\r');
if (more_text) {
}
JsonObject& root = jsonBuffer.parseObject(line);
if (root.success()) {
latitude = root["location"]["lat"];
longitude = root["location"]["lng"];
accuracy = root["accuracy"];
}
}
client.stop();
int index = 1;
float lat = latitude;
float lon = longitude;
Serial.println(lat);
Serial.println(lon);
myMap.location(index, lat, lon, accuracy);
}
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
loopgeo();
}